Home > Architecture > ๐Ÿ—๏ธ[Architecture] Message Broker(๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค)๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๐Ÿ—๏ธ[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