๐Ÿน MSA(Microservices Architecture)

MSA(Microservices Architecture)๋ž€?

  • msa๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ž‘์€ ์„œ๋น„์Šค๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋‹ค.
  • ๊ฐ ์„œ๋น„์Šค๋Š” ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, ์ž์ฒด ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๋ณด์œ ํ•˜๊ณ (์„ ํƒ), ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • msa๋Š” ํ™•์žฅ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์œ ์—ฐ์„ฑ ํ–ฅ์ƒ ๋“ฑ์˜ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๋ณต์žกํ•œ ์šด์˜๊ณผ ํ†ต์‹  ๊ด€๋ฆฌ ๋“ฑ์˜ ๋ฌธ์ œ๋„ ๋™๋ฐ˜ํ•˜๊ณ ์žˆ๋‹ค.

๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์™€ ๋น„๊ต

๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜(Monolithic Architecture)

๋ชจ๋“  ๊ธฐ๋Šฅ์ด ๋‹จ์ผ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ํฌํ•จ๋˜์–ด ํ•˜๋‚˜์˜ ๋ฐฐํฌ ๋‹จ์œ„๋กœ ์šด์˜๋˜๋Š” ๋ฐฉ์‹.

  • ์ดˆ๊ธฐ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๊ฐ€ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋น„๋Œ€ํ™” ๋  ์ˆ˜๋ก ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ ๋ฐœ์ƒ
  1. ํ™•์žฅ์„ฑ ์ œํ•œ: ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ™•์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ž์› ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  2. ๋ฐฐํฌ ๋ฆฌ์Šคํฌ ์ฆ๊ฐ€: ์ž‘์€ ๋ณ€๊ฒฝ๋„ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์žฌ๋ฐฐํฌ๋ฅผ ์š”๊ตฌํ•˜์—ฌ ์œ„ํ—˜์ด ์ฆ๊ฐ€
  3. ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€: ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ์ปค์ง€๋ฉด ์ดํ•ด์™€ ์ˆ˜์ •์ด ์–ด๋ ค์›Œ์ง

MSA๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์€ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ, ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ, ๋ฐฐํฌ, ํ™•์žฅ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ฆ‰, ์œ„์˜ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์˜ ๋‹จ์ ์„ ๋ชจ๋‘ ๋ณด์™„ํ•˜๋Š” ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.

MSA ์žฅ์ 

  1. ๋ฐฐํฌ
  • ์„œ๋น„์Šค๋ณ„ ๊ฐœ๋ณ„ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅ(๋ฐฐํฌ์‹œ ์ „์ฒด ์„œ๋น„์Šค์˜ ์ค‘๋‹จ์ด ์—†์Œ)
  • ํŠน์ • ์„œ๋น„์Šค์˜ ์š”๊ตฌ์‚ฌํ•ญ๋งŒ์„ ๋ฐ˜์˜ํ•˜์—ฌ, ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌ ๊ฐ€๋Šฅ
  1. ํ™•์žฅ
  • ํŠน์ • ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํ™•์žฅ์„ฑ(scale-out)์ด ์œ ๋ฆฌํ•˜๋‹ค.
  • Cloud Native Architecture์— ์ ํ•ฉํ•˜๋‹ค.

    โ–ถ ๐ŸŒฉ Cloud-Native Architecture ๋ถ„์„ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

  1. ์žฅ์• 
  • ์ผ๋ถ€ ์žฅ์• ๊ฐ€ ์ „์ฒด ์„œ๋น„์Šค๋กœ ํ™•์žฅ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ ๋‹ค.(์žฅ์•  ๊ฒฉ๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค)
  1. ๊ทธ ์™ธ
  • ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜๊ธฐ ์œ ์—ฐํ•˜๋‹ค.(์ „์ฒด ์„œ๋น„์Šค๊ฐ€ ์•„๋‹Œ ํŠน์ • ์„œ๋น„์Šค๋งŒ ๋ณ„๋„์˜ ๊ธฐ์ˆ  ๋˜๋Š” ์–ธ์–ด๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ)
  • ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๊ตฌ์กฐ ํŒŒ์•… ๋ฐ ๋ถ„์„์ด ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ์— ๋น„ํ•ด ์‰ฝ๋‹ค.

MSA ๋‹จ์ 

  1. ์„ค๊ณ„์˜ ์–ด๋ ค์›€
  • MSA๋Š” ๋ชจ๋†€๋ฆฌ์‹์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์ด ๋ณต์žกํ•˜๋‹ค. ๋˜ํ•œ, ํ†ต์‹ ์˜ ์žฅ์• ์™€ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜ ๋“ฑ์„ ๊ณ ๋ คํ•˜์—ฌ transaction์„ ์œ ์ง€ํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.
  1. ์„ฑ๋Šฅ
  • ์„œ๋น„์Šค ๊ฐ„ ํ˜ธ์ถœ ์‹œ API๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ํ†ต์‹  ๋น„์šฉ์ด๋‚˜ Latency์— ๋Œ€ํ•ด ์ด์Šˆ๊ฐ€ ์กด์žฌ.
  1. ํ…Œ์ŠคํŠธ/๋ฐ์ดํ„ฐ ํŠธ๋žœ์žญ์…˜
  • ๋ชจ๋†€๋ฆฌ์‹์—์„œ๋Š” ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์„ ์œ ์ง€ํ•˜๋ฉด ๋์ง€๋งŒ MSA์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค์— ๋Œ€ํ•œ DB๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค๋„ ๊ฐ๊ธฐ ๋‹ค๋ฅด๊ณ , ์„œ๋น„์Šค์˜ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” ํ†ต์‹ ์ด ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋žœ์žญ์…˜์„ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๋ฉฐ ๊ฐœ๋ฐœํ•˜๋Š”๊ฒŒ ์–ด๋ ต๋‹ค.
    • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์‹ค์ œ ์šด์˜ํ™˜๊ฒฝ์„ ๋™์ผํ•˜๊ฒŒ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์˜ ์–ด๋ ค์›€
  1. ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ์–ด ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ๋‹ค.
๊ทธ๋ž˜์„œ msa๊ฐ€ ๋ฌด์กฐ๊ฑด ์ข‹์€๊ฒƒ์ธ๊ฐ€?
  • ์„ค๊ณ„๋ฐฉ์‹์— ๋Œ€ํ•œ ์ •๋‹ต์€ ์—†๋‹ค. ํ•˜์ง€๋งŒ, ๋งŽ์€ ๊ธฐ์—…๋“ค์ด MSA๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ™•์žฅ์‹œ์ผฐ๋‹ค๋Š” ๊ฒƒ์€ ํ™•์‹คํ•˜๋‹ค.
  • ๋˜ํ•œ, Cloud ๊ธฐ๋ฐ˜์˜ ์„œ๋น„์Šค์— ๋งค์šฐ์ ํ•ฉํ•œ ๋ฐฉ์‹์ด๋ผ๋Š” ๊ฒƒ๋„ ์ž๋ช…ํ•˜๋‹ค. ํ•˜์ง€๋งŒ, MSA๋ฅผ ๋ฌด์กฐ๊ฑด ์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ํ˜„์žฌํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ, ํ†ต์‹  ๋ฐฉ์‹๋“ฑ์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฐ์ •/์˜ˆ์ƒํ•˜์—ฌ ๋‹จ์ ๋ณด๋‹ค ์žฅ์ ์ด ์ปค ๋ณด์ธ๋‹ค๊ณ  ์ƒ๊ฐ๋  ๋•Œ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์ง ํ•ด ๋ณด์ธ๋‹ค.

MSA์˜ ํ•ต์‹ฌ ์›์น™


  • MSA๋Š” ๋‹จ์ˆœํžˆ ์„œ๋น„์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐœ๋ณ„ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ, ๋ฐฐํฌ, ์šด์˜๋  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์™€ ๋‹ค๋ฅผ ๋ฐ” ์—†๋‹ค. ๋”ฐ๋ผ์„œ, ์ ์ ˆํ•œ ์„ค๊ณ„ ์›์น™์„ ์ ์šฉํ•˜์—ฌ ์„ค๊ณ„๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

1. ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP: Single Responsibility Principle)

SRP๋Š” ๊ฐ ์„œ๋น„์Šค๊ฐ€ ํ•˜๋‚˜์˜ ๋ช…ํ™•ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค. ์ด๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉด ์„œ๋น„์Šค๊ฐ€ ์ ์  ์ปค์ง€๋ฉด์„œ ๊ฒฐ๊ตญ ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ์™€ ๋‹ค๋ฆ„์—†์–ด์งˆ ์ˆ˜ ์žˆ์Œ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

์‘์ง‘๋„์™€ ๊ฒฐํ•ฉ๋„

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

์„œ๋น„์Šค์˜ ์—ญํ•  ๋ช…ํ™•ํ™”

  • ๊ฐ ์„œ๋น„์Šค๋Š” ๋ช…ํ™•ํ•œ ๋„๋ฉ”์ธ ์—ญํ• ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค(DDD). ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ๋ฌธ ์„œ๋น„์Šค๋Š” ์ฃผ๋ฌธ ๊ด€๋ จ ๋กœ์ง๋งŒ์„ ๋‹ด๋‹นํ•˜๊ณ , ๊ฒฐ์ œ ์„œ๋น„์Šค๋Š” ๊ฒฐ์ œ์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ๋งŒ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ, ๋ฐฐํฌ, ํ™•์žฅ์ด ์šฉ์ดํ•ด์ง€๊ณ , ์šด์˜ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ์„œ๋น„์Šค ๋…๋ฆฝ์„ฑ

์„œ๋น„์Šค๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ์ „์ฒด ์‹œ์Šคํ…œ์ด ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

๋А์Šจํ•œ ๊ฒฐํ•ฉ

  • ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์€ ๋™๊ธฐ ํ˜ธ์ถœ๋ณด๋‹ค๋Š” ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ๋˜๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์•„๋„ ์ „์ฒด ์‹œ์Šคํ…œ์ด ๋ฉˆ์ถ”์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

์„œ๋น„์Šค ๊ฐ„ ์˜์กด์„ฑ ์ตœ์†Œํ™”

  • ์„œ๋น„์Šค ๊ฐ„์˜ ์ง์ ‘์ ์ธ ์˜์กด์„ฑ์„ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ํ”ผํ•ด์•ผ ํ•˜๋ฉฐ, API๋‚˜ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

3. ์žฅ์•  ๊ฒฉ๋ฆฌ

MSA ํ™˜๊ฒฝ์—์„œ๋Š” ํŠน์ • ์„œ๋น„์Šค์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ํ™•์‚ฐ๋˜์ง€ ์•Š๋„๋ก ๊ฒฉ๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ด๋‹ค.

์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ํŒจํ„ด

  • ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค๋Š” ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์„ ๋•Œ, ์ผ์ • ํšŸ์ˆ˜ ์ด์ƒ ์š”์ฒญ์ด ์‹คํŒจํ•˜๋ฉด ์ถ”๊ฐ€ ์š”์ฒญ์„ ์ฐจ๋‹จํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ , ์žฅ์• ๊ฐ€ ํ™•์‚ฐ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

ํด๋ฐฑ ์ „๋žต

  • ์„œ๋น„์Šค ์žฅ์•  ๋ฐœ์ƒ ์‹œ, ๊ธฐ๋ณธ์ ์ธ ๋Œ€์ฒด ์‘๋‹ต์„ ์ œ๊ณตํ•˜๋Š” ํด๋ฐฑ ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ถ”์ฒœ ์„œ๋น„์Šค๊ฐ€ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ธฐ๋ณธ ์ธ๊ธฐ ์ƒํ’ˆ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‹.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง

  • ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ์žฅ์•  ๋ฐœ์ƒ์„ ์‚ฌ์ „์— ๊ฐ์ง€ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

4. ์ž๋™ํ™”

MSA์—์„œ๋Š” ์ˆ˜๋งŽ์€ ์„œ๋น„์Šค๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ ์ˆ˜์ž‘์—…์œผ๋กœ ์šด์˜ํ•˜๊ธฐ์—๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ CICD ํŒŒ์ดํ”„๋ผ์ธ๊ณผ Kubernetes ๊ธฐ๋ฐ˜์˜ ์ž๋™ํ™”๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค.

CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•

  • ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์†์ ์ธ ํ†ตํ•ฉ ๋ฐ ๋ฐฐํฌ(CI/CD)๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ ์†๋„๋ฅผ ๋†’์ด๊ณ , ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์œ„ํ—˜์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

Kubernetes๋ฅผ ์ด์šฉํ•œ ์„œ๋น„์Šค ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ ์ž๋™ํ™”

  • Kubernetes๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์„œ๋น„์Šค ๋ฐฐํฌ, ํ™•์žฅ, ๋กค๋ฐฑ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ธํ”„๋ผ ๊ด€๋ฆฌ์˜ ๋ณต์žก๋„๋ฅผ ์ค„์ด๊ณ , ์„œ๋น„์Šค ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.

5. ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊น…

MSA์—์„œ๋Š” ์„œ๋น„์Šค๊ฐ€ ๋ถ„์‚ฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํšจ๊ณผ์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๋กœ๊น…์ด ํ•„์ˆ˜์ ์ด๋‹ค.

๋ถ„์‚ฐ ์ถ”์  ์‹œ์Šคํ…œ

  • ์„œ๋น„์Šค ๊ฐ„ ์š”์ฒญ ํ๋ฆ„์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„์‚ฐ ์ถ”์  ์‹œ์Šคํ…œ(OpenTelemetry, Jaeger)์„ ํ™œ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜ ์›์ธ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ค‘์•™ ์ง‘์ค‘์‹ ๋กœ๊น…

  • ๊ฐ ์„œ๋น„์Šค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋กœ๊ทธ๋ฅผ ํ•œ๊ณณ์— ์ˆ˜์ง‘ํ•˜์—ฌ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ์ค‘์•™ ์ง‘์ค‘์‹ ๋กœ๊น… ์‹œ์Šคํ…œ(ELK Stack, Grafana Loki)์„ ํ™œ์šฉํ•˜๋ฉด ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์›์ธ์„ ๋น ๋ฅด๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง

  • ์„œ๋น„์Šค์˜ CPU, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, ์‘๋‹ต ์‹œ๊ฐ„ ๋“ฑ์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์ด์ƒ ์ง•ํ›„๋ฅผ ์‚ฌ์ „์— ๊ฐ์ง€ํ•˜์—ฌ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.


์„œ๋น„์Šค ๋ถ„ํ•ด(๊ฒฝ๊ณ„ ์„ ์ •) ์ „๋žต ๋ฐ ํŒจํ„ด


MSA๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ์ ์ ˆํ•œ ์„œ๋น„์Šค ๋ถ„ํ•ด ์ „๋žต์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ถ„ํ•ด ์ „๋žต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๋ถ„ํ•ด: ๊ฐ ์„œ๋น„์Šค๊ฐ€ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋„๋ก ๋ถ„ํ•ดํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ๋ฌธ ๊ด€๋ฆฌ, ๊ฒฐ์ œ ์ฒ˜๋ฆฌ, ์‚ฌ์šฉ์ž ์ธ์ฆ ๋“ฑ์„ ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  • ํ•˜์œ„ ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ๋ถ„ํ•ด: ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•˜์œ„ ๋„๋ฉ”์ธ๋ณ„๋กœ ์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค. ๊ณ ๊ฐ์ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ด๋ฒคํŠธ๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ํ•˜์—ฌ Path๋ฅผ ๋ฐœ๊ฒฝํ•˜๋Š” Event Storming ๊ธฐ๋ฒ•๋„ ์žˆ๋‹ค.

  • ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„ ๊ธฐ๋ฐ˜ ๋ถ„ํ•ด: ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ถ„ํ•ด ์ „๋žต์„ ํ†ตํ•ด ์„œ๋น„์Šค ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ๋…๋ฆฝ์ ์ธ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜์ 

MSA๋ฅผ ๋„์ž…ํ•˜๋ฉฐ, ๊ธฐ๋Šฅ(๋„๋ฉ”์ธ)์˜ ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋Š”๊ฒƒ์€ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ์ง€ ์•Š๋‹ค.
ํŠนํžˆ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•  ๋•Œ ์–ด๋ ค์šด ์ ์ด ์žˆ๋‹ค.

  1. ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๋“ค๊ณผ์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’๋‹ค
  2. ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ผ ์ˆ˜๋ก ์žฅ๊ธฐ๊ฐ„์˜ ์œ ์ง€๋ณด์ˆ˜๋กœ ์ธํ•˜์—ฌ, ๋„๋ฉ”์ธ๊ฐ„์˜ ๊ฒฝ๊ณ„๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค

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


MSA ์„œ๋น„์Šค ๋ถ„๋ฆฌ ์›์น™

๋‹ค์Œ์€ MSA์—์„œ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•œ ์ฃผ์š” ์„œ๋น„์Šค ๋ถ„๋ฆฌ ์›์น™์ด๋‹ค.

1. ์ฝ”๋“œ์˜ ์žฌ๊ฐœ๋ฐœ

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

2. ์ง„ํ™”์ /์ ์ง„์ /๋ฐ˜๋ณต์  ๋ถ„๋ฆฌ

๋ชจ๋†€๋ฆฌ์‹์œผ๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ์ฝ”๋“œ ์ „์ฒด๋ฅผ MSA๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ์•„์ฃผ ๊ธธ๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ผ์ด๋‹ค. ๋•Œ๋ฌธ์—, ์ž‘๊ณ  ๋ช…ํ™•ํ•œ ๊ณ„ํš์˜ ์—ฌ๋Ÿฌ๋‹จ๊ณ„๋ฅผ ๋งŒ๋“ค์–ด ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋‹ค.

๋˜ํ•œ, ์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ•  ๋•Œ ์„œ๋น„์Šค ๋ฒ”์œ„๋ฅผ ๋„ˆ๋ฌด ์ข๊ฒŒ ์žก์œผ๋ฉด ๊ฐ์„œ๋น„์Šค๋Š” ์‘์ง‘๋„ ๋†’์€ ๋น„์ฆˆ๋‹ˆ์Šค ์—†์ด CRUD๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๊ฐœ์ˆ˜๋Š” ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์—ฌ ๋ณต์žก๋„๋งŒ ๋†’์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๋ก 

  • ์šฐ์„  ์„œ๋น„์Šค ๋‹จ์œ„๋ฅผ ํฌ๊ฒŒ ๋ถ„๋ฆฌํ•œ ํ›„, ์ดํ›„์— ์„ค๊ณ„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋ถ„๋ฆฌ์ž‘์—…์„ ์ ์ง„์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋ฐ”๋žŒ์ง ํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค.


ํ†ต์‹  ๋ฐ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ๊ณผ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๊ฐ€ ์ค‘์š”ํ•œ ์ด์Šˆ์ด๋‹ค.

ํ†ต์‹  ๋ฐฉ์‹

  • ๋™๊ธฐ ํ†ต์‹ : RESTful API, gRPC ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ์‹. ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ์„œ๋น„์Šค ๊ฐ„์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋น„๋™๊ธฐ ํ†ต์‹ : ๋ฉ”์‹œ์ง€ ํ(Kafka, RabbitMQ ๋“ฑ)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹. ์ด๋Š” ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ , ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ๊ณผ ํƒ„๋ ฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ„๋ฆฌ: ๊ฐ ์„œ๋น„์Šค๋Š” ์ž์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด์œ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ์„ ํ™•๋ณดํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€: ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด SAGA ํŒจํ„ด, ์ด๋ฒคํŠธ ์†Œ์‹ฑ ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

MSA๋Š” ๋‹จ์ˆœํžˆ ์‹œ์Šคํ…œ์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋น„์Šค๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์„œ๋น„์Šค์˜ ๋…๋ฆฝ์„ฑ, ์žฅ์•  ๊ฒฉ๋ฆฌ, ์ž๋™ํ™”, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ์˜ ์›์น™์„ ์ฒ ์ €ํžˆ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์›์น™์ด ์ง€์ผœ์ง€์ง€ ์•Š์œผ๋ฉด, ์‹œ์Šคํ…œ์€ ์˜คํžˆ๋ ค ๋” ๋ณต์žกํ•ด์ง€๊ณ  ์šด์˜ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•  ๋ฟ ์•„๋‹ˆ๋ผ ์žฅ์•  ๋Œ€์‘๋„ ์–ด๋ ค์›Œ์ง„๋‹ค.

ํŠนํžˆ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™, ์„œ๋น„์Šค ๋…๋ฆฝ์„ฑ, ์žฅ์•  ๊ฒฉ๋ฆฌ, ์ž๋™ํ™”, ๋ชจ๋‹ˆํ„ฐ๋ง์€ MSA์—์„œ ๋ฐ˜๋“œ์‹œ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ํ•„์ˆ˜ ์š”์†Œ์ด๋‹ค. ์ด ์›์น™๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ MSA๋ฅผ ์„ค๊ณ„ํ•˜๋ฉด ์œ ์—ฐํ•œ ํ™•์žฅ์„ฑ, ๋†’์€ ๊ฐ€์šฉ์„ฑ, ํšจ์œจ์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.