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

[๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค] MSA์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ - Message Queueing

by Wonit 2021. 4. 14.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ์ˆ ์ ์œผ๋กœ ๋งŽ์€ ์–ด๋ ค์›€์ด ์ˆ˜๋ฐ˜๋œ๋‹ค.

 

์•„๋ž˜์˜ ์‚ฌ์ง„๋งŒ ๋ณด๋”๋ผ๋„ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์•Œ์•ผ์•„ ํ•  ๊ธฐ์ˆ ๋“ค์ด ๊ต‰์žฅํžˆ ๋งŽ๋‹ค.

์˜ค๋Š˜์€ ์—ฌ๊ธฐ์— ๋‚˜์˜จ ๊ธฐ์ˆ ๋“ค์˜ ํŠน์ง•๊ณผ ์–ด๋–ค ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.

CNCF๊ฐ€ ์ œ์‹œํ•œ ํ‘œ์ค€ MSA ๊ตฌ์„ฑ ์š”์†Œ

CNCF๋Š” ์ง€๋‚œ Cloud Native Architecture ์—์„œ๋„ ์ž ๊น ์–ธ๊ธ‰ํ•œ Cloud Native Computing Foundation ๋‹จ์ฒด์ด๋‹ค.

CNCF ์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋ˆˆ๋‹ค.

  • API Gateway ํŒจํ„ด ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Service Mesh ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Container Runtime ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • CI / CD ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Message Queuing ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • RESTful API ๋ธ”๋กœ๊ทธ ์„ค๋ช… ๋ฐ”๋กœ๊ฐ€๊ธฐ

Data Sync by Messaging

๋Œ€๋ถ€๋ถ„์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ๋Š” ๋ฉ”์‹œ์ง€ ํ๋ฅผ ํ™œ์šฉํ•œ ๋น„๋™๊ธฐ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด ๋ฉ”์‹œ์ง€ ํ๋Š” ์™œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ผ๊นŒ?

๋ฉ”์‹œ์ง€ ํ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด?

์˜ˆ๋ฅผ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.


User ์„œ๋น„์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉ์ž๋“ค์ด ๋งŽ์•„์ง„๋‹ค๊ณ  ํ•ด๋ณด์ž.

 

๊ทธ๋Ÿผ ์šฐ๋ฆฌ์˜ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด์— ์˜ํ•ด์„œ Scale-out ์„ ํ•˜๊ฒŒ ๋˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜๋ฌธ์ด ์กด์žฌํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ๋™์ผํ•œ ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ„์‚ฐ๋˜์–ด ์ €์žฅ๋˜์ง€ ์•Š์„๊นŒ? ๊ทธ๋Ÿผ ๋™๊ธฐํ™”๋Š” ์–ด๋–ป๊ฒŒ ์‹œํ‚ค์ง€?

 

์‹ค์ œ๋กœ ๋ถ„์‚ฐ๋˜์–ด ์ €์žฅ๋œ๋‹ค.

 

๊ฒฐ๊ตญ ์‚ฌ์šฉ์ž๋Š” API Gateway๊ฐ€ ๋ณด๋‚ด๋Š” ์š”์ฒญ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ, ๋ฌด๊ฒฐํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.

์ด ๋ฐฉ์‹์—๋Š” ์—ฌ๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ์‹์ด ์กด์žฌํ•˜๋Š”๋ฐ, ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด์ž.

 

  1. ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ Scale-Out ๋œ๋‹ค ํ•˜๋”๋ผ๋„ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ
  2. Message Queue๋ฅผ ์ด์šฉํ•˜๊ธฐ

ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ Scale-Out ๋œ๋‹ค ํ•˜๋”๋ผ๋„ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ

 

์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ Scale-Out ๋˜๋”๋ผ๋„ ๊ถ๊ทน์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋™์ผํ•œ ์„œ๋น„์Šค์ด๋ฏ€๋กœ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์ผํ•œ DB๋ฅผ ๋ณด๊ณ  ์ž‘์—…์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํŠธ๋žœ์žญ์…˜๊ณผ Isolation Level์— ๊ด€ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

ํŠธ๋žœ์žญ์…˜๊ณผ Isonlation Level ์— ๋Œ€ํ•ด์„œ๋Š” ํ•ด๋‹น ๋งํฌ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๊ตญ ์ด ๋ฌธ์ œ๋ณด๋‹ค ๋” ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

 

Message Queue ์‚ฌ์šฉํ•˜๊ธฐ

์•ž์„  ๋ฐฉ์‹์˜ ๋ฌธ์ œ์—์„œ ํŠธ๋žœ์žญ์…˜๊ณผ ๊ณ ๋ฆฝ ์ˆ˜์ค€์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Message Queue

๋ฉ”์‹œ์ง€ ํ์ž‰ ์„œ๋น„์Šค๋ฅผ ํ•œ ์ค„๋กœ ์ •๋ฆฌํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌ์กฐ์—์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ™•์žฅ๋˜๋”๋ผ๋„ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ฐ ๋ฐ์ดํ„ฐ์˜ ๋™๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด ๋ฏธ๋“ค์›จ์–ด์ด๋‹ค.

์ฃผ๋กœ ์•„ํŒŒ์น˜ ์นดํ”„์นด kafka๋‚˜ ๋ž˜๋น—์— ํ Rabbit MQ์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

 

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

 

  1. ์ธ์Šคํ„ด์Šค ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์šด์˜ํ•˜์—ฌ ํ์ž‰ ์„œ๋ฒ„์— ๊ตฌ๋…
  2. ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์šด์˜ํ•˜๋ฉฐ ์ค‘๊ฐ„์— ํ์ž‰ ์„œ๋ฒ„๋ฅผ ๋‘๋Š” ๋ฐฉ์‹

์ด๋ฅผ ์ง€์›ํ•˜๋Š” ๋„๊ตฌ ๋ฐ ๊ธฐ์ˆ 

ํ˜„์žฌ ๋งŽ์€ Messaging ๊ธฐ์ˆ ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

 

์ด๋Š” CNCF ์— CNCF Cloud Native Interactive Landscape ์—์„œ ๋” ์ž์„ธํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • Apache Kafka
  • RabbitMQ
  • Spring Cloud Bus
  • Amazon SNS (Simple Notification Service)
  • Amazon SQS (Simple Queue Server)
  • Active Queue

๋Œ“๊ธ€