Kafka
📬 Kafka란?
정의
Apache Kafka는 대용량 이벤트 스트림을 처리하기 위한 분산 메시지 브로커이다. 여러 시스템 사이에서 데이터를 비동기적으로 전달하고, 이벤트를 안전하게 저장하고 소비할 수 있게 해준다.
🧱 주요 개념
| 용어 | 설명 |
|---|---|
| Broker | 메시지를 저장하고 관리하는 서버 |
| Topic | 메시지를 구분하는 논리적 채널 |
| Producer | Topic에 메시지를 보내는 클라이언트 |
| Consumer | Topic에서 메시지를 읽는 클라이언트 |
| Partition | Topic 데이터를 분산 저장하는 단위 |
| Offset | Partition 내 메시지 위치를 나타내는 번호 |
| Consumer Group | 메시지 처리를 분산하기 위한 Consumer 집합 |
포인트
Kafka는 단순 큐가 아니라 이벤트 로그 기반 분산 시스템에 가깝다. 메시지를 저장하고 다시 읽을 수 있다는 점이 일반 큐와 다르다.
🔄 동작 방식
- Producer가 특정 Topic에 메시지를 전송한다.
- Broker가 Topic의 Partition에 메시지를 저장한다.
- Consumer가 Topic을 구독하고 Partition에서 메시지를 읽는다.
- Offset을 기준으로 다음 읽을 위치를 추적한다.
⚡ 주요 특징
- 분산 구조
- 빠른 처리 성능
- 로그 기반 저장
- 대용량 스트림 처리에 적합
- Consumer Group 기반 병렬 처리
🛠️ 활용 예시
- 실시간 로그 수집
- 이벤트 기반 마이크로서비스
- 대용량 메시지 처리
- IoT 데이터 수집
- 비동기 작업 큐
🔍 Kafka를 이해할 때 같이 보면 좋은 개념
- MessageQueue
- 비동기
- Redis
✅ 운영 시 고려할 점
- Partition 설계를 어떻게 할지 확인한다.
- Consumer Group 수를 어떻게 나눌지 고려한다.
- Offset 관리 방식을 정해야 한다.
- 메시지 순서 보장이 필요한지 확인한다.
- 재처리와 중복 처리 가능성을 고려한다.
[!important] 주의 Kafka는 성능이 좋지만 설계가 잘못되면 운영 복잡도가 높아질 수 있다. 파티션, 컨슈머 수, 순서 보장 요구사항을 먼저 정리하는 것이 좋다.
🧾 정리
Kafka는 대규모 이벤트를 안정적으로 전달하고 저장하는 분산 메시지 플랫폼이다. 비동기 처리와 이벤트 기반 시스템에서 특히 강점이 있다.
댓글남기기