은로그

[Redis] 실시간 검색 성능 최적화를 위한 Redis 정리
서론실시간 검색, 속도가 전부다 현대의 웹 서비스에서 검색 성능은 사용자 경험(User Experience, UX)을 결정짓는 핵심 요소 중 하나다. 특히 실시간 검색어와 같은 기능을 제공하는 서비스에서는 검색 요청이 몰리는 특정 시간대에도 빠르고 안정적인 응답 속도를 유지하는 것이 매우 중요하다. 하지만 Elasticsearch만을 이용한 검색 시스템은 데이터가 많아질수록 검색 속도가 느려지고, 특정 시간대에는 서버 부하가 급증하는 문제가 발생할 수 있다. 이를 해결하기 위해 흔히 사용되는 전략이 바로 "캐싱(Cache)"이다. 이 글에서는 Elasticsearch 기반의 실시간 검색 시스템을 구축하는 과정에서 캐싱을 선택했고,Redis를 어떻게 사용해야하는지 정리해보려고 한다. 1. Redis의 탄생..

[협업프로젝트] Spring Data Elastic Search 설정 및 구현 회고 (2)
서론 기존 프로젝트에서 검색 엔진을 ELK 스택(Elasticsearch, Logstash, Kibana )으로 전환하고프로젝트의 요구사항 중 하나였던 실시간 검색어 기능 구현을 완료하면서,이전에 작성했던 글에서 다룬 초기 설계 및 설정 과정을 기반으로 아키텍처가 어떻게 개선되었는지 정리하고자 한다. 초기 설계 단계에서 검색 기록 관리와 실시간 인기 검색어 제공을 목표로 설정했고,이에 따라 기존 MySQL 기반의 스택은검색 시스템을 ELK(Elasticsearch, Logstash, Kibana) 스택으로 전환하며 얻을 수 있는 성능 향상 및 확장성을 확인했다.이번 구현에서는 Spring Boot와 Nginx, Docker, 그리고 Filebeat 및 Logstash를 연동하여실시간 검색어를 10위까지 ..

[회고] 2024 Backend 개발자 회고
개발자 회고2024년도는 목표를 구체적으로 세우지 않고 흘러가는 대로 시간을 보냈던 것 같다. 어떻게 지냈는지 뒤돌아보니 아쉬움과 미련이 남는 한 해가 된 거 같아,2025년도에는 목표를 설정하고 그에 맞춰 행동하도록 노력해야할 것 같다. 이번 글에서는 지난 시간을 돌아보고 느낀 점들과 앞으로의 목표를 정리해보려고 한다. 이번 년도는 어떻게 지냈을까?첫 개발자 취직2024년의 첫 이슈는 SI/SM 회사에 신입으로 입사하면서 개발자로서의 첫 취직이 이루어졌다는 것이다. 초반에는 업무 환경과 새로운 문화에 적응하는 것이 가장 큰 도전이었고, 그 과정에서 인프라, 코드리뷰, 협업 도구 사용, 기능 개선 그리고 예상치 못한 버그 등을 직면하며 배운 것이 많은 해가 된 것 같다. 어려움도 많았지만, 그만큼 성장의..

[토이프로젝트] TS로 깃허브 README에 블로그 포스팅 자동 반영하기
토이프로젝트 선정 GitHub를 경험한 개발자들은 Readme에 자신을 표현하고 홍보하기 위해 글이나 이메일, 블로그 등을 작성한 경험이 있을 것이다. 과거 내 소개글에는 기술 스택과 개인 블로그, 배지 등 글자로 꾸미는 방법으로 소개글을 작성했었는데, 이렇게 추가하는 방식은 잘 보이지도 않고 url을 방문하도록 유도하는 데도 효과적이지 않다. 그래서 깃허브 프로필을 어떻게 효과적으로 꾸밀지 고민하던 중, 소개글에 최신 블로그에 대한 대표이미지, 제목, 설명, 날짜 등으로 시각화하는 것을 목표로 잡았고 특정 시간에 새 글이 올라왔을 때 자동으로 갱신해주는 프로젝트가 있으면 좋을 것이라고 생각했다. 그래서 요즘 개인적으로 다루고 있는 TS 스택을 활용하여 매일 특정 시간에 GitHub Actions가..

[협업프로젝트] Spring Data Elastic Search 설정 및 구현 회고 (1)
서론협업 프로젝트를 진행하면서 검색 기능을 구현하는 단계에 들어섰다. 내가 초기 설계 단계에서 설정했던 대로 사용자의 편의성을 높이기 위해 검색 기능과 사용자별 검색 기록을 볼 수 있는 기능을 제공하기로 했으며, 초기 Figma UI를 구현하여 검색 관련 API를 설계 및 구현했다.초기에는 DB의 LIKE 기능을 이용해 '%키워드%'로 검색하고 사용자별 검색 기록을 저장해 관리하는 방식으로 충분하다고 생각했다. 하지만 추가 요구사항으로 실시간 검색어 및 일일 가장 인기 있는 장소 순위(검색어) 구현이 언급되면서 상황이 달라졌다. 추가 요구사항을 고려해보니, 처음에 계획했던 MySQL의 LIKE 기능을 이용한 '%키워드%' 검색 방식으로는 한계가 있었다. LIKE는 전체 데이터를 시간대별로 조회하는 풀 ..