본문 바로가기

Kafka2

Redis Hot Key라고 보기엔 부족하다 - ZINCRBY 반복 호출 구조에서 본 진짜 문제 들어가며이번에 Kafka Batch Consumer에서 상품 랭킹 점수를 Redis Sorted Set에 반영하는 구조를 보면서, 단순히 “이벤트를 잘 소비하고 있다”에서 끝나는 게 아니라 Redis에 어떤 방식으로 write가 들어가고 있는지까지 같이 봐야겠다는 생각이 들었다.처음에는 Batch Listener를 쓰고 있으니 어느 정도는 효율적인 구조라고 생각했는데, 코드를 자세히 보니 Kafka에서는 배치로 가져오더라도 실제로는 이벤트마다 Redis에 ZINCRBY를 호출하는 구조였다.이 구조를 보면서 내가 정리하게 된 핵심은 아래였다.Batch Consumer와 실제 Batch Processing은 다를 수 있다.Hot Key는 “키 개수”보다 “요청 집중도”로 봐야 한다.현재 구조는 ranking.. 2026. 4. 10.
[Java / Spring Boot] 브랜드에서 전화가 왔다, "우리 상품 좋아요가 한번에 수십개씩 빠져요!" - 5편 좋아요 카운트 로직을 짜다가 문제를 발견했다."약간의 오차는 괜찮다"고 판단하고 비동기로 처리했는데, 코드를 들여다보니 수십 개씩 틀어질 수 있는 구조였다.실제로 운영 중에 이런 상황이 생기면 어떻게 될까? 가상의 브랜드 담당자에게 "좋아요 수가 갑자기 수십 개씩 줄었다가 돌아와요"라는 연락을 받는다고 상상해보자. 처음엔 식은땀이 날 것 같다. "약간의 오차는 괜찮다"고 했는데, "약간의 오차"와 "수십 개씩 튀는 것"은 달랐다.원인을 찾아보자.정규화 vs 비정규화좋아요 수를 보여주는 가장 자연스러운 방법은 이거다.SELECT COUNT(*) FROM likes WHERE product_id = 1이게 정규화 방식이다. 데이터를 중복 없이 한 곳에만 저장하고, 필요할 때 계산한다.정규화:장점 → 데이터 .. 2026. 3. 6.
반응형