Architecture
Software Architecture
Distributed System
🏗️[Architecture] Message Broker(메시지 브로커)란 무엇일까?
📌 Intro.
- ↘︎ 메시지 브로커(Message Broker)는 서로 다른 시스템, 또는 애플리케이션 간의 메시지(Message)를 안전하게 송수신하도록 중간에서 중개하는 소프트웨어입니다.
- ↘︎ 주로 비동기 통신과 시스템 간의 느슨한 결합(loose coupling)을 보장하는 데 사용됩니다.
1️⃣ 메시지 브로커(Message Broker)의 역할.
- 📌 1. 메시지 전달.
- ↘︎ 생산자(Producer)와 소비자(Consumer) 간의 메시지(Message)를 중간에서 전달합니다.
- 📌 2. 비동기 통신.
- ↘︎ 시스템 간에 실시간으로 응답을 기다리지 않고 독립적으로 작동할 수 있습니다.
- 📌 3. 메시지 큐(Message Queue)
- ↘︎ 메시지를 임시로 저장하여 소비자가 메시지를 처리할 수 있도록 보장합니다.
- 📌 4. 메시지 라우팅(Message Routing)
- ↘︎ 특정 조건이나 규칙에 따라 메시지를 적절한 소비자에게 전달합니다.
- 📌 5. 신뢰성
- ↘︎ 메시지가 손실되지 않도록 저장 및 재전송 기능을 제공합니다.
- 📌 6. 확장성(Scalability)
- ↘︎ 메시지 브로커를 사용하면 시스템이 더 많은 메시지를 처리할 수 있도록 쉽게 확장할 수 있습니다.
2️⃣ 메시지 브로커(Message Broker)의 동작 방식.
-
1. 생산자(Producer):
-
2. 브로커(Broker):
- ↘︎ 메시지를 임시 저장하고, 특정 규칙에 따라 올바른 소비자에게 전달합니다.
-
3. 소비자(Consumer):
- ↘︎ 메시지를 수신하고 해당 메세지를 처리합니다.
-
4. 메시지 큐(Message Queue):
-
5. 메시지 주제(Topic):
- ↘︎ 여러 소비자가 동일한 메시지를 구독(Subscribe)할 수 있습니다.
3️⃣ 메시지 브로커(Message Broker)의 아키텍처.
-
1. 포인트-투-포인트(Point-to-Point,P2P)
- ↘︎ 큐(Queue) 기반의 메시징 모델
- ↘︎ 한 생산자가 한 소비자에게만 메시지를 전달합니다.
- ↘︎ 예시: AWS SQS, RabbitMQ
-
2. 퍼블리시-서브스크라이브(Publish-Subscribe, Pub/Sub)
- ↘︎ 토픽(Topic) 기반의 메시징 모델
- ↘︎ 한 생산자가 여러 소비자에게 메시지를 전달할 수 있습니다.
- ↘︎ 예시: Apache Kafka, AWS SNS
4️⃣ 메시지 브로커의 장점.
-
1. 비동기 처리:
- ↘︎ 생산자와 소비자가 독립적으로 작동합니다.
-
2. 확장성:
- ↘︎ 시스템이 더 많은 트래픽을 처리할 수 있습니다.
-
3. 유연성:
- ↘︎ 서비스 간의 결합도가 낮아져 변경에 유연하게 대응할 수 있습니다.
-
4. 신뢰성:
- ↘︎ 메시지가 손실되지 않고 안전하게 전달됩니다.
-
5. 부하 분산:
- ↘︎ 메시지를 여러 소비자에게 분산하여 처리할 수 있습니다.
5️⃣ 메시지 브로커의 유형.
-
1. RabbitMQ
- ↘︎ 유형 : 메시지 큐(Message Queue)
- ↘︎ 프로토콜 : AMQP (Advanced Message Queuing Protocol)
- ↘︎ 특징 : 경량, 높은 안정성
-
2. Apache Kafka
- ↘︎ 유형 : 이벤트 스트리밍 플랫폼
- ↘︎ 프로토콜 : TCP
- ↘︎ 특징 : 높은 처리량, 실시간 데이터 스트리밍
-
3. AWS SQS (Simple Queue Service)
- ↘︎ 유형 : Managed 메시지 큐
- ↘︎ 특징 : 서버리스, 높은 확장성
-
4. AWS SNS (Simple Notification Service)
- ↘︎ 유형 : 퍼블리시/서브스크라이브 모델
- ↘︎ 특징 : 알림 및 브로드캐스팅
-
5. ActiveMQ
- ↘︎ 유형 : 메시지 브로커
- ↘︎ 프로토콜 : AMQP, MQTT 등 지원
- ↘︎ 특징 : 유연하고 확장 가능
6️⃣ 메시지 브로커의 사용 사례.
-
1. 주문 처리 시스템(Order Processing System)
- ↘︎ 주문이 생성되면 결제 서비스, 재고 서비스, 배송 서비스에 메시지를 전달
-
2. 알림 시스템(Notification System)
- ↘︎ 사용자에게 이메일, SMS, 알림 등을 보낼 때
-
3. 로그 및 모니터링(Log & Monitoring)
- ↘︎ 서버 로그나 사용자 활동 데이터를 실시간으로 처리
-
4. IoT 시스템
- ↘︎ 수많은 IoT 장치로부터 데이터를 수집 및 처리
7️⃣ 메시지 브로커 선택 기준.
-
1. 성능 : 높은 처리량과 낮은 대기 시간
-
2. 확장성 : 대량의 메시지를 처리할 수 있는가
-
3. 신뢰성 : 메시지 손실 방지 기능
-
4. 보안 : 메시지 암호화 및 인증 지원
-
5. 운영 및 관리 : 설정 및 유지보수의 편의성
8️⃣ 메시지 브로커 비교.
브로커 |
유형 |
특징 |
사용사례 |
RabbitMQ |
큐 |
안정적, AMQP 지원 |
금융 거래, 주문 처리 |
Kafka |
스트림 |
높은 처리량, 분산형 |
실시간 데이터 분석 |
AWS SQS |
큐 |
서버리스, 확장성 |
분산 시스템 큐 |
AWS SNS |
토픽 |
알림 서비스 |
이벤트 알림 |
🚀 결론.
- 메시지 브로커(Message Broker)는 시스템 간 데이터 교환을 안전하고 효율적으로 수행하는 중간 역할을 합니다.
-
큐(Queue) 기반과 토픽(Topic) 기반으로 구분됩니다.
- 선택할 때는 성능, 확장성, 신뢰성을 고려해야 합니다.
- 비동기 처리, 분산 시스템, 이벤트 중심 아키텍처 등 다양한 환경에서 널리 사용됩니다.
🔑 핵심 요약.
-
메시지 브로커란 ? : 시스템 간 메시지 전달 중개자
-
유형 : 큐(P2P), 토픽(Pub/Sub)
-
주요 브로커 : RabbitBQ, Kafka, AWS SQS, AWS SNS