ETC

Kafka VS RabbitMQ

구로모논 2025. 4. 21. 17:51

시작

회사에서 로그 시스템을 개발을 해야하는데, 메시지 브로커를 사용하려고 한다.

후보군은 RabbitMQ와 Kafka인데, 뭐가 적절한지 몰라서 알아보려고 한다.

처음에는 둘 다 비슷하지 않을까 했는데, 돌아가는 구조가 약간은 다른 것 같다.

 

1. 메시지 브로커란?

말 그대로 메시지를 중계해주는 역할.
서비스끼리 서로 실시간으로 호출 안 하고, 메시지를 던져주면 알아서 꺼내서 쓰는 흐름.

 

2. Kafka vs RabbitMQ 간단 비교

  Kafka RabbitMQ
구조 로그 기반 큐 기반
메시지 전달 Consumer가 가져감 (Pull) Consumer에게 보냄 (Push)
특징 대용량 로그 스트리밍 복잡한 메시지 라우팅

일단, Kafka는 진짜 ‘로그 저장소’ 느낌이고,
RabbitMQ는 ‘전통적인 큐 시스템’에 가깝다.

 

3. 언제 사용하면 좋을까?

Kafka:

  • 초당 메시지 수만 건씩 들어오는 경우.
  • 메시지를 여러 시스템이 동시에 봐야 하는 경우.
  • “이벤트 자체”를 저장하는 경우.

RabbitMQ:

  • 처리량은 많지 않지만 빠르게 응답이 필요한 경우.
  • 메시지 조건에 따라 다르게 라우팅하고 싶은 경우.

 

4. 둘의 핵심 차이

🧲 메시지를 어떻게 전달하느냐

  • Kafka는 Consumer가 메시지를 직접 ‘가져감’.
  • RabbitMQ는 메시지가 오면 알아서 ‘보내줌’.

💾 메시지 저장은?

  • Kafka는 아예 ‘디스크에 저장’을 기본으로 생각함.
  • RabbitMQ는 일단 메모리에 있고, 옵션으로 디스크 저장 가능.

🔁 순서 보장은?

  • Kafka는 파티션 단위로 메시지 순서를 강하게 보장.
  • RabbitMQ는 기본적으로 FIFO지만, 복잡한 구조 되면 순서 꼬일 수도 있음.

5. 장단점

Kafka

장점

  • 대용량에 강함.
  • 메시지 오래 보관 가능.
  • 재처리도 가능해서 데이터 유실 걱정 적음.

단점

  • 세팅이 까다로움.
  • 실시간성이 약간 떨어질 수도 있음.

RabbitMQ

장점

  • 빠르게 바로바로 전달.
  • 설정과 운영이 간단.
  • 다양한 라우팅 방식으로 유연하게 짤 수 있음.

단점

  • 대량 데이터에는 한계.
  • 메시지 재처리 로직 짜려면 좀 복잡함.

 

6. 나는 언제 뭘 쓸까?

로그성 데이터가 계속 들어옴 Kafka
실시간으로 처리하고 응답하고 싶음 RabbitMQ
같은 메시지를 여러 서비스가 봐야 함 Kafka
메시지 조건별로 큐 다르게 보내고 싶음 RabbitMQ

 

 

7. 마무리

Kafka랑 RabbitMQ를 비교해봤는데, 아직은 잘 모르겠으나 데이터 유실이 적다고 하는 Kafka를 사용하는 것이 나아 보인다.

Kafka를 공부하자!