Kafka가 MQ를 대체할 수 있을까?

ILJUN YUN·2025년 8월 6일
post-thumbnail

Kafka와 MQ(RabbitMQ, ActiveMQ 등)는 모두 메시징 시스템으로 자주 비교되는 것들 입니다.
Kafka를 공부하던 중 이런 질문이 생겼습니다.

"MQ 대신 Kafka만 써도 되지 않을까?"
"Kafka가 MQ를 완전히 대체할 수 있을까?"


MQ로도 로그 수집 되지 않나요?

Kafka는 로그 수집 시스템에 자주 사용됩니다.
그런데 이런 의문이 들 수 있습니다.

"어차피 중앙에서 로그를 수집할 거면 MQ로도 충분하지 않나?"

맞습니다. MQ도 로그 수집에 사용 가능합니다.
각 서비스가 메시지를 큐로 보내고, 중앙 로그 서버가 소비하면 됩니다.

하지만 Kafka는 다음과 같은 이유로 더 적합합니다.


Kafka가 로그 수집에 더 적합한 이유

1. 고성능 / 수평 확장

  • Kafka는 파티션 기반 구조로 소비자 수를 늘려 수평 확장이 쉬움
  • MQ는 수직 확장 위주, 소비자 수에 제한 있음

2. 여러 소비자가 같은 메시지를 읽을 수 있음

  • MQ는 메시지를 1번 소비하면 삭제됨
  • Kafka는 Consumer Group마다 오프셋을 따로 관리함 → 여러 소비자가 동일 메시지 처리 가능

3. 메시지를 오래 저장하고 다시 읽을 수 있음

  • Kafka는 디스크에 메시지를 일정 기간 저장 가능 (기본 7일, 설정 가능)
  • 장애 발생 시 과거 메시지를 다시 읽어 재처리 가능

그렇다면 Kafka로 MQ를 전부 대체해도 될까?

기술적으로는 대부분 대체 가능하지만, 무조건 Kafka가 더 나은 건 아닙니다.

Kafka가 오버스펙이 되는 상황도 있습니다.


Kafka로 대체 가능한 MQ 용도

용도Kafka 적합성이유
서비스 간 이벤트 전달✅ 적합Kafka의 대표 사용 사례
로그 수집 및 분석✅ 매우 적합대용량 스트리밍 처리
실시간 파이프라인 처리✅ 적합데이터 흐름 처리에 최적화
DB 변경 이벤트 전파 (CDC)✅ 적합Debezium 등과 연동 쉬움
장애 발생 시 재처리✅ 유리오프셋 기반으로 재시도 가능

Kafka로 대체하기 어려운 MQ 용도

용도Kafka 적합성이유
단순 알림 메시지❌ 과함MQ가 더 가볍고 직관적
지연 메시지 / 예약 메시지❌ 불편함MQ는 기본 제공, Kafka는 직접 구현 필요
우선순위 메시지 처리❌ 없음Kafka는 메시지 우선순위 기능 없음
전체 순서 보장❌ 복잡함Kafka는 파티션 내 순서만 보장
트랜잭션 메시징 중심⚠️ 어려움Kafka도 가능하지만 설정과 운영이 복잡함

결론

Kafka는 단순한 MQ가 아닙니다.
대용량 스트리밍 처리와 이벤트 중심 아키텍처에 특화된 플랫폼입니다.

Kafka는 MQ를 대체할 수 있지만,
항상 Kafka가 더 좋은 선택은 아닙니다.


이 글은 GPT와 공부한 내용을 바탕으로 정리했습니다.

profile
한정된 자원으로 더 많은 가치를 제공하려고 노력하는 백엔드 엔지니어입니다.

0개의 댓글