본문으로 이동
문서

컬리 검색이 카프카를 들여다본 이야기 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

카프카는 데이터 흐름을 모아주는 실시간 분산 스트리밍 플랫폼으로 이제는 대다수 기업이 필수적으로 활용하는 오픈소스가 되었습니다. 카카오 전반적인 업무서비스에서 이용하는 카프카 공용 대규모 클러스터를 운영하면서 고려하고 진행했던 것에 대해 공유하고자 합니다. #Kafka #Infrastructure 카카오에서 시스템엔지니어링 업무를 담당하고 있으며, 전사 Kafka 클러스터를 관리하고 있는 데이비스입니다. 발표자료 보기 👉https://speakerdeck.com/kakao/ifkakao22-66 if(kakao)2022에 대한 자세한 정보는 👉 https://if.kakao.com if(kakao)2022에 대한 문의는 👉 if@kakaocorp.com #카카오 #이프카카오 #개발자컨퍼런스 #기술 #개발 #ifkakao2022

백엔드 데브옵스 · 인프라

컨퍼런스 엔지니어링데이 2025

네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY에서 발표되었던 세션을 공개합니다. 1,2편의 경우 아쉽게도 사내용만 발표되어 3,4편 만 외부공개가 진행되는 점 양해 부탁드립니다. [발표 내용] Kafka Client는 어떻게 클러스터의 전체 상태를 알 수 있는가? 서비스를 개발하는 입장에서 관련 옵션을 어떻게 잡아 주면 좋은가? 에 대해 설명합니다. [목차] * Kafka metadata란 무엇인가? * 동작 매커니즘 - 브로커 - 클라이언트 간 metadata 교환 - 브로커 간 metadata 교환 * 결론 - ... 그리고 하나 더

백엔드 네트워크

문서 이창섭

아웃박스 패턴과 재시도 토픽으로 외부 채널 입고 정보를 안전하게 동기화하기

백엔드

문서 서민우

카프카 설정 튜닝만으로 색인 속도를 개선하다

백엔드 데이터베이스

문서 허재진

컬리 데이터 파이프라인의 BigQuery 도입 결과 및 효과

데이터베이스 데브옵스 · 인프라

문서 허재진

컬리 데이터 파이프라인의 BigQuery 도입 배경과 그 주안점

데이터베이스 데브옵스 · 인프라