1. Kafka 기본 구성 요소

📌 Producer
- 메시지를 생성해서 Kafka 브로커(클러스터)에 전송하는 주체
- 예: 회원가입 이벤트 발생 시 user.signed-up 메시지를 발행
📌 Broker
- Kafka 서버 자체
- Producer가 보낸 메시지를 받아서 토픽(Topic) 에 저장하고 Consumer에게 전달
- 여러 개의 Broker가 모여 클러스터를 구성
📌 Topic
- 메시지가 저장되는 카테고리
- 예: demo.topic, user.signed-up, order.completed
- 토픽은 여러 개의 파티션(Partition) 으로 나눠져서 분산 저장됨
📌 Partition & Offset
- Partition: 토픽을 여러 조각으로 나눈 단위 → 병렬 처리 가능
- Offset: 각 파티션에서 메시지가 기록되는 순번
📌 Consumer
- Kafka 브로커에서 메시지를 가져와 처리하는 주체
- 예: 이메일 서비스가 user.signed-up 메시지를 읽고 환영 메일 발송
📌 Consumer Group
- 여러 Consumer가 협력해서 토픽을 분산 처리하는 구조
- 같은 그룹 안에서는 한 파티션을 동시에 두 Consumer가 처리하지 않음
(출처: Apache Kafka 공식 문서)
https://kafka.apache.org/documentation/#introduction
Apache Kafka
Apache Kafka: A Distributed Streaming Platform.
kafka.apache.org
흐름:
- Producer가 메시지를 특정 Topic에 전송
- Broker는 메시지를 받아서 Partition 단위로 저장
- Consumer Group이 Topic을 구독하고 메시지를 가져옴
- Consumer는 메시지를 처리 (예: DB 저장, 알림 발송 등)
2. 로컬 환경 구성 (Docker Compose)
📌 docker-compose.yml
services:
kafka:
image: bitnami/kafka:latest
ports:
- "29092:29092"
environment:
- KAFKA_CFG_NODE_ID=0
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,PLAINTEXT_HOST://:29092,CONTROLLER://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
- KAFKA_ENABLE_KRAFT=yes
kafka-ui:
image: provectuslabs/kafka-ui:latest
ports:
- "8080:8080"
environment:
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
depends_on:
- kafka
3. 토픽 생성 & 메시지 전송 실습
1) 토픽 생성
Kafka UI → Topics → Create Topic → demo.topic 생성
2) 메시지 보내기 (Producer)
docker compose exec -it kafka /opt/bitnami/kafka/bin/kafka-console-producer.sh --bootstrap-server kafka:9092 --topic demo.topic
hello
kafka
event-driven
3) 메시지 받기 (Consumer)
docker compose exec -it kafka /opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic demo.topic --from-beginning
4. 정리 및 느낀 점
이번 실습을 통해:
- Kafka의 기본 원리와 요소 (Producer, Broker, Topic, Consumer)를 이해하고
- 로컬 환경에서 메시지를 발행하고 소비하는 과정을 직접 경험했습니다.
이 단계만으로도 “내 서비스가 이벤트를 Kafka로 흘려보내고, 다른 서비스가 이를 받아 처리한다”는 그림이 머리에 그려집니다.
'Kafka' 카테고리의 다른 글
| Apache Kafka 공식 문서 보면서 핵심 기능 정리 (0) | 2025.11.10 |
|---|---|
| Kafka로 회원가입 이벤트 처리하기 (0) | 2025.09.04 |
| Kafka 시작하기 (0) | 2025.08.31 |