๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ”ฌweb application/- System architecture

[Event-Driven-Architecture] Message Oriented Middleware๊ณผ Message Broker์˜ ์ฐจ์ด ๋ฐ ์›๋ฆฌ

by Wonit 2021. 5. 19.

๋ชฉ์ฐจ

  • ๋ฏธ๋“ค์›จ์–ด๋ž€?
  • MOM ์ด๋ž€?
    • MOM ๊ตฌ์„ฑ์š”์†Œ
    • MOM vs without MOM
    • Messaging ์˜ 2๊ฐ€์ง€ ๋ฐฉ์‹
      • PTP Messaging
      • Pub/Sub Messaging
  • Message Broker
    • ๋Œ€ํ‘œ์ ์ธ MOM ์†”๋ฃจ์…˜

์˜ค๋Š˜์€ ์š”์ฆ˜ ๋งŽ์€ ๋ถ„์•ผ์—์„œ ์ฑ„ํƒ๋˜์–ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” Message Oriented Middleware ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.

 

Message Oriented Middleware, MOM ์ด๋ž€ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋‚˜ ์†”๋ฃจ์…˜ ๋ณด๋‹ค๋Š” ๋” ์ƒ์œ„ ๊ฐœ๋…์œผ๋กœ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ด๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์— ํ•ด๋‹นํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

๋ฌผ๋ก  MOM์„ ์œ„ํ‚คํ”ผ๋””์•„์—์„œ๋Š” ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ผ๊ณ  ๋ถ€๋ฅด์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์กฐ๊ธˆ ๋” ํฐ ๊ฐœ๋…์—์„œ ์ดํ•ดํ•ด๋ณด์ž.

 

์ด๋Ÿฐ MOM ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  Middleware์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์„ ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

 

๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

Middleware, ๋ฏธ๋“ค์›จ์–ด ๋ž€?

๋ฏธ๋“ค์›จ์–ด๋Š” ๋‹จ์–ด ๋œป ๊ทธ๋Œ€๋กœ ์ค‘๊ฐ„์— ์กด์žฌํ•˜๋Š” ์ œํ’ˆ์„ ์˜๋ฏธํ•œ๋‹ค.

 

๋ฏธ๋“ค์›จ์–ด๋Š” ์ฒ˜์Œ ๋“ค์–ด๋ณด์•˜์„ ์ˆ˜๋„ ์žˆ๊ณ  ์ด๋ฏธ ์ต์ˆ™ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•ด๋ณด์•˜๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ์˜ ์˜์†์„ฑ์„ ๊ด€๋ฆฌํ–ˆ์„ ๊ฒƒ์ด๋‹ค.

 

์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ODBC, JDBC ๋“ฑ๋“ฑ ์ด ๋ฐ”๋กœ ๋ฏธ๋“ค์›จ์–ด์˜ ํ•œ ์ข…๋ฅ˜๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒค๋”์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์›๊ฒฉ์œผ๋กœ DB์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฏธ๋“ค์›จ์–ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๋ฏธ๋“ค์›จ์–ด๋Š” ์•ž์—์„œ ์ด์•ผ๊ธฐํ–ˆ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ JDBC๊ฐ€ ์žˆ๋‹ค.

 

Java๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด์ž.

 

์šฐ๋ฆฌ๋Š” JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด์„œ ํ˜น์€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด์„œ SQL์„ ์ง์ ‘ ํ˜น์€ ๊ฐ„์ ‘์ ์œผ๋กœ (๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ) ์งœ๋”๋ผ๋„ JDBC Template ์ด ์•Œ์•„์„œ DB์— ๋งž๊ฒŒ ๋ณ€ํ™˜์„ ์‹œ์ผœ์ฃผ๋Š”๋ฐ, ์ด ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ๋ฏธ๋“ค์›จ์–ด์ธ JDBC ์ด๋‹ค.

 

 

์šฐ๋ฆฌ๋Š” ์‹ค์ œ SQL ์— ๊ด€๋ จ๋œ ์„ธํŒ…์„ ์ง์ ‘ ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์–ด๋Š์ •๋„ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์ด๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ์–ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ผ๋‹จ ์ด ๋ฏธ๋“ค์›จ์–ด์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์šฐ๋ฆฌ๋ผ๋ฆฌ ์ •์˜๋ฅผ ํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž

 

๋ฏธ๋“ค์›จ์–ด๋Š” ์†Œํ”„ํŠธ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์ด์˜ ์ค‘๊ฐ„์— ์œ„์น˜ํ•ด์„œ ์ด ๋‘˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ์กฐ์ •๊ณผ ์ค‘๊ฐœ๋ฅผ ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋‹ค!

Message Oriented Middleware, MOM ์ด๋ž€?

 

๋ฉ”์‹œ์ง€ ๊ธฐ๋ฐ˜ ๋ฏธ๋“ค์›จ์–ด, Message Oriented Middleware๋Š” ๋ฏธ๋“ค์›จ์–ด ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜๋กœ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ์— ๊ธฐ์ดˆํ•œ ๋ฏธ๋“ค์›จ์–ด์ด๋‹ค.

 

MOM์€ ๋Œ€๋ถ€๋ถ„ Message Queue ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋ฉฐ Microservice์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

 

๋ชจ๋“  MOM์ด Message Queue ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” MOM ์†”๋ฃจ์…˜์ธ RabbitMQ๋‚˜ Kafka๊ฐ€ Message queue๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋‹ค๋ฅธ MOM ์—์„œ๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ํ˜•์‹์ด๋‚˜ ๋ฉ€ํ‹ฐ ์บ์ŠคํŠธ ํ˜•์‹์˜ ๋ฉ”์‹œ์ง€ ์‹œ์Šคํ…œ๋„ ์žˆ๋‹ค.

MOM ๊ตฌ์„ฑ ์š”์†Œ

MOM์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ด 4๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  1. ๋ฐ์ดํ„ฐ์— ํ•ด๋‹นํ•˜๋Š” ๋ฉ”์‹œ์ง€
  2. ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” Sender, ๋ฐœ์‹ ์ž
  3. ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š” Receiver, ์ˆ˜์‹ ์ž
  4. ๋ฉ”์‹œ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์‹œ์ง€ Provider ๋ฉ”์‹œ์ง€ ์ œ๊ณต์ž

 

Sender์™€ Receiver๋Š” ๊ฐ๊ฐ ๋ฉ”์‹œ์ง€๋ฅผ ์†ก, ์ˆ˜์‹ ํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ๋œ๋‹ค.

 

์ด๋“ค์€ ์ง์ ‘์ ์œผ๋กœ Provider์ธ MOM์— ์—ฐ๊ฒฐ๋˜์–ด ๊ฐ๊ฐ์˜ ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์†ก์‹  ์ฃผ์ฒด์—๊ฒŒ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ Provider๊ฐ€ ์ง€์ •ํ•œ destination ์— ์ €์žฅํ•ด์„œ ์š”์ฒญ์ด ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ๋ณด๊ด€ํ•˜๊ฒŒ ๋œ๋‹ค.

MOM vs without MOM

๋งŒ์•ฝ MOM์ด ์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

 

์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์—์„œ MOM์˜ ํ•„์š”์„ฑ์€ ํฌ๊ฒŒ ๋‘๋“œ๋Ÿฌ์ง€์ง€ ์•Š์ง€๋งŒ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๊ทธ ์กด์žฌ๊ฐ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ณดํ†ต ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ™•์žฅ์ด ๋˜๋ฉด ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ฐ ๋ฐ์ดํ„ฐ์˜ ๋™๊ธฐํ™”์— ๋Œ€ํ•œ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ  ํ•ด๋‹น ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์˜€์„ ๋•Œ, ๋™์ผํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„ ๋ฌด๊ฒฐํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง„๋‹ค.

 

์ž์„ธํ•œ ์ด์•ผ๊ธฐ๋Š” MSA์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ - Message Queueing์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

MOM์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹

 

MOM์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์—๋Š” ํฌ๊ฒŒ 2 ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค.

  1. Point To Point Messaging
  2. Publish-Subscribe Messaging

Point To Point Messaging

์ง€์  ๊ฐ„ ๋ฉ”์‹œ์ง• ์ด๋ผ๊ณ  ํ•˜๋Š” Point-To-Point ๋ฉ”์‹œ์ง• ๋ชจ๋ธ์€ ์œ„์—์„œ ๋ดค๋˜ ๊ทธ๋ฆผ์„ ๊ทธ๋Œ€๋กœ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

 

 

๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ƒ์„ฑ์ž(sender)๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฉ”์‹œ์ง€ ํ๋กœ ์ „์†กํ•œ๋‹ค.

 

๋ฉ”์‹œ์ง€ ํ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ์ˆ˜์‹ ์ž(receiver)๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ์ „ ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜์—ฌ ์ˆ˜์‹ ์ž์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค.

Publish-Subscribe Messaging

 

๊ฒŒ์‹œ-๊ตฌ๋… ๋ฉ”์‹œ์ง€๋ผ๊ณ  ํ•˜๋Š” Pub/Sub Messaging ๋ชจ๋ธ์€ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์‚ฐํ•˜๋Š” ๊ฒŒ์‹œ์ž (publisher)์™€ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๊ตฌ๋…์ž (subscriber)๋ผ๊ณ  ํ•˜๋ฉฐ, ๋‘˜ ๊ฐ„์˜ ๋ฉ”์‹œ์ง€ ๊ตํ™˜์„ ์œ„ํ•ด ํ† ํ”ฝ (topic)์„ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

๊ฒŒ์‹œ์ž๊ฐ€ ํ† ํ”ฝ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ตฌ๋…์ž๋Š” ๊ตฌ๋… ์ค‘์ธ ํ† ํ”ฝ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ๋ชจ๋ธ์ด๋‹ค.

 

์ง€์  ๊ฐ„ ๋ฉ”์‹œ์ง•๊ณผ ๋Œ€๋น„๋˜๋Š” ๊ฐœ๋…์€ ๋ฐ”๋กœ ๊ตฌ๋… ์ค‘์ธ ๋ชจ๋“  ์ˆ˜์‹ ์ž๊ฐ€ ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉํ•  ์ˆ˜์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

Message Broker ๋ž€?

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” MOM๊ณผ ๋Œ€์กฐ๋˜๋Š” ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ MOM ๋‚ด์— ์กด์žฌํ•˜๋Š” Message Provider ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

Message Provider๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€์— ๋”ฐ๋ผ์„œ Broker์˜ ์ŠคํŽ™๊ณผ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง€๋ฉฐ ์•ž์—์„œ ๋ณธ 2๊ฐ€์ง€ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ฐฉ์‹์ด ๋ฐ”๋กœ Message Broker ์— ๋Œ€ํ•œ ์ „๋‹ฌ ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

IBM ์—์„œ๋Š” Message Broker๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

 

Message brokers are an inter-application communication technology to help build a common integration mechanism to support cloud native, microservices-based, serverless and hybrid cloud architectures.

๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(Message Broker)๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜, ์„œ๋ฒ„๋ฆฌ์Šค ๋ฐ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํด๋ผ์šฐ๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€์›ํ•˜๋Š” ๊ณตํ†ต ํ†ตํ•ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ํ†ต์‹  ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

 

Message Broker ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์†ก์‹ ์ž์™€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š” ์ˆ˜์‹ ์ž์— ์˜ํ•ด์„œ ๋™์ž‘ํ•˜๊ฒŒ ๋˜๋ฉฐ, ์†ก์‹ ์ž๊ฐ€ Message Queue์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฐจ๋ก€๋กœ ๋„ฃ์œผ๋ฉด ์ˆ˜์‹ ์ž๊ฐ€ ํ•ด๋‹น Message๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ด์šฉํ•˜๊ฒŒ ๋˜๋Š” Store-And-Forward ๋ฐฉ์‹์ด๋‹ค.

 

๋Œ€ํ‘œ์ ์ธ Message Broker ์†”๋ฃจ์…˜

์šฐ๋ฆฌ๋Š” ์ด Message Broker๋ฅผ ์ด์šฉํ•ด์„œ MOM์„ ๊ตฌ์ถ•ํ•˜๊ฒŒ ๋  ๊ฒƒ์ธ๋ฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๊ฐ€ ์กด์žฌํ•œ๋‹ค

  • AWS์˜ Simple Queue Servier, SQS
  • Apache์˜ Kafka
  • Mozila์˜ RabbitMQ

๋Œ“๊ธ€