
컬리 검색이 카프카를 들여다본 이야기 2
두줄요약
Kafka Streams로 서로 다른 토픽의 동일 키 메시지를 병합해 검색 인덱싱 파이프라인을 단순화했습니다. Spring Kafka와 헬스체크로 스트림즈 상태를 관리·모니터링했습니다.
문제 상황
- 서로 다른 Kafka 토픽의 동일 키 메시지 조합 후 검색 인덱싱용 메시지 발행 요구
- 초기 Redis 중간 저장소 기반 병합 구조의 복잡성
해결 방법
- Kafka Streams의 KTable·KStream 조인으로 동일 키 메시지 병합 및 병합 토픽 발행
- Spring Kafka의
@EnableKafkaStreams와StreamsBuilder주입으로 스트림즈 생명주기 관리 위임
원인 분석
- 규격에 맞지 않는 메시지 처리 오류로 모든 스트림 스레드 종료 및 클라이언트 Error 상태 전환
- 스트림 처리 중단에도 Spring 애플리케이션 상태는 정상으로 표시되는 가시성 문제
성능/운영 포인트
HealthIndicator에서 Kafka Streams 상태를 조회해 Created·Running·Re-Balancing만 정상 처리- Error·Not Running·Pending Shutdown 상태 감지와 재시작 대응 환경 구성

