Kafka는 대규모 실시간 데이터 스트리밍을 위한 대표적인 분산 메시지 큐 시스템입니다. 이번 포스팅에서는 Kafka의 기본 개념과 구성 요소 등을 살펴보며 Kafka가 왜 실시간 데이터 처리 플랫폼으로 각광받는지 알아봅시다.
1. Kafka Overview
1.1 Kafka의 주요 기능
Kafka는 다음과 같은 특징을 가진 분산 메시지 큐 시스템입니다:
- Pub/Sub 모델을 지원하는 구조로 데이터를 생산하는 Publisher와 소비하는 Consumer라고 하는 subscriber로 데이터를 관리하고 처리
- 여러 대의 서버로 구성된 클러스터 기반 아키텍처를 통해 수평 확장 가능
- Topic 단위로 데이터를 관리하며, Topic은 여러 개의 Partition으로 구성 가능
- High throughput, Low latency 환경에서도 안정적으로 작동
* throughput = 처리량, latency = 처리 속도
1.2 Kafka가 해결하는 문제
Kafka는 다음과 같은 문제를 해결하기 위해 설계되었습니다:
- 기존 메시지 큐(RabbitMQ 등)의 확장성 한계를 극복
- 클러스터 기반으로 고가용성(HA), 장애 허용성(Fault Tolerance) 제공
- Topic/Partition/Offset/Producer/ConsumerGroup 등의 개념으로 신뢰성 있는 대용량 메시지 처리 구현
- 빠른 데이터 처리와 유연한 분산 환경 지원
1.3 이벤트 스트리밍 플랫폼으로서의 Kafka
Kafka는 단순한 메시지 큐를 넘어, 이벤트 스트리밍 플랫폼으로 발전하고 있습니다. 이는 다음과 같은 요소를 포함합니다:
- 다양한 소스에서 수집되는 이벤트 처리
- 초당 수 GB 이상 데이터 처리 가능
- Kafka Streams, Kafka Connect 등의 API를 통한 스트리밍 처리와 시스템 간 통합
2. Kafka 구성 요소
2.1 Kafka 서버 및 클라이언트 구조
Kafka는 고성능 TCP 기반의 네트워크 통신을 사용하는 서버-클라이언트 분산 시스템입니다.
- 서버 (Broker): Kafka 클러스터를 구성하며, 각 브로커는 토픽 데이터를 저장합니다. Kafka Connect를 통해 외부 시스템과 연결할 수 있습니다.
- 클라이언트: 다양한 언어(Java, Python, Go 등)의 클라이언트를 통해 메시지를 생산하거나 소비할 수 있습니다. 네트워크 오류 발생 시에도 고가용성을 유지하며 이벤트를 처리합니다.
2.2 Kafka의 핵심 개념
이벤트(Event)
Kafka에서 주고받는 기본 단위. '레코드' 또는 '메시지'라고도 하며 다음과 같은 요소로 구성됩니다:
- Key: 이벤트의 식별자 (예: 사용자 ID)
- Value: 데이터 본문 (예: "1,000원 입금")
- Timestamp: 발생 시간 (예: 2023년 2월 1일 오전 2시 30분)
Producer와 Consumer
프로듀서와 컨슈머는 모두 Kafka 클라이언트이며 다음과 같은 역할을 합니다.
- Producer: Kafka로 데이터를 발행하는 주체
- Consumer: Kafka에서 데이터를 소비하는 주체
Kafka의 비동기 구조(프로듀서는 컨슈머가 메시지를 수신하는 것을 기다릴 필요 없음) 덕분에 Producer와 Consumer는 독립적으로 동작하며, 이는 높은 확장성의 핵심입니다.
2.3 Kafka의 토픽

Topic
- 이벤트를 분류하고 저장하는 단위
- 여러 Producer/Consumer가 하나의 Topic을 사용 가능
- 메시지는 소비 후에도 유지되며, 여러 번 재처리 가능 (유지 기간 따로 설정 가능)
Partition
- Topic을 구성하는 물리적 저장 단위
- 각 Partition은 별도의 로그(이벤트 레코드)를 가지며, 병렬 처리와 확장성 향상에 기여
Offset
- Partition 내에서 각 이벤트의 고유 번호
- Offset 값의 순서는 파티션 내에서만 보장
- Kafka는 Offset을 기준으로 메시지를 추적 및 재처리할 수 있게 함
2.4 Kafka 브로커(Broker)
Kafka 클러스터는 하나 이상의 브로커 서버(Broker)로 구성됩니다.

- 각 브로커는 여러 토픽과 파티션을 저장
- 브로커들은 전체 클러스터 정보를 공유하며, 연결된 하나의 브로커를 통해 전체 클러스터와 통신 가능
- 특정 브로커가 모든 데이터 저장을 담당하지 않음 (데이터는 분산 저장)

예: Topic-x는 3개의 파티션을 갖고 있으며, 이는 Broker 1, 2, 3에 분산 저장될 수 있습니다.
2.5 Kafka 클라이언트 API
Kafka는 다양한 클라이언트 API를 제공합니다:
- Producer API: Kafka로 데이터를 전송
- Consumer API: Kafka에서 데이터를 수신
- Streams API: Kafka 내부에서 스트림 데이터를 실시간 처리 (고수준 API - SQL Join, Cache ... 여러 기능 제공)
- Connector API: 외부 시스템(RDBMS, Elasticsearch 등)과 Kafka 간 데이터 연동
마무리: Kafka를 왜 선택하는가?
Kafka는 단순한 메시지 큐를 넘어 데이터 중심의 아키텍처를 가능하게 하는 이벤트 스트리밍 플랫폼입니다. 높은 확장성, 탄탄한 내결함성, 다양한 클라이언트 및 통합 API를 통해 데이터 중심의 마이크로서비스 및 빅데이터 처리에 최적화된 솔루션입니다.
이 글에서 다룬 Kafka의 핵심 개념과 구조를 이해하고 나면, 실제 Kafka 클러스터를 구축하거나, 스트리밍 파이프라인을 구성할 때 큰 도움이 될 것입니다. 다음 글에서는 Kafka 설치 및 실습 환경 구성에 대해 자세히 소개하겠습니다.
'Data Engineering > Kafka' 카테고리의 다른 글
| [Kafka] EKS에서 Strimzi Kafka Connect와 S3 Sink Connector 설정 및 트러블슈팅 (1) | 2025.09.09 |
|---|---|
| [Kafka] Kubernetes환경에서 Kafka 구성하기 (with Strimzi) (4) | 2025.08.10 |
| [Kafka] Kafka 설치 및 KRaft로 Cluster 구성하기 (0) | 2025.07.23 |
| [Kafka] 스트리밍 데이터 처리와 Event-Driven Architecture 이해하기 (2) | 2025.07.22 |