Apache Kafka
Kafka
- 이벤트 스트리밍 플랫폼, 메시지 브로커
- 링크드인에서 개발 → 오픈소스화
- 개발 언어는 스칼라
- 애플, 넷플릭스, 카카오 등 많은 기업에서 사용 중
이벤트 스트리밍 플랫폼
실시간으로 발생하는 데이터를 저장, 처리, 다양한 시스템으로 전달하는 데이터 파이프라인의 핵심 인프라
- 이벤트 소스(데이터베이스, 센서, APP 등)에서 실시간으로 데이터를 이벤트 스트림 형태로 수집
- 이벤트 스트림을 나중에 검색할 수 있도록 영구적으로 저장
- 이벤트 스트림을 실시간 및 소급적으로 조작, 처리 및 대응
- 필요시 다양한 목적지 기술로 라우팅
메세지 큐
- 프로그램(프로세스) 간 데이터 교환에 사용되는 기술의 하나.
- 비동기, 낮은 결합도, 확장성, 탄력성, 보장성을 제공.
활용처
- 금융 : 증권 거래소, 은행, 보험 등에서 실시간으로 결제 및 금융 거래를 처리
- 물류 및 자동차 산업 : 자동차, 트럭, 차량대, 배송물을 실시간으로 추적하고 모니터링
- 공장 등 : IoT 장치나 기타 장비에서 센서 데이터를 지속적으로 수집하고 분석
- 소매, 여행 업계, 모바일 앱 : 고객 상호작용과 주문을 수집하고 즉시 대응
- 의료 : 치료를 받는 환자를 모니터링, 상태 변화를 예측, 적시에 치료를 보장
- 업무 : 다양한 부서에서 생산되는 데이터를 연결, 저장하고, 이용 가능하게 만듦
- 데이터 플랫폼, 이벤트 기반 아키텍처, 마이크로서비스의 기반 역할
구조와 핵심 구성 요소
구성 요소 | 설명 |
---|---|
Producer | - 데이터를 생성하고 Kafka 클러스터로 전송하는 시스템 또는 애플리케이션. - 이벤트나 로그 등의 메시지를 보냄 |
Kafka Cluster | - Kafka 브로커들의 집합. - 데이터를 수신, 저장, 분산 처리하는 핵심 인프라. - Topic과 Partition을 관리 |
Topic | - 메시지를 구분하는 단위. - 특정 주제에 해당하는 메시지 스트림을 분리하여 저장하고 구독할 수 있음 |
Consumer | - Kafka로부터 메시지를 읽어가는 애플리케이션 또는 서비스. - 필요에 따라 특정 Topic 또는 Partition을 구독함 |
Wanted - Backend Pre-onboarding - CQRS (하규태)
구성 요소 | 설명 |
---|---|
Partitioner | - Producer가 전송한 메시지를 어떤 Partition에 보낼지 결정하는 로직/모듈. - 기본적으로 라운드로빈 방식이나 키 기반 해시 분배 등을 사용 |
Partition | - Topic을 물리적으로 나눈 단위. - 메시지는 파티션에 순차적으로 저장되며, 병렬 처리와 확장을 가능하게 함 |
Message | - Kafka를 통해 전달되는 데이터 단위. - 일반적으로 key, value, timestamp 등의 메타데이터를 포함함 |
Offset | - 각 Partition 내 메시지의 고유 위치를 나타내는 숫자. - Consumer는 이 offset을 기준으로 어떤 메시지를 읽었는지 추적 가능 |
Consumer Group | - 여러 Consumer가 하나의 그룹으로 묶은 단위. - 하나의 메시지를 중복 없이 처리하도록 하여 효율성 증대. |
메시징 시스템 비교 (Kafka vs RabbitMQ)
항목 | Kafka | RabbitMQ |
---|---|---|
분류 | 이벤트 브로커 (Event Streaming Platform) | 메시지 브로커 (Message Queue) |
설계 목적 | 고성능 이벤트 스트리밍, 로그 수집, 데이터 파이프라인 | 신뢰성 있는 메시지 전달, 작업 큐 처리 |
메시지 저장 | 디스크에 영구 저장, 재처리 가능 | 기본적으로 읽으면 삭제됨 |
처리 방식 | Pull 기반 (Consumer가 메시지를 당김) | Push 기반 (Broker가 Consumer에게 메시지를 보냄) |
사용 사례 | 실시간 분석, CDC, 로그 수집, 대규모 데이터 파이프라인 | 이메일 전송, 알림 시스템, 백그라운드 작업 큐 등 |
Reference
kafka - doc
Confluent Developer - apachekafka key concept image
호다닥 톺아보는 Kafka
Wanted - Backend Pre-onboarding - CQRS (하규태)
https://gruuuuu.github.io/integration/kafka-concept/
https://www.qlik.com/us/streaming-data/apache-kafka
Comments