카프카 파티션 개수 산정식 설계 여정
30
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

이 게시물은 Kafka 토픽 파티션 개수를 Broker/컨슈머 지연(lag) 관점에서 산정하는 과정을 정리한 내용입니다.

최종 산정식

요구량을 producer와 consumer로 분리해 최대값을 올림 처리

  • required_partitions = ceil(max(producer_peak_throughput / ingress_per_partition, consumer_requirement / egress_per_partition))
  • consumer_requirement = max(producer_avg_throughput * (1 + consumer_down_time / catchup_time), producer_peak_throughput)
  • 고정 기준값: egress_per_partition = 0.1MB/s, 기본 catch-up 배수 5(=1 + consumer_down_time / catchup_time)

기준값 도출 로직

ingress_per_partition과 egress_per_partition을 실측해 보수적으로 선택

  • ingress_per_partition은 latency가 급격히 튀기 직전 knee point 직전 총 처리량을 파티션 수로 나누고 안전계수(0.75) 적용
  • Confluent Cloud Enterprise eCKU 환경에서 ingress_per_partition은 6MB/s로 결정
  • egress_per_partition은 컨슈머 처리시간 병목을 반영해 레코드 처리시간 L별로 측정하며, 기본값으로 0.1MB/s 사용
  • 파티션 한도 관점에서 catch-up 배수와 eCKU 파티션 예산을 함께 검토해 기본값 조합을 확정

주의점

파티션은 늘린다고 항상 좋은 것이 아니며 순서 보장에도 영향

  • 파티션이 많으면 메타데이터/복구 비용 증가, key 기반 순서 토픽은 파티션 증설이 어려움

연관 게시글