Kafka란?
대용량 데이터를 빠르고 안정적으로 전달 & 저장 & 처리하기 위한 분산 메시지 시스템
(고성능 분산 로그 저장 + 실시간 데이터 전달 시스템)
•
데이터를 한 곳에서 다른 곳으로 전달하는 파이프라인 역할
예를 들어, 앱 서버에서 발생한 로그를 카프카로 전송하고 실시간 분석 시스템으로 전달하는 경우, IoT 센서 데이터를 카프카로 전송하고 데이터베이스로 전달하는 경우를 들 수 있음
•
메시지를 안전하게 받고, 잠시 저장하며, 여러 소비자에게 빠르고 안정적으로 전달하는 데이터 허브
Kafka 핵심 구성 요소
구성요소 | 설명 |
Producer | 데이터를 보내는 주체 (로그 수집기, 앱 서버 등) |
Consumer | 데이터를 읽는 주체 (스트림 처리기, 분석 서버 등) |
Broker | 카프카 서버 1대. 여러 대가 모여 클러스터를 구성 |
Topic | 데이터가 모이는 “채널” 또는 “메일함”. 종류별 데이터 분리용 |
Partition | Topic을 쪼갠 단위. 병렬 처리와 확장을 가능하게 함 |
Offset | 메시지가 파티션 내에서 저장된 위치를 가리키는 번호 |
Consumer Group | 여러 Consumer가 하나의 논리적 그룹으로 묶여서 데이터 분담 처리 |
데이터가 흐르는 구조
[Producer] (Fluent Bit, 앱 서버 등)
↓
[Kafka Broker Cluster]
↓
[Consumer] (Flink, Spark, Elasticsearch 등)
Markdown
복사
데이터는 Topic 단위로 저장되고, Producer → Topic → Consumer 순으로 흘러감
Kafka의 동작 방식
Producer가 메시지를 전송
•
Producer가 데이터를 특정 Topic으로 보냄.
•
Topic은 여러 Partition으로 나뉨
(예 : Topic app-logs → partition 0, 1, 2)
•
메시지는 각 파티션에 append-only log 형태로 저장됨
Broker가 메시지를 저장
•
각 Broker는 일부 파티션을 담당
•
데이터는 디스크에 순차적으로 기록되어 매우 빠름
•
장애 시를 대비해 replication(복제) 지원
(예 : 3개 복제본 중 1개 장애 시에도 동작)
Consumer가 메시지를 읽음
•
Consumer는 파티션에서 메시지를 순서대로 읽음
•
자신이 읽은 마지막 위치를 offset으로 기록 → 재시작 시 이어서 읽음 가능
•
여러 Consumer가 Consumer Group을 이루면, 파티션을 나눠서 병렬 처리
Kafka의 장점
특징 | 설명 |
고성능 | 디스크에 순차 기록 + 배치 전송 → 초당 수백만 건 처리 |
확장성 | 브로커나 파티션 추가만으로 수평 확장 가능 |
내구성 | 데이터 복제(replication)로 장애 시에도 손실 없음 |
유연성 | 실시간 스트리밍 + 오프라인 배치 모두 가능 |
오픈소스 | Apache 재단 프로젝트로 커뮤니티 활발 |
Kafka 쓰이는 곳
분야 | 사용 예시 |
로그 수집/분석 | Fluent Bit → Kafka → Elasticsearch |
메트릭/모니터링 | Prometheus exporter → Kafka → Grafana |
데이터 파이프라인 | IoT 데이터 → Kafka → Data Lake |
마이크로서비스 통신 | 서비스 간 비동기 이벤트 전달 |
실시간 처리 | Kafka Streams / Flink / Spark Streamin |

