소개
RabbitMQ는 Broadcom이 지원하는 오픈소스 메시징 및 스트리밍 브로커로, AMQP 1.0 및 MQTT 5.0과 같은 오픈 표준 프로토콜을 지원합니다. Mozilla Public License 2.0 하에 무료로 제공되며, 기업용 상용 버전도 Tanzu RabbitMQ로 제공됩니다. 분산 마이크로서비스, 실시간 데이터 처리 및 IoT 환경에서 애플리케이션 간 안정적이고 효율적인 통신을 가능하게 합니다. Windows를 포함한 다양한 환경에서 로컬 머신, 온프레미스 또는 클라우드에 배포하여 사용할 수 있습니다.
상세정보
프로토콜 지원 및 호환성
RabbitMQ는 AMQP 1.0과 MQTT 5.0을 포함한 여러 오픈 표준 프로토콜을 네이티브로 지원합니다. 이를 통해 다양한 프로그래밍 언어의 클라이언트 라이브러리와 호환되며, 벤더 락인 없이 유연한 시스템 구축이 가능합니다.
메시지 라우팅 및 유연성
라우팅, 필터링, 스트리밍, 페더레이션 및 샤우들(shovels)과 같은 고급 기능을 통해 메시지가 발행자에서 하나 이상의 소비자로 가는 경로를 정교하게 정의할 수 있습니다.これにより、複雑なイベントドリブンアーキテクチャを構築できます。
신뢰성 및 안정성
메시지 전달 확인(acknowledgment)과 클러스터 내 메시지 복제를 통해 메시지 손실을 방지하고 높은 신뢰성을 보장합니다. 이는 금융 거래나 주문 처리와 같은 중요한 업무에서 필수적입니다.
서비스 디커플링
이메일과 푸시 알림과 같은 두 가지 채널을 통해 사용자에게 알림을 보내야 하는 백엔드 서비스가 있다고 가정해 보겠습니다. 알림 생성 서비스는 두 가지 유형의 알림을 각각 별도의 큐에 발행하고, 이메일 처리 서비스와 푸시 알림 처리 서비스는 각자 관심 있는 큐를 구독하여 메시지가 도착할 때 즉시 처리합니다. 이로 인해 알림 발신 서비스는 알림 처리 로직과 분리되어 독립적으로 확장 및 유지보수가 가능해집니다.
원격 프로시저 호출(RPC)
콘서트 hall의 티켓 판매 시스템처럼, 여러 채널(웹사이트, 키오스크)에서 주문이 들어오고 즉시 처리 결과를 반환해야 하는 경우, RabbitMQ를 사용해 RPC 패턴을 구현할 수 있습니다. 주문 서비스는 요청과 상관 ID를 포함한 메시지를 큐에 발행하고, 처리 서비스는 해당 메시지를 소비한 후 결과를 상관 ID와 함께 다른 큐에 응답으로 보냅니다. 요청 서비스는 응답 큐를 구독해 상관 ID가 일치하는 메시지를 기다림으로써 낮은 지연 시간으로 결과를 받을 수 있습니다.
실시간 스트리밍 처리
비디오 플랫폼에서 사용자가 새 영상을 업로드했을 때, 메타데이터 추출, 저해상도 트랜스코딩, 알림 발행과 같은 여러 비동기 작업을 트리거해야 할 때 유용합니다. 업로드 서비스는 ‘New video’ 이벤트를 RabbitMQ 스트림에 추가하고, 여러 백엔드 애플리케이션이 이 스트림을 독립적으로 구독하여 각각의 작업을 수행합니다. 스트림은 메시지 중복 없이 효율적으로 데이터를 전달하며, 소비자는 필요 시 스트림 내에서 앞뒤로 이동하여 이력을 재처리할 수 있습니다.
IoT 디바이스 연결
우주 간 배송 서비스처럼 네트워크 연결이 불안정한 환경에서 디바이스가 주기적으로 상태를 보고해야 하는 경우, 각 디바이스에 로컬 RabbitMQ 노드를 설치하여 네트워크가 단절되더라도 메시지를 로컬에 버퍼링할 수 있습니다. 연결이 복구되면 샤우들 또는 페더레이션 기능을 통해 버퍼링된 메시지를 업스트림 서버로 전송할 수 있습니다. 이는 간헐적인 연결 환경에서도 데이터 손실 없이 신뢰성 있는 통신을 가능하게 합니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


