피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Parallelism 확보와 Order 보장을 위한 Kafka Partitioning 설계 전략
Kafka Partitioning Strategies: How to Get It Right Before It Costs You
AI 요약
Context
초기 설계 시 Partition 수와 Key 선정에 대한 검토 부족으로 인한 Production 장애 빈번. 데이터 처리량 증가에 따라 Consumer 병렬 처리 한계 및 Hot Partition으로 인한 처리 지연 발생.
Technical Solution
- Parallelism 확보를 위해 초기 Partition 수를 예상 Consumer 수의 2~3배로 설정하는 확장성 설계
- Event 순서 보장이 필수적인 도메인(주문, 트랜잭션 등)에 Murmur2 기반 Key-based Partitioning 적용
- High Cardinality Key(user_id, order_id) 선정을 통한 데이터 skew 방지 및 부하 분산 최적화
- 순서 보장이 불필요한 데이터(로그, 메트릭)에 Round-robin 방식을 적용하여 처리량 극대화
- Kafka 2.4 버전 이후 도입된 Sticky Partitioning을 통한 Batch 효율성 및 Broker 네트워크 부하 감소
- 특수 목적(지리적 라우팅, 컴플라이언스) 해결을 위한 Custom Partitioner의 제한적 활용
실천 포인트
1. Topic 생성 전 데이터의 순서 보장 필요 여부 정의
2. Key 후보군의 Cardinality를 분석하여 Hot Partition 발생 가능성 검토
3. 1년 뒤 트래픽 성장치를 반영한 Partition 수 산정 및 기록
4. Keyless Topic의 단기적 불균형을 Sticky Partitioning 특성으로 인지하고 모니터링