본문으로 이동
문서

분산 시스템 환경에서 Kafka Consumer 오프셋 이동하기

이보람 컬리 · 컬리 기술 블로그

원문 보기

AI 핵심 요약

메시지 처리가 누락됐을 때 기존 Kafka CLI 방식은 권한 있는 담당자에게 의존하고 컨슈머 그룹을 중단해야 해, 가용성과 처리 지연에 부담을 줬다. Kafka Admin API도 그룹이 비어 있어야 하므로 무중단 요구를 충족하지 못했고, Spring Kafka의 `AbstractConsumerSeekAware`와 `ConsumerSeekCallback`을 사용해 실행 중인 컨슈머의 파티션 오프셋을 이동하는 방식을 선택했다. 여러 호스트에 요청을 적용하기 위해 HTTP API로 토픽·파티션·기준 시각을 받고 Redis Pub/Sub으로 각 서버에 전파해, 각 컨슈머가 자체적으로 seek를 수행하도록 구성했다. 이 방식으로 컨슈머 그룹을 중단하지 않고 분산 환경에서 메시지를 재처리할 수 있었으며, 기술 선택 전 요구 사항과 각 API의 제약을 확인하고 내부 동작을 이해하는 것이 중요하다는 점을 얻었다.

  • Kafka CLI와 Admin API의 오프셋 재설정은 컨슈머 그룹이 비어 있어야 하므로, 무중단 변경 요구에 적합하지 않다.
  • Spring Kafka의 `ConsumerSeekAware`와 `ConsumerSeekCallback`을 이용하면 컨슈머를 멈추지 않고 파티션별 오프셋을 이동할 수 있다.
  • 분산 환경에서는 HTTP API로 요청을 받고 Redis Pub/Sub으로 각 서버에 전파해, 각 호스트의 컨슈머가 로컬 콜백을 실행하도록 구성할 수 있다.
  • 오프셋 이동 요청에 토픽, 파티션, 기준 시각을 포함하면 재처리 범위를 상황에 맞게 지정할 수 있다.
  • Spring Kafka 콜백 조회 API는 버전에 따라 동작과 제약이 다르므로, 여러 컨슈머 그룹이 같은 토픽을 구독하는 경우 버전별 문서를 확인해야 한다.

소개

Spring Kafka 활용한 오프셋 이동 및 메시지 재처리 방법

비슷한 학습 자료

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

네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY 2025 에서 발표되었던 세션을 공개합니다. [발표 내용] Consumer Group Protocol v2를 소개합니다. [발표 대상] 조직에서 Kafka를 사용하거나 관심 있는 분들 Consumer Group Protocol 에 대해 관심 있는 분들 [목차] - Consumer Group Protocol (v1) 특징과 문제점 - Consumer Group Protocol (v2) 특징 - 장점 - 성능 - 사용법 - 설정 - 툴 - 마이그레이션

백엔드 네트워크

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

네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY 2025 에서 발표되었던 세션을 공개합니다. [발표 내용] Consumer Group Protocol v2를 소개합니다. [발표 대상] 조직에서 Kafka를 사용하거나 관심 있는 분들 Consumer Group Protocol 에 대해 관심 있는 분들 [목차] - Consumer Group Protocol (v1) 특징과 문제점 - Consumer Group Protocol (v2) 특징 - 장점 - 성능 - 사용법 - 설정 - 툴 - 마이그레이션

백엔드 네트워크

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

네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY에서 발표되었던 세션을 공개합니다. 1,2편의 경우 아쉽게도 사내용만 발표되어 3,4편 만 외부공개가 진행되는 점 양해 부탁드립니다. [발표 내용] Kafka 프로듀서 최적화하기 + 압축 기능 활용하기 [목차] 1. 배경: Kafka 자료 구조 - Kafka 자료 구조는 어떻게 생겼는가? 2. 프로듀서 동작 방식 및 최적화 방법 - 프로듀서와 브로커는 어떻게 메시지를 주고받는가? - linger.ms, batch.size, buffer.memory 사용법 3. 압축 동작 방식 및 최적화 방법 - (재)압축은 어떻게 이루어지는가? - compression.type, compression.{type}.level 사용법

백엔드 네트워크 로드맵 1개에 담김

컨퍼런스 우아콘 2025

[세션 설명] 배달의민족 앱 내의 이벤트 전송 플랫폼인 LaaS(Logistics as a Service)에서 Kafka 처리량 한계를 겪으면서 파티션을 늘리지 않고도 처리량을 확장할 수 있는 방안을 고민한 경험을 공유합니다. 이 과정에서 Parallel Consumer 라이브러리를 도입하게 된 배경과 적용 과정, 운영 중 마주쳤던 이슈 및 해결 방안, 그리고 실제 운영 성과를 중심으로 소개합니다. [발표자 소개] 남민정(서버 개발자)

백엔드 로드맵 1개에 담김

문서 김용우

토스증권의 Realtime Data Team은 Active-Active 구성에서 Consumer Offset Sync를 어떻게 하고 있을까요?

백엔드 데이터베이스

문서 강병수

토스증권은 데이터센터 장애 상황에도 유저에게 정상적으로 서비스를 제공하기 위해 대부분의 시스템을 이중화했습니다. Kafka 이중화 구성에 대한 개요를 소개드려요.

백엔드 데이터베이스