컬리 검색이 카프카를 들여다본 이야기 2
서민우 컬리 · 컬리 기술 블로그
AI 핵심 요약
검색 인덱싱에 필요한 두 토픽의 데이터를 합치기 위해 Redis를 중간 저장소로 쓰던 구조를 더 단순하게 만들고자 Kafka Streams를 도입했다. KStream과 KTable을 같은 키로 조인해 병합 메시지를 발행하고, Spring Kafka의 @EnableKafkaStreams와 StreamsBuilder 주입을 적용해 클라이언트 생명주기를 스프링이 관리하도록 바꿨다. 테스트 환경의 규격에 맞지 않는 메시지로 스트림 스레드가 모두 종료됐지만 애플리케이션 상태는 정상으로 남는 문제를 발견해, HealthIndicator로 Kafka Streams 상태를 확인하는 헬스체크를 추가했다. 스트림 처리 로직뿐 아니라 장애 상태를 운영 환경에서 감지할 수 있도록 구성하는 것이 중요하다는 점을 확인했다.
- Kafka Streams의 KStream과 KTable 조인은 같은 키를 기준으로 여러 토픽의 데이터를 결합하는 데 활용할 수 있다.
- Spring Kafka의 @EnableKafkaStreams와 StreamsBuilder 주입을 사용하면 스트림 클라이언트의 생성과 생명주기 관리를 스프링에 맡길 수 있다.
- 메시지 규격 오류로 스트림 스레드가 모두 종료돼도 애플리케이션 자체는 정상으로 보일 수 있으므로 별도 상태 점검이 필요하다.
- HealthIndicator에서 KafkaStreams 상태를 확인해 오류나 종료 상태를 헬스체크 결과에 반영할 수 있다.
소개
카프카 스트림즈를 추가하다
비슷한 학습 자료
컨퍼런스 if kakao
카프카, 대규모 클러스터 운영 후기 / if(kakao)2022
컨퍼런스 if kakao
카프카는 데이터 흐름을 모아주는 실시간 분산 스트리밍 플랫폼으로 이제는 대다수 기업이 필수적으로 활용하는 오픈소스가 되었습니다. 카카오 전반적인 업무서비스에서 이용하는 카프카 공용 대규모 클러스터를 운영하면서 고려하고 진행했던 것에 대해 공유하고자 합니다. #Kafka #Infrastructure 카카오에서 시스템엔지니어링 업무를 담당하고 있으며, 전사 Kafka 클러스터를 관리하고 있는 데이비스입니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-66 if(kakao)2022에 대한 자세한 정보는 👉 https://if.kakao.com if(kakao)2022에 대한 문의는 👉 if@kakaocorp.com #카카오 #이프카카오 #개발자컨퍼런스 #기술 #개발 #ifkakao2022
백엔드 데브옵스 · 인프라
컨퍼런스 엔지니어링데이 2025
서비스 조직에서 Kafka를 사용할 때 알아 두어야 할 것들 (3)
컨퍼런스 엔지니어링데이 2025
네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY에서 발표되었던 세션을 공개합니다. 1,2편의 경우 아쉽게도 사내용만 발표되어 3,4편 만 외부공개가 진행되는 점 양해 부탁드립니다. [발표 내용] Kafka Client는 어떻게 클러스터의 전체 상태를 알 수 있는가? 서비스를 개발하는 입장에서 관련 옵션을 어떻게 잡아 주면 좋은가? 에 대해 설명합니다. [목차] * Kafka metadata란 무엇인가? * 동작 매커니즘 - 브로커 - 클라이언트 간 metadata 교환 - 브로커 간 metadata 교환 * 결론 - ... 그리고 하나 더
백엔드 네트워크
문서 서민우
컬리 검색이 카프카를 들여다본 이야기 1
문서 허재진
컬리의 BigQuery 도입기 - 2부
문서 허재진