https://kafka.apache.org/intro?utm_source=chatgpt.com
Apache Kafka
Apache Kafka: A Distributed Streaming Platform.
kafka.apache.org
“Kafka는 단순한 메시지큐가 아니라, 데이터의 중추 신경계다.”
실시간 데이터가 생성되고, 저장되고, 처리되는 전 과정을 하나의 시스템으로 연결하는 이벤트 스트리밍 플랫폼이다.
1️⃣ 이벤트 스트리밍이란?
이벤트 스트리밍(Event Streaming) 은
데이터베이스, 센서, 모바일 앱, 클라우드, 소프트웨어 등에서 발생하는 **“사건(Event)”**을
실시간으로 수집 → 저장 → 처리 → 전달 하는 기술이다.
📌 쉽게 말해,
“데이터를 한 번 저장하고 끝내는 게 아니라,
계속 흐르게(stream) 해서 필요한 곳에서 즉시 반응할 수 있게 만드는 기술"이다.
💬 예시로 보면
- 은행 앱 → “입금/송금 이벤트”를 즉시 감지해 거래 내역에 반영
- 택배 서비스 → 차량 위치 이벤트를 실시간으로 추적
- 스마트 공장 → 센서 데이터로 기계 이상 여부를 즉시 감지
- 쇼핑몰 → 고객 클릭 이벤트를 바로 분석해 추천상품 표시
⚙️ 2️⃣ Kafka의 세 가지 핵심 기능
Kafka는 이벤트 스트리밍을 위한 세 가지 본질적 기능을 통합해 제공한다.
이 세 가지를 이해하면 “Kafka가 왜 단순 메시지 브로커와 다른가”를 명확히 구분할 수 있다.
| 📨 1. Publish / Subscribe | 데이터를 발행(Publish) 하고 구독(Subscribe) 하는 기능. Producer가 이벤트를 보내면, Consumer는 구독한 Topic에서 이를 실시간으로 읽는다. |
SNS: 사용자가 게시글을 올리면 팔로워가 실시간으로 보는 구조 |
| 💾 2. Store | 들어온 이벤트 스트림을 영구적으로 저장. 보존 기간(retention)을 설정할 수 있으며, 일정 기간 후 자동 삭제 가능. |
“모든 대화를 기록하는 블랙박스” |
| ⚙️ 3. Process | 들어온 데이터를 실시간으로 처리하거나, 과거 데이터를 회고적으로 재처리. Kafka Streams API로 집계·조인·변환 등 가능. |
“두뇌처럼 생각하고 반응하는 데이터 흐름” |
💡 이 세 가지 기능은 모두
분산형(Distributed), 고확장성(Scalable), 내결함성(Fault-tolerant), 보안(Security) 구조로 설계되어 있다.
🧩 3️⃣ Kafka의 주요 요소 구조 (Core Components)
| Producer | 데이터를 Kafka로 전송 | 주문 서비스가 order.created 이벤트 발행 |
| Consumer | Kafka에서 데이터를 읽음 | 결제 서비스가 order.created 이벤트 소비 |
| Topic | 이벤트가 저장되는 공간 (폴더 개념) | “orders”, “payments”, “clicks” 등 |
| Partition | Topic을 나눈 단위 (병렬 처리 용도) | 주문 ID 기준으로 파티션 분할 |
| Broker | Kafka 서버 (실제 저장소) | Kafka 클러스터 내 3개의 Broker 서버 |
| Cluster | 여러 Broker의 집합 | 운영환경에서는 보통 3~5개 이상 |
| Offset | 메시지의 위치(순서) 정보 | “Consumer가 어디까지 읽었는가”를 표시 |
| Replica | 데이터 복제본 (내결함성 보장) | 3개 복제본 → 한 서버가 죽어도 복구 가능 |
🧠 예를 들어 Topic: orders 에 “order.created” 이벤트가 들어오면,
Producer는 이를 Kafka에 publish → Broker에 저장 → Consumer가 읽는 구조다.
🔌 4️⃣ Kafka의 다섯 가지 핵심 API
Kafka는 이벤트의 “생명주기 전체”를 다루기 위해 5개의 API를 제공한다.
이 API들은 각기 다른 역할을 맡아 완성된 스트리밍 시스템을 만든다.
| 🧱 Admin API | Kafka 클러스터, 토픽, 파티션 등을 관리 | 토픽 생성, 삭제, 파티션 확장, 브로커 상태 조회 |
| ✉️ Producer API | Kafka로 이벤트를 발행(Publish) | 주문 생성 시 order.created.v1 이벤트 전송 |
| 👀 Consumer API | Kafka에서 이벤트를 구독(Consume) | 결제 서비스가 order.created.v1 이벤트를 읽음 |
| 🔄 Streams API | Kafka 내부 스트림을 실시간 처리/변환/집계 | 주문 + 결제 데이터를 조인해 “구매 전환율” 계산 |
| 🔗 Connect API | Kafka와 외부 시스템(DB, 클라우드 등)을 자동 동기화 | PostgreSQL → Kafka → Elasticsearch 자동 전송 |
📘 Streams vs Connect 차이
| Streams | Connect |
| Kafka 내부에서 “데이터 처리” | Kafka 외부 시스템과 “데이터 이동” |
| 코드로 로직 작성 | 설정으로 커넥터 실행 |
| 실시간 분석, 집계, 조인 | DB 변경사항 캡처 (CDC), 클라우드 업로드 등 |
🧩 마무리: 내 생각
Kafka를 공부하며 느낀 점은,
“Kafka는 단순히 데이터를 옮기는 기술이 아니라,
데이터가 실시간으로 살아 움직이게 하는 인프라다.”
REST API가 요청이 있을 때만 움직인다면,
Kafka는 “사건이 발생하는 즉시 반응하는 뇌”처럼 동작한다.
'Kafka' 카테고리의 다른 글
| 카프카(Kafka) 로컬 환경 구축과 기본 개념 정리 (0) | 2025.09.05 |
|---|---|
| Kafka로 회원가입 이벤트 처리하기 (0) | 2025.09.04 |
| Kafka 시작하기 (0) | 2025.08.31 |