๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
Back
NestJs
47-MSA

1. MSA์˜ ์ •์˜

MSA๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ์—ฌ๋Ÿฌ ์ž‘์€ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ฃผ์š” ํŠน์ง•

  • ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค.
  • ์„œ๋น„์Šค๊ฐ„ ๋А์Šจํžˆ ๊ฒฐํ•ฉ๋ผ์•ผํ•œ๋‹ค. (Loosely Coupled)
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉ์ ๋ณ„๋กœ ๋‚˜๋‰˜์–ด์•ผํ•œ๋‹ค.

ํ”ํ•œ ์˜คํ•ด

  • ์ƒ๊ฐ๋ณด๋‹ค ๋„“์€ ์†Œํ”„ํŠธ์›จ์–ด โ€œ์•„ํ‚คํ…์ฒ˜โ€์˜ ๊ฐœ๋…์ด๋‹ค.
  • ํŠน์ • ๊ธฐ์ˆ ์˜ ์‚ฌ์šฉ์„ ์‹œ์‚ฌํ•˜๊ฑฐ๋‚˜ ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์–ด์ฐจํ”ผ Microservice๋ฅผ ๋ฏธ๋ž˜์— ํ•  ๊ณ„ํš์ด๋ผ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ Microservice๋ฅผ ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค

1.1 MSA์— ๋Œ€ํ•œ ์ƒ๊ฐ

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

Monolithic Architecture ๋ถ€ํ„ฐ MSA ์‚ฌ์ด์—๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋ฌด์ˆ˜ํ•œ ํƒ€ํ˜‘์ ๋“ค์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ฆ‰, ์ด ๋‘ ์•„ํ‚คํ…์ฒ˜๋Š” ํ‘๋ฐฑ ๋…ผ๋ฆฌ๋กœ ๋‚˜๋‰˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ์ŠคํŽ™ํŠธ๋Ÿผ์ด ์กด์žฌํ•œ๋‹ค.

ํ•„์š”ํ•œ ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ „ํ™˜์„ ํ•˜๋ฉด์„œ ์ฒœ์ฒœํžˆ ๋ณ€ํ™”๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด ๋œ๋‹ค. โ€œMonolithic์ด๋‹ˆ๊นŒ ์ด๋ ‡๊ฒŒ ํ•ด์•ผ์ง€!โ€, โ€œMSA๋‹ˆ๊นŒ ์ด๋ ‡๊ฒŒ ํ•ด์•ผ์ง€!โ€๋ผ๋Š” ํŠน์ • ๊ฐœ๋…์„ ๊ฐ•์ œํ•˜๋Š” ์ •๋‹ต์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. Monolithic ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ•˜๋‚˜์”ฉ ๋ถ„ํ•  ํ•ด๊ฐ€๋ฉด์„œ MSA๋กœ ์ „ํ–ฅ์„ ํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐ€์žฅ ์ด์ƒ์ ์ธ MSA ๊ตฌ์ถ• ๋ฐฉ๋ฒ•์ด๋‹ค.

์žŠ์ง€๋ง์ž. ์šฐ๋ฆฌ๋Š” Software Engineer๋‹ค. ๊ถ๊ทน์ ์ธ ๋‹ต์„ ์ฐพ์•„๋‚ด๋Š” ๊ณผํ•™์„ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์•„๋‹ˆ๋ผ ๊ฐ€์žฅ ํšจ์œจ์ ์œผ๋กœ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์—”์ง€๋‹ˆ์–ด๋“ค์ด๋‹ค. โ€œํšจ์œจ์ ์ธ ๊ฒฐ๊ณผโ€๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋А ํ•˜๋‚˜์˜ ๋‹ต๋งŒ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค


1.2 Monolithic to MSA

nestjs-fastcam-msa_47-1


1.3 Monolithic Architecture

Monolithic Architecture๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•˜๋‚˜์˜ ๋ฉ์–ด๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค. UI, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ (Infrastructure) ๋“ฑ์ด ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  • ํ•˜๋‚˜์˜ ๋ฐฐํฌ ์œ ๋‹› : ๋ชจ๋“  ์š”์†Œ๊ฐ€ ํ•œ๋ฒˆ์— ๋ฐฐํฌ๋œ๋‹ค.
    • ์ž‘์€ ์ŠคํŽ™ ํ•˜๋‚˜์˜ ๋ณ€๊ฒฝ์ด ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์žฌ๋ฐฐํฌ๋ฅผ ์š”๊ตฌํ•œ๋‹ค.
    • ์—…๋ฐ์ดํŠธ ํฌ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด ์ „์ฒด ๋ฐฐํฌ๊ณผ์ •์„ ๋ชจ๋‘ ๊ฑฐ์ณ์•ผํ•œ๋‹ค (ํ…Œ์ŠคํŠธ, CICD๋“ฑ)
  • ๋„๋ฉ”์ธ๊ฐ„ ์˜์กด์„ฑ์ด ๊ฐ•ํ•˜๋‹ค : ๋„๋ฉ”์ธ์˜ ์˜ˆ์ œ-> Auth, User, Product, Payment
    • ๋ถ€๋ถ„์ ์ธ ์—…๋ฐ์ดํŠธ ๋ฐฐํฌ๊ฐ€ ์–ด๋ ต๋‹ค.
    • ํ•˜๋‚˜์˜ ์„ฌ์„ธํ•œ ๊ธฐ์ˆ ์  ๋ณ€๊ฒฝ์ด ์ˆ˜๋งŽ์€ ๋‹ค๋ฅธ ์š”์†Œ๋“ค์— โ€œํฐ ์˜ํ–ฅโ€์„ ๋ผ์น  ์ˆ˜ ์žˆ๋‹ค.
    • ์œ ์ง€ ๋ณด์ˆ˜์— ๋งŽ์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์ƒˆ๋กœ์šด ์ธ๋ ฅ ์˜จ๋ณด๋”ฉ์— ์ ์  ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ด์ง„๋‹ค.
  • ํ™•์žฅ์„ฑ : Scalability
    • ํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ™•์žฅ๋งŒ ํ•„์š”ํ•˜๋”๋ผ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๋ฅผ ํ™•์žฅํ•ด์•ผํ•œ๋‹ค

2. Microservice Architecture

Microservice Architecture๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘๊ณ  ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋“ค์„ ๋„๋ฉ”์ธ๋ณ„๋กœ ๋‚˜๋ˆ ์„œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ฐ ์„œ๋น„์Šค๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜๋˜๊ณ  ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋กœ ํ†ต์‹ ํ•˜๋ฉฐ ๊ฐ๊ฐ ๋”ฐ๋กœ ๊ฐœ๋ฐœ, ์œ ์ง€๋ณด์ˆ˜, ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

  • SRP : Single Responsibility Principle
    • ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ์„ ๋งก์•„์„œ ์šด์˜๋œ๋‹ค. ์˜ˆ) ์ธ์ฆ, ์‚ฌ์šฉ์ž, ๊ฒฐ์ œ, ์ƒํ’ˆ
    • ๋„๋ฉ”์ธ ๋‹จ์œ„๋ณ„ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฐœ๋ฐœ, ์œ ์ง€๋ณด์ˆ˜, ์šด์˜์ด ์‰ฌ์›Œ์ง„๋‹ค.
  • ๋…๋ฆฝ์ ์ธ ์šด์˜
    • ์„œ๋น„์Šค๊ฐ„ ์˜์กด์„ฑ์ด ์•ฝํ•˜๋‹ค.
    • ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์—๋Œ€ํ•ด โ€œํฐ ์˜ํ–ฅโ€์„ ๋ฏธ์น  ๊ฐ€๋Šฅ์„ฑ์ด ์ ๋‹ค.
    • ๊ฐ ๋„๋ฉ”์ธ๋ณ„๋กœ ํŒ€์„ ๊พธ๋ฆฌ๊ณ  ์šด์˜ํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋‹ค.
    • ํƒˆ์ค‘์•™ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์žฅ์• ๋ฅผ ๋ฒ„ํ‹ฐ๋Š” ๋Šฅ๋ ฅ(?) : Fault Tolerance
    • ํ•œ ์„œ๋น„์Šค์— โ€œ์ค‘๋Œ€ํ•œโ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๊ณ  ํ•ด์„œ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์ด ๋ชจ๋‘ ๋‹ค์šด๋˜์ง€ ์•Š๋Š”๋‹ค.
    • ์˜ˆ๋ฅผ๋“ค์–ด ๊ฒฐ์ œ ์„œ๋น„์Šค๊ฐ€ ๋‹ค์šด๋œ๋‹ค๊ณ  ์›น์‚ฌ์ดํŠธ ์ „์ฒด๊ฐ€ ๋‹ค์šด๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ฐœ๋ฐœ ๋‚œ์ด๋„๊ฐ€ ์ƒ๋‹นํ•˜๋‹ค
    • MSA๋ฅผ ์ œ๋Œ€๋กœ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด ์•Œ๊ณ  ์žˆ์–ด์•ผํ•˜๋Š” ์ง€์‹์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค.
    • Monolithic๋ณด๋‹ค ์˜คํžˆ๋ ค ๋” ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค

2.1 Monolithic์˜ ๋ฐฐํฌ ๋…๋ฆฝ์„ฑ ๋ฌธ์ œ

nestjs-fastcam-msa_47-2


2.2 Microservice์˜ ๋ฐฐํฌ ๋…๋ฆฝ์„ฑ

nestjs-fastcam-msa_47-3


2.3 Monolithic ๋ฐฐํฌ ๊ณผ์ • ๋ฌธ์ œ

nestjs-fastcam-msa_47-4


2.4 MSA ๋ฐฐํฌ ๊ณผ์ •

nestjs-fastcam-msa_47-5


2.5 Monolithic ๊ฐœ๋ฐœํŒ€ ๊ตฌ์„ฑ

nestjs-fastcam-msa_47-6


2.6 Microservice์˜ ๊ฐœ๋ฐœํŒ€ ๊ตฌ์„ฑ

nestjs-fastcam-msa_47-7


3. MSA์˜ ์ฃผ์š” ์š”์†Œ

MSA๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•ด์•ผํ•œ๋‹ค. MSA๋Š” โ€œ๊ฐœ๋…โ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋งค์šฐ ๋‹ค์–‘ํ•˜์ง€๋งŒ, ์–ด๋А์ •๋„ โ€œํ•„์ˆ˜โ€๋กœ ์ƒ๊ฐ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

API Gateway

  • ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์˜ ๋‹จ๋… ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ ์—ญํ• ์„ ํ•œ๋‹ค.
    • e.g. /user๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด user service๋กœ ๋ผ์šฐํŒ…์„ ํ•˜๊ฑฐ๋‚˜,
    • /auth๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด auth service๋กœ ๋ผ์šฐํŒ…์„ ํ•œ๋‹ค.
  • ๊ณตํ†ต์ ์ธ ์ œํ•œ/๋กœ์ง์„ ๋‹ด๋‹นํ•œ๋‹ค. (e.g. ์ธ์ฆ, Throttling, ์บ์‹ฑ, ๋กœ๊น… ๋ชจ๋‹ˆํ„ฐ๋ง)
  • ๋ณด์•ˆ ๋ ˆ์ด์–ด ์—ญํ• ์„ํ•œ๋‹ค. (e.g. ํ•˜๋‚˜์˜ ๊ณตํ†ต๋œ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ ์—ญํ• ์„ ํ•˜๋ฉฐ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋Š” ํ‘œ๋ฉด๋ฉด์ ์„ ์ค„์—ฌ์ค€๋‹ค.)

Service Discovery

  • ์ง€์†์ ์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์‚ญ์ œ๋˜๋Š” ์„œ๋น„์Šค๋“ค์„ ์‰ฝ๊ฒŒ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
  • Health Check๋ฅผ ํ†ตํ•ด ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์„œ๋น„์Šค๋“ค์„ ์ œ์™ธ์‹œํ‚จ๋‹ค.

์„œ๋น„์Šค๊ฐ„ ํ†ต์‹  : Inter-service Communication

  • ๋…๋ฆฝ์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•ด์„œ ์„œ๋กœ ํ†ต์‹ ์ด ํ•„์š”์—†๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค.
  • Sync (๋™๊ธฐ) : HTTP, gRPC
  • Async (๋น„๋™๊ธฐ) : RabbitMQ, Kafka, AWS SQS, Redis

๋…๋ฆฝ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : ํ•„์ˆ˜์‚ฌํ•ญ x

  • ๊ฐ ์„œ๋น„์Šค๋ณ„๋กœ ์ตœ์ ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค. (SQL, NoSQL๋“ฑ)

Distributed Logging & Monitoring

  • Microservice๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์„œ๋น„์Šค๋“ค์ด ๋ถ„์‚ฐ๋˜์–ด ์šด์˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊น…๊ณผ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ค‘์•™ํ™” ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
  • MSA๊ฐ€ ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ์„œ๋น„์Šค๊ฐ„ ์š”์ฒญ์˜ ํ๋ฆ„์„ ํŒŒ์•…ํ•  ํ•„์š”์„ฑ์ด ๋†’์•„์ง„๋‹ค.

CI/CD Pipeline

  • ์„œ๋น„์Šค๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ฐฐํฌ๊ณผ์ •๊ณผ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค.
  • ์‹œํ€€์Šค๊ฐ€ ์ •ํ™•ํžˆ ์งœ์—ฌ์ ธ์žˆ๋Š” ์ž‘์—…์„ ๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋Š”๊ฑด ๋น„ํšจ์œจ์ ์ด๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— MSA๋ฅผ ๋””ํ”Œ๋กœ์ด ํ• ๋•Œ CICD๋Š” ์‚ฌ ์‹ค์ƒ ํ•„์ˆ˜๋‹ค.

Event Driven Architecture

  • MSA๋Š” ์„œ๋น„์Šค๊ฐ„ Async(๋น„๋™๊ธฐ) ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ๋””์ž์ธํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.
  • ๋ชจ๋“  ํ†ต์‹ ์„ Sync(๋™๊ธฐ)๋กœ ์ง„ํ–‰ํ•˜๊ฒŒ๋˜๋ฉด ์•ˆ์ •์„ฑ์ด ๋ถ€์กฑํ•ด์ง€๊ณ  ์Šค์ผ€์ผ๋ง์ด ๋ณต์žกํ•ด์ง„๋‹ค

3.1 API Gateway

nestjs-fastcam-msa_47-8

  • ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๋ ˆ์ด์–ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.\
  • ํ†ตํ•ฉ๋œ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Single Point of Failure ๋˜๋Š” Bottle Neck์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์ตœ๋Œ€ํ•œ ๊ฐ€๋ณ๊ฒŒ ์„ค๊ณ„ํ•ด์„œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์—ญํ• ์— ์ถฉ์‹คํ•˜์ž

3.2 Service Discovery

nestjs-fastcam-msa_47-9

  • Monolithic Application์€ ๋ชจ๋“  ๋กœ์ง์ด ํ•˜๋‚˜์˜ ์œ ๋‹›์œผ๋กœ ํ†ตํ•ฉ๋ผ์žˆ์œผ๋‹ˆ ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์ด ํ•„์š”์—†๋‹ค.
  • MSA๋Š” ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์—์„œ ํ•„์š”ํ•œ ์š”์†Œ๋“ค์„ ๋ถˆ๋Ÿฌ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐฉ๋ฒ•์œผ๋ก  ๋Œ€ํ‘œ์ ์œผ๋กœ Client/Server Side Service Discovery๊ฐ€ ์กด์žฌํ•œ๋‹ค

3.3 Inter-Microservice Communication

nestjs-fastcam-msa_47-10

  • MSA๋Š” ์„œ๋น„์Šค๊ฐ„ ํ†ต์‹ ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.
  • ๊ฐ ์„œ๋น„์Šค๊ฐ„ ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ์†”๋ฃจ์…˜์ด ์กด์žฌํ•œ๋‹ค.
  • ์ง์ ‘์ ์ธ ์š”์ฒญ/์‘๋‹ต ํ˜•ํƒœ๋ฅผ ๋‹ค๋ฃจ๋Š” Sync(๋™๊ธฐ) ํ˜•ํƒœ์˜ ํ†ต์‹ ๊ณผ Queue ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” Async(๋น„๋™๊ธฐ) ํ˜•ํƒœ๊ฐ€ ์กด์žฌํ•œ๋‹ค

3.4 ๋…๋ฆฝ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

nestjs-fastcam-msa_47-11

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

3.5 Distributed Logging

nestjs-fastcam-msa_47-12

  • Monolithic Architecture๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ ํŒŒ์ผ์— ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์„œ๋ฒ„๋กœ ๋“ค์–ด๊ฐ€์„œ ๋ณผ ์ˆ˜ ์—†๋‹ค.
  • ๊ฐ ์„œ๋น„์Šค์—์„œ ์ƒ์„ฑ๋˜๋Š” ๋กœ๊ทธ๋“ค์„ ๋ชจ๋‘ ํ†ตํ•ฉํ•ด์„œ ์ค‘์•™ํ™” ํ•œ ํ›„ ๋ถ„์„ํ•ด์•ผํ•œ๋‹ค.
  • ๋กœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ์‹œ์Šคํ…œ์˜ ํ˜„์žฌ ์ƒํƒœ (Health/Memory/Cpu)๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค

3.6 CI/CD ํŒŒ์ดํ”„๋ผ์ธ

nestjs-fastcam-msa_47-13

  • MSA๋กœ ์ˆ˜๋งŽ์€ ์„œ๋น„์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌํ•œ๋‹ค๋Š”๊ฑด ๋ง์ด ์•ˆ๋œ๋‹ค. Human Error๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ง„๋‹ค.
  • ๊ฐœ๋ฐœ ํ›„ ์‹œ์Šคํ…œ์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  (CI ํ…Œ์ŠคํŠธ๋“ฑ) ์ž๋™์œผ๋กœ ๋นŒ๋“œ ๋ฐ ํŒจํ‚ค์ง• ํ›„
    • ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Kubernetes)์— ๋ฐฐํฌ ๋  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•ด์•ผ ํšจ์œจ์ ์œผ๋กœ MSA ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค

3.7 Event Driven Architecture

nestjs-fastcam-msa_47-14

  • Microservice๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ํšจ์œจ์ ์œผ๋กœ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  Scaling์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.
  • HTTP๋“ฑ ๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•˜๋ฉด Scaling์ด ์–ด๋ ค์›Œ์ง„๋‹ค.
  • Async ๋ฐฉ์‹์œผ๋กœ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•˜๋ฉด ์„œ๋น„์Šค๊ฐ„ ํšจ์œจ์ ์ธ decoupling์ด ๊ฐ€๋Šฅํ•ด์ง€๊ณ  ์„ค๊ณ„๊ฐ€ ํšจ์œจ์ ์ด๋‹ค

4. ์–‘๋‚ ์˜ ๊ฒ€ MSA

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

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

5. ์˜คํ•ดํ•˜์ง€ ๋ง์ž!

MSA๋Š” Microservice Architecture๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์„œ๋น„์Šค๋ฅผ ์ž‘๊ฒŒ ๋‚˜๋ˆ ์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋œ๋‹ค๋Š” ๊ฐœ๋…์ด๋‹ค.

MSA๊ฐ€ Domain Driven Design, Clean Architecture, Onion Architecture, Hexagonal Architecture ๋“ฑ์„ ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ํ•˜์ง€๋งŒ ํŠน์ • ์•„ํ‚คํ…์ฒ˜์™€ ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™•์‹คํžˆ MSA ์šด์˜์ด ์œ ๋ฆฌํ•˜๊ณ  ์กฐํ™”๊ฐ€ ์ข‹์•„์ง„๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํฐ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‹ค์–‘ ํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ•จ๊ป˜ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
  • ํ•˜์ง€๋งŒ ์—ฌ๊ฑด์ด ์•ˆ๋œ๋‹ค๋ฉด MVC ํŒจํ„ด์œผ๋กœ MSA๋ฅผ ํ•ด๋„ ํ‹€๋ฆฐ๊ฒŒ ์•„๋‹ˆ๋‹ค.

๊ณ ์ฐจ์› ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉ ํ• ์ˆ˜๋ก ๋ณต์žกํ•œ ํฐ ๊ทœ๋ชจ์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์œ ์ง€๋ณด์ˆ˜์™€ ๊ฐœ๋ฐœ์ด ํŽธ๋ฆฌํ•ด์ง„๋‹ค. ํ•˜์ง€๋งŒ ์ž‘์€ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์˜คํžˆ๋ ค ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ๋งŽ์•„์ง€๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์žฅ์• ๋ฌผ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋Š” ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ดํ•ดํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋‹ค.

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

๋ฌผ๋ก  ๋ชจ๋ฅด๊ณ  ์•ˆ์“ฐ๋Š”๊ฒƒ๊ณผ ์•Œ๊ณ  ์•ˆ์“ฐ๋Š”๊ฑด ๋„ˆ๋ฌด ๋‹ค๋ฅด๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๋งŽ์€ ์ง€์‹์„ ์Šต๋“ํ•œ ํ›„ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ํ˜„๋ช…ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธธ ๋ฐ”๋ž€๋‹ค.


6. MSA ์ง„ํ–‰ ๊ฐœ์š”

์ด ๊ฐ•์˜๋Š” ์ตœ์†Œํ•œ์˜ NestJS Microservice ๊ตฌํ˜„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ ์ฐจ ๊ธฐ์ˆ ์„ ๋ถ™์—ฌ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

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

์–ด๋–ค ๊ธฐ์ˆ ์„ ๊ณต๋ถ€ํ•˜๊ณ  ๊ทธ ๊ธฐ์ˆ ์„ ๊ผญ ์‹ค๋ฌด์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ๋งŒ ์œ ์šฉํ•œ๊ฑด ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™ ๋งŒํ•˜๋ฉด ์ˆ˜๊ฐ•์ƒ๋“ค์ด ์ด ๊ฐ•์˜์—์„œ ๋ฐฐ์šด๊ฑธ ์‹ค๋ฌด ์—์„œ ์‚ฌ์šฉ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ๋ฌด๋ฆฌํ•˜์ง€ ์•Š๋Š” ๊ทœ๋ชจ๋กœ Microservice๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณ ๋„ํ™”๋œ ๊ธฐ์ˆ ๋“ค์„ ๋ถ™์—ฌ๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐ•์˜๋ฅผ ์ง„ํ–‰ํ•  ๊ณ„ํš์ด๋‹ค.

์ด ๊ฐ•์˜์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  ๊ธฐ์ˆ ์ด โ€œMSA๋ฅผ ํ•˜๋ ค๋ฉด ๊ผญ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”โ€ ๊ธฐ์ˆ ์ด๋ผ ์ƒ๊ฐํ•  ํ•„์š”์—†๋‹ค. Docker์™€ Kubernetes๊ฐ™์€ ๊ฒฝ์šฐ ์‚ฌ์‹ค์ƒ ์‚ฌ์šฉ ์•ˆํ•˜๋Š”๊ฒŒ ๋” ์–ด๋ ต๊ธด ํ•˜์ง€๋งŒ, DDD, Clean Architecture, Istio, CQRS, Kafka๋“ฑ ๋„ˆ๋ฌด ๋งŽ์€ ๊ธฐ์ˆ ๋“ค์ด ๋Œ€์ฒด ์ƒํ’ˆ์ด ์กด์žฌํ•˜๊ณ , โ€œ๋„์ž… ํ•˜์ง€ ์•Š์„ ์šฉ๊ธฐโ€๋ฅผ ์ถฉ๋ถ„ํžˆ ๊ฐ–์„๋งŒํ•œ ๊ธฐ์ˆ ๋“ค์ด๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ์ด ๊ฐ•์˜์—์„œ ์ „๋‹ฌํ•˜๋Š” โ€œ๋ฉ”์„ธ์ง€โ€์— ์ง‘์ค‘ ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. ์–ด๋–ค ๊ธฐ์ˆ ์ด ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐ˜๋ฉด์— ์–ด๋–ค ๋‹จ์ ์ด ์žˆ๋Š”์ง€ ์ž˜ ์ดํ•ดํ•œ๋‹ค๋ฉด ๋‚ด ํŒ€๊ณผ ํ”„๋กœ์ ํŠธ์— ๊ฐ€์žฅ ์ ๋‹นํ•œ ๊ทœ๋ชจ์˜ MSA๋ฅผ ํ•  ์ˆ˜ ์žˆ์„๊ฑฐ๋ผ ์ƒ๊ฐํ•œ๋‹ค.

๐Ÿ’ก ํ”„๋กœ์ ํŠธ ๊ธฐ๋Šฅ ํ”Œ๋กœ์šฐ

์‚ฌ์šฉ์ž ์ธ์ฆ โ†’ ์ฃผ๋ฌธ ๋ฐœํ–‰ โ†’ ์ƒํ’ˆ ํ™•์ธ ๋ฐ ๊ฐ€๊ฒฉ ๊ฒ€์ฆ โ†’ ๊ฒฐ์ œ โ†’ ์•Œ๋ฆผ


6.1 ๊ตฌํ˜„ํ•  Microservice Domain

nestjs-fastcam-msa_47-15


6.2 ๊ตฌํ˜„ํ•  Microservice Domain ๊ตฌ์กฐ

nestjs-fastcam-msa_47-16


6.3 ์ฝ”๋“œ ์•„ํ‚คํ…์ฒ˜ ๋ฐœ์ „ ์‹œํ‚ค๊ธฐ

nestjs-fastcam-msa_47-17


6.4 ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํ‚น ๋ฐฉ๋ฒ• ๋ฐฐ์šฐ๊ธฐ

nestjs-fastcam-msa_47-18


6.5 ์ปจํ„ฐ์ด๋„ˆํ™” & ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜

nestjs-fastcam-msa_47-19


6.6 ํŒจํ„ด ์ ์šฉ

nestjs-fastcam-msa_47-20


6.7 ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๋กœ๊น…

nestjs-fastcam-msa_47-21