음악 스트리밍 파이프라인 만들기 - 04. Kafka 컨슈머 멱등성, 중복은 버그가 아니라 전제다
문제 재생 이벤트(초당 수백 건)를 소비해 곡별 재생수를 집계한다. 재생수는 카운터다 —
두 번 더하면 그냥 틀리고, 틀렸다는 사실조차 알기 어렵다. 그리고 Kafka 는 at-least-once 다. 리밸런싱, 오프셋 커밋 전 종료, 운영자의 오프셋 리셋,
초과 — 컨슈머는 정상 동작 중에도 같은 메시지를 다시 받는다.
중복 소비는 장애가 아니라 전제 조건이다. 흔한 오해부터 ” 켰으니 안전하다”는 말이 자주 나온다. 아니다. 설정 막는 것 못 막는 것 프로듀서 멱등성 프로듀서 재시도로 인한 브로커 측 중복 저장 컨슈머 재소비 Kafka 트랜잭션(EOS) Kafka→Kafka 경로의 중복 외부 DB 쓰기 컨슈머가 DB 에 쓰는 순간, Kafka 가 주는 보장은 끝난다. 멱등성은 우리 몫이다. 대안 비교와 선택 대안 판단 A. eventId UNIQUE + 신규분만 집계 ✅ 채택 B. 오프셋을 DB 에 저장, 집계와 한 트랜잭션 이론상 가장 정확하지만 기각 C. Kafka EOS…