Apache Kafka는 대용량 데이터를 빠르고 안정적으로 처리하기 위한 분산 스트리밍 플랫폼이다. 실시간 로그 수집, 메시지 브로커, 이벤트 소싱, 데이터 파이프라인 등 다양한 용도에 사용되며, 현대적인 데이터 아키텍처의 핵심 구성요소로 자리 잡고 있다.
Kafka의 기본 개념
Kafka는 다음과 같은 구성요소를 가진다:
- Producer: 데이터를 Kafka로 전송하는 주체
- Consumer: Kafka로부터 데이터를 구독하는 주체
- Broker: Kafka 서버. 메시지를 저장하고 분배하는 역할
- Topic: 메시지를 분류하는 논리적 단위
- Partition: Topic을 수평으로 분산 처리하기 위한 단위
- Offset: 메시지의 위치를 나타내는 인덱스
Kafka는 메시지를 디스크에 영속적으로 저장하고, Consumer가 직접 Offset을 관리할 수 있도록 함으로써
높은 내구성과 유연한 처리 방식을 제공한다.
Kafka는 단독으로 사용되는가?
결론부터 말하자면, Kafka는 단독으로는 단순한 메시지 브로커 이상으로 활용되기 어렵다. 일반적으로는 다른 시스템과 조합하여 다음과 같은 아키텍처를 구성한다:
- Kafka + Zookeeper: (구버전 기준) 클러스터 메타데이터 및 브로커 상태 관리
- Kafka + Schema Registry: Avro/Protobuf 기반 메시지 구조 관리
- Kafka + Kafka Connect: 다양한 외부 시스템과 연결 (예: DB, Elasticsearch, S3)
- Kafka + Flink / Spark Streaming: 실시간 스트리밍 분석
- Kafka + ksqlDB: SQL 기반 스트리밍 쿼리 처리
- Kafka + Debezium: CDC (Change Data Capture) 구현
Kafka의 주요 활용 분야 (Use Case)
1. 실시간 로그 수집
- 웹서버, 애플리케이션, 보안 시스템 등에서 발생하는 로그를 중앙으로 수집
- Kafka → Logstash or Fluentd → Elasticsearch
2. 마이크로서비스 간 비동기 통신
- 서비스 간 REST API 호출 대신 이벤트 기반 메시지 전달
- 예: 주문 서비스 → Kafka Topic → 결제/알림/배송 서비스 소비
3. 실시간 데이터 파이프라인 구축
- 다양한 소스 (DB, 파일, API 등)로부터 수집한 데이터를 정제 후 다른 시스템으로 전달
- Kafka Connect + Sink Connector 사용
4. DB 변경사항 수집 (CDC)
- Debezium으로 MySQL/PostgreSQL 등의 변경 로그를 Kafka로 보내고, 이를 기반으로 캐시 DB, 분석 시스템, 백업 저장소 등으로 반영
5. 이벤트 소싱
- 모든 상태 변경을 이벤트로 저장하고, 재생 가능한 시스템 구성
- 예: 계좌 입출금 이력, 쇼핑몰 주문 상태 흐름 등을 완전한 이벤트 로그로 구성
6. 실시간 모니터링 및 경보 시스템
- Kafka Topic에 수집된 이벤트를 분석하여 이상 탐지 또는 알림 시스템과 연동
- 예: 센서 이상치 탐지, 보안 이벤트 분석 등
결론
Kafka는 단순한 메시지 큐 그 이상으로, 데이터 흐름 중심의 아키텍처를 설계할 수 있는 강력한 플랫폼이다. 단독보다는 다른 시스템과의 조합을 통해 실시간 데이터 처리, 로그 분석, 마이크로서비스 통신 등 다양한 용도로 활용되며, 특히 대용량 환경에서의 안정성과 확장성을 중요하게 여기는 조직에서 점점 더 많은 채택을 받고 있다.
Kafka를 단순히 배워보는 것에서 끝내지 않고, 위의 Use Case를 직접 구성해보는 실습을 통해 그 진가를 체감해보는 것을 추천한다.
'Back-End' 카테고리의 다른 글
Legacy 구조의 핵심 컴포넌트: MCI, EAI, FEP 그리고 오늘날의 변화 (2) | 2025.07.20 |
---|---|
BaaS란? 백엔드 개발의 새 흐름과 클라우드 서비스의 관계 (0) | 2025.05.03 |
Axios vs Fetch API vs AJAX (0) | 2025.02.18 |