Choosing the Right MessageBroker

์›๋ณธ ๋งํฌ(https://medium.com/@PubNub/kafka-vs-rabbitmq-choosing-the-right-messaging-broker-78ca02530e63)

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ MSA ์„œ๋น„์Šค ๋‚ด์—์„œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ api ํ†ต์‹ ๋„ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒฝ์šฐ๋„ ๋‹ค๋ฐ˜์‚ฌํ•˜๊ฒŒ ์ผ์–ด๋‚œ๋‹ค

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค๋Š” ํฌ๊ฒŒ RabbitMQ ์™€ Kafka 2๊ฐœ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค๋“ค์€ ์žฅ๋‹จ์ ๋“ค์ด ์กด์žฌํ•˜๊ณ  ํŠน์ • ์ƒํ™ฉ์— ์•Œ๋งž๊ฒŒ ์ ์šฉํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๊ตฌ์กฐ

Kafka

์นดํ”„์นด๋Š” ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰, ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์œผ๋กœ ์œ ๋ช…ํ•˜๊ณ , topic ์— ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  - topic ์„ ๊ตฌ๋…ํ•˜์—ฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์ด๋ฅผ pub-sub ๋ชจ๋ธ์ด๋ผ๊ณ  ์ด์•ผ๊ธฐํ•œ๋‹ค ์นดํ”„์นด์—๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋ถ„์‚ฐ ์ปค๋ฐ‹ ๋กœ๊ทธ์— ์ €์žฅํ•จ์œผ๋กœ์จ ๋†’์€ ํ™•์žฅ์„ฑ๊ณผ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด์„œ ๋†’์€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Ÿ‰๊ณผ ๋ฉ”์„ธ์ง€ ์žฌ์ƒ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ์ด๋ฒคํŠธ ์†Œ์‹ฑ(object ์˜ ๋ชจ๋“  ์ƒํƒœ์˜ ๋ณ€ํ™”๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ์‹)์— ์ ํ•ฉํ•˜๋‹ค

์นดํ”„์นด์˜ ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ 3๊ฐœ๋กœ ๋‚˜๋‰œ๋‹ค - producers, broker, consumers producers ๋Š” ์นดํ”„์นด์˜ topic ์— ๋ฉ”์ œ์‹œ๋ฅผ ๋ฐœ์ƒ broker ๋Š” ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์กฐ ๋‚ด์—์„œ ๋ฉ”์„ธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ consumers ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ topic ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๊ฐ€๋Š”๋ฐ ์ด ๋•Œ ํ™•์žฅ์„ฑ๋„ ์ œ๊ณตํ•˜๊ณ  ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋„ ๊ฐ€๋Šฅ

RabbitMQ

RabbitMQ ๋Š” AMQP(Advanced Message Queue Protocol) ์„ ์ƒ์†๋ฐ›์€ ์˜คํ”ˆ์†Œ์Šค ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค์ด๋‹ค ์ด๋Š” ์ „ํ†ต์ ์ธ ๋ฉ”์„ธ์ง€ ํ์˜ ๋ชจ๋ธ์ด๊ณ  ์„œ๋น„์Šค๋“ค๋กœ ํ•˜์—ฌ๊ธˆ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ์ •ํ•ด์ง„ consumer ์—๊ฒŒ ๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ๋ณด์œ  ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์€ ๋ฉ”์„ธ์ง€์˜ ์ˆœ์„œ ์ง€์ • ๋ฐ ๋ฉ”์„ธ์ง€ ๋ผ์šฐํŒ…์˜ ์œ ์—ฐ์„ฑ์„ ๋†’ํž˜์œผ๋กœ์จ MSA ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค

RabbitMQ ์˜ ๊ตฌ์กฐ๋Š” producer ์™€ consumer ์‚ฌ์ด์—์„œ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ํ•˜๋Š” ์ค‘์•™ ๋ฉ”์„ธ์ง€ ์ค‘๊ฐœ์ž๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋จ producer ๊ฐ€ ์ค‘๊ฐœ์ž์—๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ์ค‘๊ฐœ์ž๋Š” ์ง€์ •๋œ ๊ทœ์น™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”์„ธ์ง€๋ฅผ ๋Œ€๊ธฐ์—ด์— ๋„ฃ์–ด์ฃผ๊ณ  consumer ๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋Œ€๊ธฐ์—ด์—์„œ ๊ฒ€์ƒ‰ํ•ด์„œ ๊บผ๋‚ด๊ฐ„๋‹ค

์„ฑ๋Šฅ

Kafka

์ฒ˜๋ฆฌ์œจ์ด ๋†’๊ณ  ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ ์ ˆํ•˜๊ณ  ๋†’์€ ํ™•์žฅ๊ณผ ๋‚ฎ์€ ์ง€์—ฐ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ํŠน์ง• ์ดˆ๋‹น ์ˆ˜๋ฐฑ๋งŒ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด ๋น ๋ฅด๊ณ  ์ง€์†์ ์ธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ๋ก€์— ์ ํ•ฉํ•˜๋‹ค ๋˜ํ•œ ์—ฌ๋Ÿฌ broker ์—๊ฒŒ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋ถ„์‚ฐํ•˜์—ฌ ์ˆ˜ํ‰์  ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๋””์Šค์— ์ €์žฅํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ

RabbitMQ

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

์‚ฌ์šฉ ์‚ฌ๋ก€

Kafka

  • ๋‹ค์–‘ํ•œ ์ผ€์ด์Šค์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  • ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ๋ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

  • ์ด๋ฒคํŠธ ์†Œ์‹ฑ, ๋กœ๊ทธ ์ˆ˜์ง‘ ๋ฐ ์ง‘๊ณ„

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”์„ธ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ๊ฐ€๋Šฅ

RabbitMQ

  • MSA ์‚ฌ์ด์˜ ๋น„๋™๊ธฐ์  ํ†ต์‹ 

  • ๋ฉ”์„ธ์ง€์˜ ์šฐ์„ ์ˆœ์œ„ ๋ฐ ํŠน์ • ๋ณต์žกํ•œ ๋ผ์šฐํŒ…์„ ์š”๊ตฌํ•˜์—ฌ ์‹ ๋ขฐ๊ฐ€๋Šฅํ•œ ๋ฉ”์„ธ์ง€๋ฅผ ์ „๋‹ฌ

๊ทธ๋ž˜์„œ ๋ญ˜ ์‚ฌ์šฉํ•˜๋ผ๊ณ ?

๋ช‡ ๊ฐ€์ง€ ์ผ€์ด์Šค๋“ค์— ๋Œ€ํ•ด์„œ ์˜ˆ์‹œ๋ฅผ ๋„ฃ์–ด์ค€๊ฒŒ ์žˆ๋”๋ผ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰ + ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค >> ์นดํ”„์นด ์•ˆ์ •์ ์ธ ๋ฉ”์„ธ์ง€ ์ „๋‹ฌ + ์ ๋‹นํ•œ ํŠธ๋ž˜ํ”ฝ + ์œ ์—ฐํ•œ ๋ผ์šฐํŒ… >> ๋ž˜๋น— ๋ฉ”์„ธ์ง€์˜ ์žฌ์ƒ์ด๋‚˜ ๋กœ๊ทธ ์ง‘๊ณ„ >> ์นดํ”„์นด

์ด๋ ‡๊ฒŒ ์•Œ๋งž์€ ์ƒํ™ฉ์— ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ kafka ๋Š” ๋ถ„์‚ฐ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ๋Œ€๊ธฐ์—ด๊ธฐ๋ฐ˜์˜ rabbit ๋ณด๋‹ค ๋” ๋งŽ์€ ์ง€์‹์ด ํ•„์š”๋˜๋‹ˆ ์ถฉ๋ถ„ํ•œ ๊ณต๋ถ€ ์ดํ›„์— ์ ‘๊ทผ์ด ํ•„์š”

Last updated

Was this helpful?