Apache Kafka란? 실시간 데이터 스트리밍 핵심 개념과 동작 원리
Apache Kafka는 대규모 실시간 데이터 처리에 특화된 분산 스트리밍 플랫폼입니다. LinkedIn에서 개발되어 현재는 오픈소스로 관리되며, 실시간 로그 수집, 이벤트 기반 아키텍처, 데이터 파이프라인 구성 등에 널리 활용됩니다. 이 글에서는 Kafka의 개념, 구성 요소, 동작 구조, 사용 사례를 중심으로 정리합니다.
1. Kafka란?
Kafka는 Pub/Sub 메시징 시스템이자 분산 로그 저장 시스템입니다. 대용량 메시지를 빠르게 전송하고 저장할 수 있어 데이터 중심 아키텍처의 핵심으로 자리 잡았습니다.
2. Kafka 핵심 개념
- Producer: 메시지를 발행하는 시스템 (예: 앱, 서버)
- Consumer: 메시지를 구독하고 처리하는 시스템
- Broker: Kafka 서버. 메시지를 저장하고 라우팅
- Topic: 메시지를 분류하는 단위
- Partition: Topic을 분할하여 병렬 처리 가능하도록 함
- Offset: 메시지의 고유 순번. Consumer가 어디까지 읽었는지 표시
3. Kafka 아키텍처 구조
Kafka는 아래와 같은 구조로 동작합니다:
[Producer] → [Kafka Topic (Partition)] → [Consumer Group]
- Producer는 특정 Topic으로 메시지 전송
- Topic은 여러 Partition으로 나뉘며, 메시지를 분산 저장
- Consumer Group은 병렬적으로 메시지를 처리
4. Kafka의 특징
- 고성능: 초당 수백만 개 메시지 처리 가능
- 확장성: Broker 수를 수평 확장 가능
- 내결함성: Replication 기반 장애 복구
- Durability: 디스크에 메시지 저장 → 데이터 손실 최소화
- 유지 가능한 메시지: TTL 설정, 필요 시 재처리 가능
5. Kafka 실무 활용 예시
- 실시간 로그 수집 (예: Nginx → Kafka → Elasticsearch)
- 비동기 이벤트 처리 (결제 완료 → 주문 처리 → 알림 발송)
- 마이크로서비스 간 비동기 통신
- 실시간 데이터 파이프라인 구축 (Kafka → Spark → HDFS)
6. Kafka vs RabbitMQ
| 항목 | Kafka | RabbitMQ |
|---|---|---|
| 처리 방식 | 로그 스트리밍 (Pull 기반) | 큐 기반 메시징 (Push 기반) |
| 내구성 | 디스크 저장 기반 | 메모리 기반 (디스크 옵션 가능) |
| 성능 | 대용량 처리에 강함 | 낮은 지연 시간에 적합 |
| 사용 목적 | 데이터 파이프라인, 로그 | 알림, 실시간 요청 응답 |
7. Kafka를 배우는 데 필요한 기본 지식
- Pub/Sub 구조 이해
- 분산 시스템의 기본 개념
- 데이터 처리 흐름 (Producer → Broker → Consumer)
- Docker 또는 클러스터 환경 경험 (있으면 유리)
8. 결론
Apache Kafka는 실시간 데이터 처리 시스템의 중심에 있는 핵심 기술입니다. 높은 처리량, 내결함성, 확장성 덕분에 대규모 시스템 아키텍처에서 널리 사용됩니다. 로그 수집, 이벤트 처리, 스트리밍 파이프라인 구축을 고려 중이라면 Kafka는 강력한 선택지가 될 수 있습니다.