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

๐Ÿ”ฅ IT 8๊ฐœ ์ง๋ฌด ๊ธฐ์ดˆ์ฒดํ—˜

IT ์šฉ์–ด(4) - MSA(MicroService Architecture)

1. Monolithic Architecture

  • Monolithic Architecture๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ํ•œ ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉ๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค. 
  • ์›น ๊ฐœ๋ฐœ์˜ ๊ฒฝ์šฐ ์›น ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“ˆ๋ณ„๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ , ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฌผ๋กœ ํŒจํ‚ค์ง•ํ•˜์—ฌ ๋ฐฐํฌ๋œ๋‹ค. ์ด๋Ÿฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ ํ•˜๋ฉฐ, ์›น์˜ ๊ฒฝ์šฐ WARํŒŒ์ผ๋กœ ๋นŒ๋“œ๋˜์–ด WAS์— ๋ฐฐํฌ๋˜๋Š” ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค.
  • ์ฃผ๋กœ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

1) ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ณ์˜ ํ•œ๊ณ„์ 

  • ํ•˜์ง€๋งŒ ์ผ์ • ๊ทœ๋ชจ ์ด์ƒ์˜ ์„œ๋น„์Šค, ํ˜น์€ ์ˆ˜๋ฐฑ๋ช… ์ด์ƒ์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ํˆฌ์ž…๋˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ณ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
  • ๋ถ€๋ถ„ ์žฅ์• ๊ฐ€ ์ „์ฒด ์„œ๋น„์Šค์˜ ์žฅ์• ๋กœ ํ™•๋Œ€๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ถ€๋ถ„์ ์ธ Scale-out(์—ฌ๋Ÿฌ server๋กœ ๋‚˜๋ˆ„์–ด ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹)์ด ์–ด๋ ต๋‹ค.
  • ์„œ๋น„์Šค์˜ ๋ณ€๊ฒฝ์ด ์–ด๋ ต๊ณ , ์ˆ˜์ • ์‹œ ์žฅ์• ์˜ ์˜ํ–ฅ๋„ ํŒŒ์ต์ด ํž˜๋“ค๋‹ค.
  • ๋ฐฐํฌ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
  • ํ•œ Framework์™€ ์–ธ์–ด์— ์ข…์†์ ์ด๋‹ค.

 

2) MSA์˜ ๋“ฑ์žฅ

  • ์ด๋Ÿฌํ•œ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ณ์˜ ๋ฌธ์ œ์ ๋“ค์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด MSA๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
  • ๊ธฐ์กด์˜ ํŠน์ •ํ•œ ๋ฌผ๋ฆฌ์ ์ธ ์„œ๋ฒ„์— ์„œ๋น„์Šค๋ฅผ ์˜ฌ๋ฆฌ๋˜ on promise ์„œ๋ฒ„ ๊ธฐ๋ฐ˜์˜ Monolithic Architecture์—์„œ ์ด์ œ๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” MicroService Architecture๋กœ ๋งŽ์€ ์„œ๋น„์Šค๋“ค์ด ์ „ํ™˜๋˜๊ณ  ์žˆ๋‹ค.

 

2. MSA(MicroService Architecture)

๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋ž€ ์ž‘๊ณ , ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

 

1) MSA์˜ ํŠน์ง•

  • MSA๋Š” API๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋Š” ์„œ๋น„์Šค์˜ end-point(์ ‘๊ทผ์ )์„ API ํ˜•ํƒœ๋กœ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๊ณ , ์‹ค์งˆ์ ์ธ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ๋ชจ๋‘ ์ถ”์ƒํ™”ํ•œ๋‹ค. ๋‚ด๋ถ€์˜ ๊ตฌํ˜„ ๋กœ์ง, ์•„ํ‚คํ…์ณ์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํ’ˆ์งˆ ์œ ์ง€ ์ฒด๊ณ„์™€ ๊ฐ™์€ ๊ธฐ์ˆ ์ ์ธ ์‚ฌํ•ญ๋“ค์€ ์„œ๋น„์Šค API์— ์˜ํ•ด ์ฒ ์ €ํ•˜๊ฒŒ ๊ฐ€๋ ค์ง„๋‹ค.
  • ์ œ๋Œ€๋กœ ์„ค๊ณ„๋œ MSA๋Š” ํ•˜๋‚˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฒ”์œ„์— ๋งž์ถฐ ๋งŒ๋“ค์–ด์ง€๋ฏ€๋กœ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ถœ์‹œ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ๋ชฉํ‘œ๋ฅผ ํ–ฅํ•ด ์ผํ•˜์ง€๋งŒ ์ž๊ธฐ๊ฐ€ ๊ฐœ๋ฐœํ•˜๋Š” ์„œ๋น„์Šค๋งŒ ์ฑ…์ž„์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•ญ์ƒ ๊ธฐ์ˆ  ์ค‘๋ฆฝ์  ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ํ†ต์‹ ํ•˜๋ฏ€๋กœ ์„œ๋น„์Šค ๊ตฌํ˜„ ๊ธฐ์ˆ ๊ณผ๋Š” ๋ฌด๊ด€ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ๊ธฐ์ˆ ๋กœ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” SOA(Service Oriented Architecture)์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ง‘์ค‘ํ™”๋œ ๊ด€๋ฆฌ ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌํ˜„์ฒด์˜ ๊ณตํ†ต์ ์ธ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ESB(Enterprise Service Bus)์™€ ๊ฐ™์€ ๋ฌด๊ฑฐ์šด ์ œํ’ˆ์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค. REST ๋“ฑ ๊ฐ€๋ฒผ์šด ํ†ต์‹  ์•„ํ‚คํ…์ฒ˜, ๋˜๋Š” Kafka ๋“ฑ์„ ์ด์šฉํ•œ message stream์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. 

2) MSA์˜ ์žฅ๋‹จ์ 

 

์žฅ์  ๋‹จ์ 
  • ๋ฐฐํฌ ๊ด€์  : ์„œ๋น„์Šค ๋ณ„ ๊ฐœ๋ณ„ ๋ฐฐํฌ ๊ฐ€๋Šฅ => ๋ฐฐํฌ ์‹œ ์ „์ฒด ์„œ๋น„์Šค์˜ ์ค‘๋‹จ์ด ์—†์Œ, ์š”๊ตฌ์‚ฌํ•ญ์„ ์‹ ์†ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Œ
  • ํ™•์žฅ ๊ด€์  : ํŠน์ • ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํ™•์žฅ์„ฑ์ด ์šฉ์ดํ•จ => ํด๋ผ์šฐ๋“œ ์‚ฌ์šฉ์— ์ ํ•ฉํ•œ ์•„ํ‚คํ…์ณ
  • ์žฅ์•  ๊ด€์  : ์žฅ์• ๊ฐ€ ์ „์ฒด ์„œ๋น„์Šค๋กœ ํ™•์žฅ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Œ => ๋ถ€๋ถ„์  ์žฅ์• ์— ๋Œ€ํ•œ ๊ฒฉ๋ฆฌ๊ฐ€ ์ˆ˜์›”ํ•จ
  • ์‹ ๊ธฐ์ˆ ์˜ ์ ์šฉ์ด ์œ ์—ฐํ•จ
  • ์„œ๋น„์Šค๋ฅผ Polyglotํ•˜๊ฒŒ ๊ฐœ๋ฐœ/์šด์˜ํ•  ์ˆ˜ ์žˆ์Œ 
  • ์„ฑ๋Šฅ : ์„œ๋น„์Šค ๊ฐ„ ํ˜ธ์ถœ ์‹œ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ†ต์‹  ๋น„์šฉ์ด๋‚˜, ์ง€์—ฐ์‹œ๊ฐ„์ด ๊ทธ๋งŒํผ ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.
  • ํ…Œ์ŠคํŠธ/ํŠธ๋žœ์žญ์…˜ : ์„œ๋น„์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ์™€ ํŠธ๋žœ์žญ์…˜์˜ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ , ๋งŽ์€ ์ž์›์„ ํ•„์š”๋กœ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ : ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฑธ์ณ ๋ถ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ์— ์กฐํšŒํ•˜๊ธฐ ์–ด๋ ต๊ณ , ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ ๋˜ํ•œ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๋‹ค.