
백엔드
컬리 검색이 카프카를 들여다본 이야기 2
두줄요약
카프카 스트림즈로 서로 다른 토픽의 메시지를 병합해 검색 인덱싱 파이프라인을 구성한 사례를 다뤘습니다. 또한 스프링과 연동해 생명주기 관리와 헬스체크 가시성을 확보했습니다.
문제 상황
- 검색 시스템 개편으로 서로 다른 두 토픽의 메시지를 같은 키 기준으로 조합해 인덱싱해야 하는 요구 발생
- 기존에는 레디스를 중간 저장소로 두고 수신·정제·병합·색인하는 우회 구조를 사용
- 스프링 애플리케이션에서는 스트림즈 스레드 장애가 나도 앱 상태가 정상으로 보여 가시성 부족
해결 방법
- 카프카 스트림즈 DSL로 토픽 간 조인과 병합을 자바 코드만으로 구성
- 스트림즈를 스프링 애플리케이션에 통합해
StreamsBuilder를 주입받고 생명주기를 스프링에 위임 HealthIndicator로 스트림즈 상태를 주기적으로 확인해 오류 상태를 빠르게 감지
