Kafka란 무엇인가
정의
Apache Kafka는 분산 이벤트 스트리밍 플랫폼(Distributed Event Streaming Platform)입니다. LinkedIn에서 개발하여 2011년 Apache 오픈소스 프로젝트로 공개되었습니다.
핵심 개념
이벤트 스트리밍이란?
이벤트 스트리밍은 데이터를 연속적인 이벤트의 흐름으로 처리하는 것을 의미합니다.
예시:
- 사용자가 웹사이트에서 클릭할 때마다 발생하는 이벤트
- IoT 센서에서 1초마다 전송되는 온도 데이터
- 금융 거래가 발생할 때마다 생성되는 거래 기록
Kafka의 역할
Kafka는 세 가지 핵심 기능을 제공합니다:
1. Publish & Subscribe (발행과 구독)
Producer → Kafka → Consumer
(발행자) (중개자) (구독자)
- Producer: 이벤트를 생성하고 Kafka에 전송
- Consumer: Kafka로부터 이벤트를 읽어서 처리
2. Store (저장)
- 이벤트를 영구적으로 저장
- 필요한 기간만큼 보관 가능 (설정 가능)
- 디스크에 순차적으로 저장하여 고성능 유지
3. Process (처리)
- 실시간으로 이벤트 스트림을 처리
- Kafka Streams API를 통한 스트림 처리
왜 Kafka인가?
전통적인 시스템의 문제
복잡한 Point-to-Point 연결:
App A ──┬──→ DB
├──→ App B
├──→ App C
└──→ Analytics
App B ──┬──→ DB
├──→ App C
└──→ Cache
각 시스템이 다른 모든 시스템과 직접 연결되면:
- 연결 관리가 복잡함
- 데이터 형식 불일치
- 확장이 어려움
Kafka를 사용한 해결
중앙 집중식 데이터 허브:
App A ──┐
App B ──┼──→ Kafka ──┬──→ DB
App C ──┘ ├──→ Analytics
├──→ Cache
└──→ App D
- 모든 시스템이 Kafka를 통해 통신
- 표준화된 데이터 파이프라인
- 시스템 간 느슨한 결합 (Loose Coupling)
실제 사용 예시
1. 웹사이트 활동 추적
사용자 행동 → Kafka → [실시간 분석, 추천 시스템, 감사 로그]
2. 로그 수집
여러 서버의 로그 → Kafka → [중앙 로그 시스템, 모니터링, 알림]
3. 실시간 데이터 파이프라인
DB 변경사항 → Kafka → [검색 엔진, 캐시, 데이터 웨어하우스]
Kafka의 특징
| 특징 | 설명 |
|---|---|
| 분산 시스템 | 여러 서버(Broker)로 구성되어 높은 처리량과 내결함성 제공 |
| 영속성 | 모든 데이터를 디스크에 저장 |
| 확장성 | 서버를 추가하여 수평 확장 가능 |
| 고성능 | 초당 수백만 개의 메시지 처리 가능 |
| 내결함성 | 데이터 복제를 통한 장애 대응 |
핵심 용어
- Event (이벤트): Kafka에서 처리하는 기본 데이터 단위
- Producer: 이벤트를 생성하여 Kafka에 전송하는 애플리케이션
- Consumer: Kafka로부터 이벤트를 읽는 애플리케이션
- Broker: Kafka 서버
- Topic: 이벤트가 저장되는 논리적인 카테고리
- Partition: Topic을 나누어 저장하는 물리적 단위
다음 단계
Kafka의 기본 개념을 이해했다면:
- 메시징 시스템과 Kafka의 차이점
- Kafka의 주요 특징과 장점
- Topic과 Partition - 핵심 아키텍처 이해
댓글 (0)