📡

Publish-Subscribe

메시지 브로커를 통한 비동기 통신

Pub/Sub 패턴에서 발행자와 구독자는 서로를 직접 알지 못합니다. 메시지 브로커(중간 계층)가 메시지를 관리하며, 토픽 기반으로 메시지를 분배합니다.

구조 다이어그램

📝
Publisher
메시지 발행자
① 발행
📡
Message Broker
토픽 관리 + 메시지 분배
Topic A Topic B
② 분배
📥
Subscriber A
📥
Subscriber B
📥
Subscriber C
흐름 설명
  1. 구독자가 관심 토픽을 브로커에 등록 (구독)
  2. 발행자가 메시지를 특정 토픽으로 발행
  3. 브로커가 해당 토픽의 모든 구독자에게 메시지 분배
  4. 각 구독자가 독립적으로 메시지 처리

동작 흐름

1

구독자가 메시지 브로커의 특정 토픽을 구독

2

발행자가 메시지를 특정 토픽으로 발행

3

메시지 브로커가 해당 토픽의 모든 구독자에게 메시지 분배

4

각 구독자가 독립적으로 메시지 처리

장점

  • 발행자-구독자 간 느슨한 결합
  • 확장성 뛰어남
  • 비동기 처리 가능
  • 다수의 구독자에게 동시 전달

단점

  • 메시지 브로커 의존
  • 메시지 순서 보장 복잡
  • 디버깅 어려움
  • 메시지 유실 가능성

사용 사례

Redis Pub/Sub Apache Kafka AWS SNS/SQS Google Cloud Pub/Sub RabbitMQ