๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

SpringBoot

๋ฉ”์„ธ์ง€ํ ํ†บ์•„๋ณด๊ธฐ

๐Ÿ”๋ฉ”์„ธ์ง€ํ๋ž€?

๋ฉ”์‹œ์ง€ ํ(Message Queue)๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด

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

 

๐Ÿ“Œ๋ฉ”์‹œ์ง€ ํ์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ:

  1. ๋ฉ”์‹œ์ง€: ๋ฉ”์‹œ์ง€ ํ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ ๋‹จ์œ„๋กœ ์š”์ฒญ ๊ทธ ์ž์ฒด. ๋ฉ”์‹œ์ง€๋Š” ํ…์ŠคํŠธ, JSON, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.
  2. ํ: ๋ฉ”์‹œ์ง€๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ FIFO(์„ ์ž…์„ ์ถœ) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๋จผ์ € ๋„์ฐฉํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋จผ์ € ์ฒ˜๋ฆฌ๋œ๋‹ค.
  3. ์ƒ์‚ฐ์ž(Producer): ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ์— ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋ฉ”์‹œ์ง€๋กœ ํ์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  4. ์†Œ๋น„์ž(Consumer): ํ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์†Œ๋น„์ž๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ฑฐ๋‚˜, ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  5. ๋ธŒ๋กœ์ปค(Broker): ์ „์ฒด๋ฅผ ์ง€์นญํ•˜๋Š” ์‹œ์Šคํ…œ, ๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ค‘๊ณ„ํ•˜๋Š” ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ๋ธŒ๋กœ์ปค๋Š” ๋‹ค์–‘ํ•œ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž ๊ฐ„์˜ ํ†ต์‹ ์„ ๋„์™€์ค๋‹ˆ๋‹ค. ex) RebbitMQ์™€ ์นดํ”„์นด ⇒ ๋‚ด๋ถ€์— ์ƒ์‚ฐ์ž,์†Œ๋น„์ž ๊ธฐ๋Šฅ

๐Ÿ“Œ๋ฉ”์‹œ์ง€ ํ์˜ ์žฅ์ :

  1. ๋น„๋™๊ธฐ ํ†ต์‹ : ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ์‹œ๊ฐ„์  ์ œ์•ฝ ์—†์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ํƒ„๋ ฅ์„ฑ๊ณผ ํ™•์žฅ์„ฑ: ์‹œ์Šคํ…œ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ ธ, ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์ด ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ•„์š”์— ๋”ฐ๋ผ ๋ธŒ๋กœ์ปค๋‚˜ ํ๋ฅผ ๊ต์ฒด,ํ™•์žฅํ•˜์—ฌ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (#๊ฒฐํ•ฉ๋„๋Š” A๋ฅผ ํ•˜๋ฉด์„œ B๋ฅผ ๋ชปํ•˜๋Š” ์—ฎ์–ด์žˆ๋Š” ๊ฒƒ์„ ๋งํ•จ)
  3. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์™€ ํšจ์œจ์„ฑ: ์ผ๋ถ€ ์ž‘์—…์ด ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ, ๋ฉ”์‹œ์ง€ ํ๋ฅผ ํ†ตํ•ด ์ƒ์‚ฐ์ž๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•œ ๋’ค ๋‹ค๋ฅธ ์ž‘์—…์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ๋น„์ž๋Š” ๋‚˜์ค‘์— ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  4. ๋ฐ์ดํ„ฐ ๋ณต์ œ์™€ ์•ˆ์ •์„ฑ: ๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๊ณ  ๋ณต์ œํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•จ

๐Ÿ“Œ์‹ค์ œ ๋ฉ”์„ธ์ง€ ํ ์‚ฌ์šฉ ์‹œ:

๋ฉ”์„ธ์ง€ ํ๋กœ ์„ ์ž…์„ ์ถœ๋กœ DB์ชฝ์— ํ•˜๋‚˜์”ฉ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋””.

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

ํ†ฐ์บฃ ๋‚ด๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ํ

  • ์š”์ฒญ ์œ ์‹ค์„ ๋ง‰์Šต๋‹ˆ๋‹ค. ํ†ฐ์บฃ์˜ ํ๋Š” ๋ฉ”๋ชจ๋ฆฌ์ž„์œผ๋กœ ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์ง€๋งŒ ๋ฉ”์„ธ์ง€ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋””์Šคํฌ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด DB์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๋ฉ”์„ธ์ง€ ํ ๋‚ด๋ถ€์— ์ ์žฌํ•ด๋‘๊ณ  ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ์œ ์‹ค์„ ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€๊ธฐํ–ˆ๋‹ค๊ฐ€ ๋‹ค์Œ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ๋ฐ”๋กœ 400๋ฒˆ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹Œ ๋ถˆ์•ˆ์ •ํ•œ ์„œ๋ฒ„๋ฅผ ์ž ์‹œ ๊ธฐ๋‹ค๋ ค์คŒ

 

 

 

 

๋Œ€ํ‘œ์ ์ธ ๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ์œผ๋กœ๋Š” RabbitMQ, Apache Kafka, ActiveMQ, Redis ๋“ฑ

 

์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ RabbitMQ ๋ฉ”์„ธ์ง€ ํ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

[SpringBoot] - ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ RabbitMQ ๋ฉ”์„ธ์ง€ ํ๋กœ ์‚ฌ์šฉ

 

์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ RabbitMQ ๋ฉ”์„ธ์ง€ ํ๋กœ ์‚ฌ์šฉ

RabbitMQ๋ž€? Erlang์œผ๋กœ ์ž‘์„ฑ๋œ RabbitMQ๋กœ Erlang์„ ๋จผ์ € ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๋„์ปค์—์„œ Eralng์ด ํฌํ•จ๋œ ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์žˆ์–ด์„œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. RabbitMQ ํ•˜๋‚˜๋กœ ์—ฌ๋Ÿฌ

lbzllctct.tistory.com

 

 

ํ˜„์—… ํ ์‹œ์Šคํ…œ ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์˜์ƒ์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

https://www.youtube.com/watch?v=MTSn93rNPPE