Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🔥 연관 이슈
🚀 작업 내용
Redis를 활용한 검색어 저장 구조에 대한 고민
검색어 데이터를 Redis에 저장하는 구조로 전환을 검토했으나, 현재 메모리 사용량과 인프라 환경을 고려했을 때, 모든 검색어를 Redis에 저장하는 방식은 적합하지 않다고 판단했습니다. 이에 우 검색어 저장 로직을 EventListener를 활용한 구조로 변경하여 모듈 간 결합도를 낮추는 방향으로 개선했습니다.
💬 리뷰 중점사항
주요 고민 사항
메모리 부담:
현재 1주일 동안의 인기 키워드를 기준으로 TTL을 7일로 설정할 경우, 사용자 5000명이 일주일 동안 각 3개의 검색어만 입력하더라도 약 75,000개의 데이터가 Redis에 저장됩니다. 이는 2GB 메모리로 운영 중인 코인 인프라에서 과도한 부담이 되지 않을까 하는 생각이 들었습니다.
안정성 및 보안:
Redis에 검색어 데이터를 저장하는 구조는 많은 단어를 의도적으로 검색하는 공격에 취약할 수 있습니다. 이러한 상황에서는 Redis 메모리가 가득 차면서 서비스가 중단되지 않을까 하는 생각이 들었습니다.