////
Search
📝

개요

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