
컬리 검색이 카프카를 들여다본 이야기 1
두줄요약
검색 인덱싱 파이프라인의 메시지 적체와 반복 리밸런싱 원인을 Kafka 소비 설정에서 점검했습니다. Batch Listener와 배치 색인으로 처리 스루풋을 높이고 리밸런싱을 방지했습니다.
문제 상황
- 복수 토픽의 상품 정보를 Redis에서 조합해 검색 엔진에 색인하는 구조
- 일괄 메시지 발행 시 소비 속도 부족으로 토픽 적체와 색인 반영 지연
- 컨슈머 그룹의 반복적인 리밸런싱으로 처리 지연 심화
원인 분석
- 기본
max.poll.records500건을max.poll.interval.ms5분 이내 처리하지 못하는 상황 - Record Listener 기반의 건별 메시지 처리와 건별 색인 요청에 따른 낮은 스루풋
- Redis CPU 사용률 등 과부하 징후 부재로 Kafka 소비 구간 집중 점검
해결 방법
max-poll-records: 1설정으로 단기적으로 리밸런싱 방지- Spring Kafka 리스너를 Record Listener에서 Batch Listener로 전환
- poll 결과 레코드를 묶어 검색 엔진의 배치 색인 요청으로 처리
성능/운영 포인트
- 배치 소비·배치 색인으로 메시지 소비와 색인 처리 시간 단축
- 기존 레코드 수·시간 간격에서도 리밸런싱 없이 색인 구축
- 설정 조정과 리스너 처리 단위 변경을 통한 불필요한 시스템 동작 억제

