주문 이벤트 플랫폼에서 Kafka lag이 주문 취소로 이어질 수 있는 처리량 문제에서 출발한다. consumer 증설은 partition 수에 막히고 partition 증설은 rebalance·offset 유실·DLT 불일치 위험을 만든다는 딜레마를 짚고, 한 partition 안에서도 병렬 처리하는 Confluent Parallel Consumer 도입기로 이어진다.
핵심 포인트- 서버 증설은 병렬성이 partition 수를 넘지 못하고 운영 중 partition 증설은 rebalance 지연·latest offset 유실·DLT partition 불일치 위험을 동반한다는 기존 해법의 한계를 분석
- Parallel Consumer는 poll한 record를 key별 shard로 나눠 worker thread에 배정해 서로 다른 key는 병렬, 같은 key는 순서를 유지하고, key·partition·unordered 중 순서 기준을 선택
- offset map이 완료·미완료 record를 따로 기록하고 연속 처리된 최고 offset만 commit해 재시작 시 재처리 대상을 구분 — canary 배포 lifecycle, 무한 retry·미내장 DLT 직접 구현, rollback 시 중복 처리 가이드까지 SDK로 통합
- 47만 건 등 세 조건 검증에서 큰 workload는 처리 시간 52.9% 감소, 평균 66.36% 비용 절감. 단 committed offset과 내부 완료 상태가 달라 자체 metric이 필요하고, I/O 대기가 크고 partition 확대가 어려운 서비스에 선택 적용
왜 읽나Kafka 처리량이 partition 수에 묶여 고민하는 백엔드 개발자에게 partition 증설 없이 병렬성을 끌어올리는 Parallel Consumer의 내부 구조·운영 함정·적용 조건을 담은 실전 레퍼런스.