목록 보기
컬리 검색이 카프카를 들여다본 이야기 2
백엔드

컬리 검색이 카프카를 들여다본 이야기 2

마켓컬리
마켓컬리
2022년 8월 24일

두줄요약

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 상태 감지와 재시작 대응 환경 구성

다음 읽기

#Kafka 주제를 이어서 읽기

컬리 검색이 카프카를 들여다본 이야기 2

카프카 스트림즈로 서로 다른 토픽의 메시지를 병합해 검색 인덱싱 파이프라인을 구성한 사례를 다뤘습니다. 또한 스프링과 연동해 생명주기 관리와 헬스체크 가시성을 확보했습니다.

마켓컬리
마켓컬리
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...