핵심 인사이트 (3줄 요약)
- 본질: Kafka의 토픽 파티션(Topic Partition)은 하나의 데이터 스트림(Topic)을 순서 보장이 가능한 독립적인 로그 단위로 분할한 것으로, 파티션 수를 늘릴수록 병렬 처리 처리량(throughput)이 선형적으로 증가한다.
- 가치: 파티션의 핵심 트레이드오프는 "병렬성(Parallelism) vs. 순서 보장(Ordering)"이다. 전체 토픽 레벨에서는 순서가 보장되지 않지만, 같은 파티션 내 메시지는 프로듀서 삽입 순서가 보장된다. 동일 키를 가진 메시지는 항상 같은 파티션에 라우팅되므로 키 기반 순서 보장이 가능하다.
- 판단 포인트: 파티션 수 설계 공식 =
max(프로듀서 처리량 / 파티션당 프로듀서 처리량, 컨슈머 처리량 / 파티션당 컨슈머 처리량). 파티션 수는 늘릴 수 있지만 줄이기는 어렵고, 파티션 수가 많아질수록 브로커 메모리 사용량·리더 선출 시간이 증가하므로 과도한 파티션은 역효과다.
Ⅰ. 개요 및 필요성
┌────────────────────────────────────────────────────────┐
│ Kafka Topic Partition 구조 │
├────────────────────────────────────────────────────────┤
│ │
│ Topic: user-events │
│ ┌─────────────────────────────────────────┐ │
│ │ Partition 0: [msg0] → [msg3] → [msg6] │ │
│ │ Partition 1: [msg1] → [msg4] → [msg7] │ │
│ │ Partition 2: [msg2] → [msg5] → [msg8] │ │
│ └─────────────────────────────────────────┘ │
│ │
│ Producer → 파티션별 분배 (라운드로빈 or 키 해시) │
│ Consumer Group → 파티션당 1 컨슈머 할당 │
└────────────────────────────────────────────────────────┘
- 📢 섹션 요약 비유: Kafka 파티션은 고속도로 다차선이다. 1차선이면 차가 한 줄로 줄 서야 하지만, 3차선이면 3배 많은 차량이 동시에 달릴 수 있다. 단, 같은 목적지(키)의 차량은 항상 같은 차선(파티션)을 이용한다.
Ⅱ. 아키텍처 및 핵심 원리
파티션 내부 구조
파티션 0 (Offset 기반 순서 로그):
Offset: 0 1 2 3
[msg_A] → [msg_B] → [msg_C] → [msg_D]
↑ LEO (Log End Offset)
Leader Partition: 읽기/쓰기 처리
Follower Partition: ISR (In-Sync Replicas) — 복제본
파티션 라우팅 전략
| 전략 | 동작 | 사용 케이스 |
|---|---|---|
| Round-Robin | 파티션에 순서대로 분배 | 처리량 극대화 |
| Key Hash | hash(key) % partitions | 동일 키 순서 보장 |
| Custom Partitioner | 커스텀 로직 | 특정 파티션 집중 |
- 📢 섹션 요약 비유: 라운드로빈은 은행 대기 번호표 시스템이다. 번호 순서대로 창구에 배정한다. 키 해시는 "홍길동은 항상 3번 창구"처럼 특정 고객이 항상 같은 창구로 가도록 한다.
Ⅲ. 비교 및 연결
| 비교 | Kafka 파티션 | RabbitMQ 큐 | Kinesis 샤드 |
|---|---|---|---|
| 순서 보장 | 파티션 내 보장 | 단일 큐 내 보장 | 샤드 내 보장 |
| 확장 | 파티션 추가 | 큐 추가 | 샤드 증가 |
| 메시지 재처리 | Offset 리셋 가능 | ACK 전 재전송 | Iterator 리셋 |
- 📢 섹션 요약 비유: Kafka 파티션은 양방향 2차선 도로다. 지나간 차(메시지)의 블랙박스(Offset) 덕분에 과거로 돌아가서 다시 재생할 수 있다. RabbitMQ는 일방통행 도로로 한 번 지나가면 사라진다.
Ⅳ. 실무 적용 및 기술사 판단
파티션 수 설계 기준
요구사항:
- 초당 100만 메시지 처리 (Producer)
- 파티션당 최대 3만 TPS (브로커 디스크 순차 쓰기 한계)
- 컨슈머 처리량: 파티션당 5만 TPS
설계:
min partitions = ceil(1,000,000 / 30,000) = 34 파티션
→ 여유 포함 40 파티션으로 설정
→ replication-factor = 3 (내구성)
ISR (In-Sync Replicas) 관리
-
ISR: 리더 파티션과 동기화 상태를 유지하는 팔로워 집합.
-
min.insync.replicas=2: 최소 2개 ISR 확인 후 쓰기 확인(Ack). 내구성 보장.
-
📢 섹션 요약 비유: ISR은 비행기 블랙박스 복제 시스템이다. 리더 파티션(메인 블랙박스)과 팔로워(복제본)가 항상 동기화되어 있어, 리더가 고장 나도 데이터가 사라지지 않는다.
Ⅴ. 기대효과 및 결론
| 기대효과 | 내용 |
|---|---|
| 수평 확장 | 파티션 추가로 처리량 선형 증가 |
| 순서 보장 | 키 기반 파티션 라우팅으로 이벤트 순서 유지 |
| 내구성 | ISR 복제로 브로커 장애 시 무손실 |
Kafka 파티션은 이벤트 드리븐 아키텍처(EDA), 실시간 CDC(Change Data Capture), 마이크로서비스 비동기 통신의 핵심 인프라로, 스트리밍 ML 파이프라인과 결합하여 실시간 AI 추론 플랫폼의 데이터 백본으로 발전 중이다.
- 📢 섹션 요약 비유: Kafka 파티션은 현대 디지털 도시의 고속 지하철 다노선 시스템이다. 노선(파티션)을 늘릴수록 더 많은 승객(데이터)을 동시에 이동시킬 수 있고, 같은 노선(키)은 항상 같은 방향으로 간다.
📌 관련 개념 맵
| 개념 | 연결 포인트 |
|---|---|
| Offset | 파티션 내 메시지 순서의 논리적 주소 |
| Consumer Group | 파티션을 분담하는 컨슈머 집합 |
| ISR | 리더와 동기화된 팔로워 복제본 집합 |
| Broker | 파티션의 물리적 저장 노드 |
| CDC | Kafka 파티션 기반 DB 변경 스트림 |
📈 관련 키워드 및 발전 흐름도
[단일 큐 메시징 — 순서 보장, 확장 한계]
│
▼
[Kafka 토픽 파티션 — 병렬 분산 로그 스트림]
│
▼
[Consumer Group — 파티션별 병렬 소비]
│
▼
[Kafka Streams / Flink — 파티션 기반 상태 연산]
│
▼
[실시간 AI 파이프라인 — 스트리밍 ML 추론 백본]
👶 어린이를 위한 3줄 비유 설명
- Kafka 파티션은 고속도로 여러 차선이에요! 차선이 많을수록 더 많은 차(메시지)가 동시에 달릴 수 있어요.
- 같은 차 번호판(키)을 가진 차는 항상 같은 차선(파티션)으로 가서, 순서가 뒤섞이지 않아요!
- 블랙박스(Offset) 덕분에 과거 어느 시점으로도 돌아가서 메시지를 다시 읽을 수 있답니다!