Home
>
Architecture
>
๐๏ธ[Architecture] Message Broker(๋ฉ์์ง ๋ธ๋ก์ปค)๋ ๋ฌด์์ผ๊น?
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