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를 공부하자!