AI Briefing

컬리, Kafka Batch Listener 도입으로 검색 인덱싱 리밸런싱 해결 및 스루풋 향상

·2022.08.08 09:00

핵심 내용

컬리가 Kafka Batch Listener 적용으로 리밸런싱을 방지하고 검색 인덱싱 처리 속도를 크게 높였다.

자세히 보기

컬리 검색 서비스는 상품 정보와 부가 정보를 조합해 색인을 생성하는 과정에서 Kafka 컨슈머의 처리 지연으로 인한 리밸런싱과 메시지 적체 문제를 겪었다. 초기에는 Redis를 활용해 데이터를 조합했으나, 컨슈머가 500건의 레코드를 5분 내에 처리하지 못해 그룹 재편성이 발생했고 이로 인해 정상적인 검색 서비스가 불가했다.

해결을 위해 먼저 max-poll-records를 1로 설정해 리밸런싱을 일시적으로 제어했으나, 근본적인 성능 향상을 위해 Batch Listener로 전환했다. spring.kafka.listener.type: batch 설정을 통해 컨슈머가 폴링한 레코드 리스트를 한 번에 처리하도록 변경했으며, 이는 BatchMessagingMessageListenerAdapter를 통해 구현되었다.

이러한 변경으로 검색엔진의 Batch 색인 요청 기능을 활용할 수 있게 되었다. 건건이 요청하던 방식에서 여러 건을 모아 한 번에 요청하는 방식으로 전환하면서 메시지 소비 및 색인 처리 속도가 비약적으로 증가했다. 결과적으로 더 적은 시간 내에 동일한 양의 메시지를 처리하게 되어, 기존 설정에서도 리밸런싱이 발생하지 않는 안정성을 확보했다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.