partitioning 전략(이벤트가 topic의 partition들에 분배되는 방식)을 선택하는 것은 순서, 병렬성, 부하 분산에 영향을 미치는 중요한 Kafka 설계 결정입니다. partition key와 수를 신중히 선택해야 합니다.
partitioning 작동 방식
producer의 메시지는 다음에 따라 partition으로 감:
→ KEY 있음 → hash(key) → partition 결정(같은 key → 일관되게 같은 partition)
→ key 없음 → partition들에 분산(라운드 로빈 / sticky)
→ KEY 선택이 순서와 분배를 결정
partition key 선택
KEY는 두 가지 핵심을 결정:
✓ ORDERING → 같은 key의 모든 이벤트가 같은 partition으로 → 함께 순서 유지
(예: key=userId → 한 사용자의 모든 이벤트가 순서 유지)
✓ DISTRIBUTION → key가 partition들에 고르게 퍼져야(좋은 cardinality) → 균형 부하
함정:
✗ 낮은 cardinality / 치우친 key → HOT partition(한 partition 과부하) → 병목
✗ 잘못된 순서 범위 → X별 순서가 필요하면 X로 key(하지만 X 내 병렬성 제한)
→ 필요한 순서와 고른 분배를 주는 key 선택
