Kafka와 MQ(RabbitMQ, ActiveMQ 등)는 모두 메시징 시스템으로 자주 비교되는 것들 입니다.
Kafka를 공부하던 중 이런 질문이 생겼습니다.
"MQ 대신 Kafka만 써도 되지 않을까?"
"Kafka가 MQ를 완전히 대체할 수 있을까?"
Kafka는 로그 수집 시스템에 자주 사용됩니다.
그런데 이런 의문이 들 수 있습니다.
"어차피 중앙에서 로그를 수집할 거면 MQ로도 충분하지 않나?"
맞습니다. MQ도 로그 수집에 사용 가능합니다.
각 서비스가 메시지를 큐로 보내고, 중앙 로그 서버가 소비하면 됩니다.
하지만 Kafka는 다음과 같은 이유로 더 적합합니다.
기술적으로는 대부분 대체 가능하지만, 무조건 Kafka가 더 나은 건 아닙니다.
Kafka가 오버스펙이 되는 상황도 있습니다.
| 용도 | Kafka 적합성 | 이유 |
|---|---|---|
| 서비스 간 이벤트 전달 | ✅ 적합 | Kafka의 대표 사용 사례 |
| 로그 수집 및 분석 | ✅ 매우 적합 | 대용량 스트리밍 처리 |
| 실시간 파이프라인 처리 | ✅ 적합 | 데이터 흐름 처리에 최적화 |
| DB 변경 이벤트 전파 (CDC) | ✅ 적합 | Debezium 등과 연동 쉬움 |
| 장애 발생 시 재처리 | ✅ 유리 | 오프셋 기반으로 재시도 가능 |
| 용도 | Kafka 적합성 | 이유 |
|---|---|---|
| 단순 알림 메시지 | ❌ 과함 | MQ가 더 가볍고 직관적 |
| 지연 메시지 / 예약 메시지 | ❌ 불편함 | MQ는 기본 제공, Kafka는 직접 구현 필요 |
| 우선순위 메시지 처리 | ❌ 없음 | Kafka는 메시지 우선순위 기능 없음 |
| 전체 순서 보장 | ❌ 복잡함 | Kafka는 파티션 내 순서만 보장 |
| 트랜잭션 메시징 중심 | ⚠️ 어려움 | Kafka도 가능하지만 설정과 운영이 복잡함 |
Kafka는 단순한 MQ가 아닙니다.
대용량 스트리밍 처리와 이벤트 중심 아키텍처에 특화된 플랫폼입니다.
Kafka는 MQ를 대체할 수 있지만,
항상 Kafka가 더 좋은 선택은 아닙니다.
이 글은 GPT와 공부한 내용을 바탕으로 정리했습니다.