Kafka는 강력하지만 흔한 함정이 있습니다 — partitioning, 순서, consumer 동작, 전달 의미론, 운영에 대한 오해와 실수. 이를 이해하면 문제를 피하고 Kafka를 올바르게 사용하는 데 도움이 됩니다.
설계와 partitioning 함정
✗ 너무 적은 partition → consumer 병렬성 제한(partition 수 넘어 소비 확장 불가);
너무 많음 → 오버헤드, rebalancing 고통 → partition 수를 신중히 계획
✗ 잘못된 PARTITION KEY → 고르지 않은 분배(hot partition) 또는 잘못된 순서 범위 →
고른 분배와 필요한 순서를 위한 key 선택
✗ 전역 순서 기대 → Kafka는 partition 내에서만 순서(흔한 오해)
✗ partition 추가는 key→partition 매핑을 바꿈 → key의 순서를 깨뜨림(주의)
Consumer와 처리 함정
✗ CONSUMER LAG 무시 → consumer가 모르게 뒤처짐 → 증가하는 지연
✗ 중복 미처리 → at-least-once는 중복을 의미 → 멱등 처리 필요
(매우 흔한 실수 — 멱등성 없이 exactly-once를 가정)
✗ 느린 처리가 consumer 블로킹 → lag/rebalance 유발; 긴 처리 → rebalance 문제
✗ 잦은 REBALANCE → 느린 처리/타임아웃에서 → 소비 중단(튜닝, 최적화)
✗ 부적절한 offset commit → 재처리 또는 메시지 유실
