-
MSA 메시지 브로커 - Kafka와 RabbitMQ 비교CheckFact/가까이서 본 기술 2025. 4. 8. 13:13
MSA 메시지 브로커 솔루션 비교와 선정 가이드
Figure from: https://medium.com System Design Series: Message Queues (Kafka, RabbitMQ) Kafka와 RabbitMQ의 장단점 및 적용 사례
Kafka
장점:
- 확장성: 파티셔닝을 통해 수평 확장이 용이하며, 대규모 데이터 처리에 적합[1][4].
- 고성능: 초당 수백만 건의 메시지를 처리할 수 있어 대량 데이터 스트리밍에 유리[3][7].
- 내구성: 메시지를 로그에 저장해 보존 기간 동안 재처리 가능. 이벤트 소싱 및 재생 지원[1][6].
- 이벤트 기반 아키텍처: 서비스 간 느슨한 결합을 지원하며 독립적인 동작 가능[4][7].
단점:
- 복잡한 설정: 초기 설정과 운영이 상대적으로 어렵고, 학습 곡선이 높음[3][4].
- 지연 시간: 실시간 메시지 전달에는 다소 부적합할 수 있음[6].
적용 사례:
- 대규모 데이터 스트리밍: 로그 분석, 실시간 모니터링, 데이터 파이프라인 구축[5][7].
- 이벤트 소싱: 주문 처리 시스템 등 상태 복구가 중요한 시스템[1][6].
RabbitMQ
장점:
- 유연성: 다양한 메시징 패턴(Pub/Sub, Point-to-Point 등)과 복잡한 라우팅 지원[1][4].
- 낮은 지연 시간: 실시간 메시지 전달과 우선순위 지정 가능[3][7].
- 간편한 설정: 상대적으로 쉬운 설치 및 사용법으로 빠른 시작 가능[1][6].
- 다양한 프로토콜 지원: MQTT, AMQP 등 여러 프로토콜과 호환 가능[7].
단점:
- 확장성 제한: 대규모 트래픽 처리에는 다중 브로커 구성이 필요하며 성능 저하 가능성 있음[1][3].
- 메시지 보존 한계: 메시지 보존 기간이 짧아 재처리에 제약이 있음[6].
적용 사례:
- 실시간 데이터 처리: 금융 서비스, IoT 애플리케이션 등 안정적인 메시지 전달이 중요한 시스템[5][7].
- 복잡한 라우팅 시나리오: 주문 이벤트를 지역별 창고로 라우팅하는 시스템 등[1][5].
특성을 고려한 선택 가이드
요구사항 Kafka RabbitMQ 대규모 데이터 스트리밍 처리 ✔ (적합) ✘ (부적합) 복잡한 라우팅 필요 ✘ (외부 시스템 필요) ✔ (내장된 교환기 지원) 이벤트 소싱 및 재생 ✔ (내장 지원) ✘ (외부 시스템 필요) 실시간 메시지 전달 ✘ (약간의 지연 발생 가능) ✔ (낮은 지연 시간) 쉬운 설정 및 빠른 시작 ✘ (상대적으로 복잡함) ✔ (설치 및 설정 간단) Kafka는 대규모 데이터 스트리밍 및 이벤트 소싱에 적합하며, RabbitMQ는 실시간 처리와 복잡한 라우팅 요구사항에 유리합니다. 시스템 요구사항에 따라 선택하는 것이 중요합니다.
- Kafka는 복잡한 라우팅 기능이 없지만, 이를 컨슈머 애플리케이션이나 외부 스트림 처리 도구(Kafka Streams 등)를 통해 구현할 수 있습니다.
- RabbitMQ는 기본적으로 이벤트 소싱과 재생 기능을 제공하지 않으므로 외부 로그 저장소를 활용하거나 Kafka를 병행 사용하는 것이 대안이 될 수 있습니다.
- 두 솔루션 모두 장단점이 명확하므로 시스템 요구사항에 따라 적절히 선택하거나 혼합해서 사용하는 전략이 중요합니다.
25.04.08.
AUDITORIS
Citations:
[1] https://www.msap.ai/docs/msa-expert-from-concepts-to-practice/part-1-msa-fundamentals/chapter-2-core-concepts-of-msa/section-2-4-api-based-communication/subsection-2-4-3-asynchronous-messaging-kafka-rabbitmq/
[2] https://www.codenary.co.kr/techstack/detail/rabbitmq
[3] https://velog.io/@xav/24.06.22-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC-RabbitMQ-vs-Apache-Kafka
[4] https://yay-dev.tistory.com/157
[5] https://appmaster.io/ko/blog/mesiji-daegiyeol-bunsan-siseutem-rabbitmq-apache-kafka
[6] https://escapefromcoding.tistory.com/705
[7] https://aws.amazon.com/ko/compare/the-difference-between-rabbitmq-and-kafka/
[8] https://colevelup.tistory.com/16728x90'CheckFact > 가까이서 본 기술' 카테고리의 다른 글
블록체인 기반 DID 신원인증 시스템: 점검 체크리스트 (0) 2025.04.15 마이크로 서비스 설계 패턴 - 3계층 패턴, 2아키텍처 (0) 2025.04.02 Context Map에서 관계를 명시하는 방법 (0) 2025.04.02