메시지 브로커
Message
하나의 데이터 단위로 어떤 작업을 요청하고 정보를 전달하기 위해 사용하는 것이다. '하나의 작업 요청' 또는 '명령' 이라고 볼 수 있다.
Producer, Consumer
- Producer : 메시지를 생성해서 브로커(큐)에 보내는 주체
- Consumer : 큐에서 메시지를 꺼내서 작업을 수행하는 주체
Message Queue
- 메시지가 일시적으로 저장되는 대기열
메시지를 일시적으로 저장해 두는 대기열이다. 비동기 처리, 작업 분산, 장애 대응을 위해 사용한다. Queue이므로 FIFO 방식으로 처리되고, 메시지는 처리되면 큐에서 제거된다. 메시지를 큐에 저장하는 것을 큐잉(Queueing) 이라고 한다. 주로 Producer → Queue → Consumer 방식의 패턴을 갖는다.
Message Broker
- 큐에서 메시지를 꺼내서 작업을 수행하는 주체
메시지를 중간에서 받아서 큐로 전달하고, Comsumer가 꺼내가도록 중개하는 시스템이다. 라우팅, 큐잉, 재시도, 오류 처리 등의 기능이 있고, 한 번만 Consume하여 신뢰성이 있다. 대표적으로는 RabbitMQ, ActiveMQ, Amazon SQS가 있다.
이벤트 브로커
Event
어떤 시스템 내에서 발생한 사실을 알리는 데이터이다. 즉, ‘무엇을 해라’ 가 아닌 ‘무엇이 일어났다’ 라는 사실을 담게 된다.
일회성 정보, 로그, 알림 등에서 사용된다.
Publisher, Subscriber
- Publisher : 이벤트를 생성하고 발행하는 주체
- Subscriber : 특정 이벤트를 구독하고 처리하는 주체
Topic
- 이벤트를 주제별로 구분해 저장하는 공간
이벤트 브로커
- 이벤트를 수신/저장하고 구독자에게 전달하는 시스템
이벤트들을 수집하고, 관심있는 Subscriber들에게 전달하는 시스템이다. Publisher/Subscriber 구조로 기능하고 하나의 주제(topic)에 저장되고 이를 구독하는 여러 구독자가 해당 topic에서의 이벤트를 볼 수 있다. 로그처럼 저장되므로 과거 이벤트에 대해 재처리가 가능하다.
“꺼내서 읽는다”가 아닌 단순히 “읽는다” 라는 개념이다. 대표적으로는 Kafka, Pulsar, Redis Streams, AWS EventBridge 가 있다.
메시지 브로커 🆚 이벤트 브로커
항목 | Message Broker | Event Broker |
---|---|---|
목적 | 작업 요청/처리 | 상태 변경 전파 |
패턴 | Producer → Queue → Comsumer | Publisher → Topic → Subscriber |
소비자 수 | 보통 1명이 1회 소비 (1:1) | 여러 명이 가능(1:N) |
저장 방식 | 처리되면 큐에서 삭제 | 오래 저장, 재처리 가능 |
신뢰성 포커스 | 작업 처리 보장 | 이벤트 전파, 스트리밍 |
대표 시스템 | RabbitMQ, SQS | Kafka, Pulsar |