✅ 개요
- Apache Kafka: 아파치 재단의 오픈소스 실시간 데이터 스트리밍 플랫폼
- 사용처: 포춘 100대 기업 중 80% 이상 사용
- 목적: 대용량 트래픽 처리, 실시간 분석, 로그 수집 등에 최적화
✅ Kafka 핵심 구조 정리
구성요소 설명
Producer | 데이터를 생성하여 Kafka에 전달하는 역할 |
Kafka Cluster | 데이터를 저장하고 관리하는 저장소, 중심에는 브로커 존재 |
Consumer | Kafka에서 데이터를 읽어와 처리 |
Topic | 이벤트 분류 단위 (토픽 > 파티션 구성) |
Partition | 이벤트 저장 단위, 병렬 처리 가능 |
Offset | 각 메시지의 고유 위치값 (정렬 및 순서 유지) |
✅ 시각자료: Kafka 기본 구조도
✅ Kafka 메시지 처리 흐름
Producer → Topic(Partition) → Offset 부여 → Consumer가 순서대로 처리
🛠 동작 흐름 예시
- Producer → 특정 Topic에 이벤트 전송
- Kafka는 해당 이벤트를 Partition에 저장하며 Offset 부여
- Consumer는 Partition 단위로 이벤트를 읽고 처리
- Consumer는 Offset을 기록하여 중단 지점부터 재처리 가능
예)
UserLogin이라는 Topic에 이벤트 3개가 순서대로 들어옴
각 메시지는 Partition에 저장되고 Offset 0, 1, 2 할당
Consumer가 Offset 기준으로 순차적으로 읽음
📈 Kafka의 장점
- 장애에도 안전한 디스크 저장
- 파티션 기반 병렬처리 구조
- 확장 용이 / 고가용성 구조
- 웹MQ보다 안정적이고 빠른 복구 가능
🧠 초보자를 위한 Kafka 쉬운 설명
🧺 Kafka는 뭐하는 애야?
Kafka는 엄청 빠르고 튼튼한 택배 시스템입니다.
데이터라는 '소포'를 여러 곳에 '빠르고 안전하게' 보내주는 역할을 해요.
🧑🍳 누가 어떤 역할을 하나요?
- Producer (생산자)
: 데이터를 만들어서 Kafka한테 보내요.
예: “회원가입이 되었어요!”, “결제가 완료되었어요!” - Kafka Cluster (브로커)
: 받은 데이터를 줄 세워서 안전하게 저장해두는 창고 역할이에요.
여러 대의 서버가 함께 일하면서 속도를 높이고, 혹시 문제가 생겨도 복구할 수 있게 해줘요. - Topic
: 데이터를 종류별로 분류하는 상자예요.
예: 주문 관련 데이터는 order, 결제는 payment - Partition
: Topic 안에 나뉘어진 서랍 칸이라고 보면 돼요.
이걸로 데이터 처리 속도가 훨씬 빨라져요. - Consumer (소비자)
: 저장된 데이터를 꺼내서 실제로 사용하는 사람이에요.
예: 주문 내역을 분석하거나, 결제 데이터를 다른 시스템에 보내는 것 - Zookeeper (관리자)
: Kafka 창고 전체를 감시하고 조율하는 관리자예요.
누가 리더인지 정하고, 서버가 추가되거나 빠질 때도 Zookeeper가 조정해줘요.
🚀 왜 Kafka를 쓰는 거야?
- 데이터가 날아가지 않아요
→ 디스크에 저장해서 시스템이 꺼져도 복구 가능해요 - 아주 빠르게, 동시에 처리해요
→ Partition을 나눠서 여러 개의 데이터를 한꺼번에 처리 가능해요 - 서비스가 커져도 문제 없어요
→ 나중에 쉽게 확장할 수 있어요
✅ 마무리 한줄 요약
Kafka는 엄청난 양의 데이터를 빠르게 모아서, 안전하게 저장하고, 나눠주는 똑똑한 택배 시스템입니다.