피드로 돌아가기
Kafka is not a queue — and treating it like one will wreck your system
Dev.toDev.to
Infrastructure

Queue 오해로 인한 데이터 유실 방지를 위한 Log-based 모델 전환

Kafka is not a queue — and treating it like one will wreck your system

turboline-ai2026년 6월 29일5intermediate

Context

RabbitMQ나 SQS 같은 전통적인 Message Queue의 전달 보장 모델을 Kafka에 그대로 적용하여 발생하는 설계 결함 분석. Broker가 메시지 삭제를 관리하는 Queue 방식과 달리, Consumer가 Offset을 관리하는 Distributed Log 구조의 근본적 차이로 인한 데이터 유실 및 Silent Lag 문제 발생.

Technical Solution

  • Broker 중심의 Delivery 모델을 Consumer 중심의 Offset 관리 모델로 전환하여 소비 위치 제어
  • Retention Window를 기반으로 한 데이터 생존 주기 설정 및 소비 속도 최적화를 통한 유실 방지
  • max.poll.interval.ms 설정을 통한 Consumer 상태 관리 및 불필요한 Rebalance 억제
  • Auto-commit 대신 처리 완료 후 명시적 Offset Commit을 적용한 메시지 처리 보장
  • Log 기반의 특성을 활용한 Offset Reset 및 Replay 메커니즘 구축으로 데이터 복구 능력 확보
  • Consumer Lag 모니터링 체계 구축을 통한 처리 지연의 가시화 및 선제적 대응

- 현재 Consumer Group의 LAG 수치가 지속적으로 증가하는지 모니터링하고 있는가 - Auto-commit 설정으로 인해 처리 실패 메시지가 consumed로 마킹되는 리스크가 없는가 - 최악의 트래픽 상황에서 가장 느린 Consumer가 Retention Window 내에 데이터를 처리할 수 있는가 - 비즈니스 요구사항에 따라 메시지 Replay가 가능하도록 Offset 관리 전략을 수립했는가

원문 읽기