[MSA] chapter 1.8_MSA Component

Updated:

Categories:

Tags: ,

๐Ÿ“Œ ๊ฐœ์ธ์ ์ธ ๊ณต๊ฐ„์œผ๋กœ ๊ณต๋ถ€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
์ •ํ™•ํ•˜์ง€ ์•Š์€ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค :๐Ÿ˜ธ
[ํ‹€๋ฆฐ ๋‚ด์šฉ์€ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋ณต๋ฐ›์œผ์‹ค๊ฑฐ์—์š”]

์ธํ”„๋Ÿฐ Dowon Lee๋‹˜์˜ Spring Cloud๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(MSA) ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ํ•„๊ธฐ์ž…๋‹ˆ๋‹ค.๐Ÿ˜Š
Spring Cloud๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(MSA) ๊ฐ•์˜ ๋“ค์œผ๋Ÿฌ ๊ฐ€๊ธฐ๐Ÿ‘ฉโ€๐Ÿซ

MSA ํ‘œ์ค€ ๊ตฌ์„ฑ์š”์†Œ์™€ ์ฃผ์š” ๊ธฐ์ˆ 

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

1. MSA ๊ธฐ๋ณธ ๊ตฌ์กฐ ๋ฐ ๊ตฌ์„ฑ ์š”์†Œ

  • API ๊ฒŒ์ดํŠธ์›จ์ด
    • ํด๋ผ์ด์–ธํŠธ(๊ทธ๋ฆผ์ƒ Mobile App, Browser App) ์š”์ฒญ์„ ์ˆ˜์ง‘ํ•˜์—ฌ ์ ์ ˆํ•œ ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ์ง„์ž…์  ์—ญํ• 
    • API Gateway๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๋„๋ก ํ•˜๋ฉฐ, ์„œ๋น„์Šค ์œ„์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ์™€ ํ†ต์‹ ํ•œ๋‹ค.
  • ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ
    • ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ,
    • API ๊ฒŒ์ดํŠธ์›จ์ด ๋ฐ ๋ผ์šฐํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์„œ๋น„์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค.
  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ
    • ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ํŠธ๋ž˜ํ”ฝ์„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜์—ฌ ์„œ๋ฒ„์˜ ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.
  • ํ™˜๊ฒฝ ์„ค์ • ๊ด€๋ฆฌ
    • ๊ฐ ์„œ๋น„์Šค๊ฐ€ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ํ™˜๊ฒฝ ์„ค์ •์„ ์ €์žฅํ•˜๊ณ  ํ•„์š”ํ•œ ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๋„๋ก ํ•œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™”
    • Docker์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์„ ํ†ตํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.
  • ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ
    • ์„œ๋น„์Šค ๊ฐ„ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์ง€์›ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • ๋ฐฑํ‚น ์„œ๋น„์Šค
    • ๊ฐ ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๋ชจ์•„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ตฌ์„ฑ์œผ๋กœ, NoSQL, RDBMS ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์ง„๋‹จ
    • Telemetry ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ฐ ์„œ๋น„์Šค์˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์ง„๋‹จํ•œ๋‹ค.

2. ์„œ๋น„์Šค ๋ฉ”์‰ฌ (Service Mesh)

  • MSA ์ธํ”„๋ผ์—์„œ ๋ฏธ๋“ค์›จ์–ด ์—ญํ• ์„ ํ•จ
  • ์„œ๋น„์Šค ๋ฉ”์‰ฌ๋Š” ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ถ”์ƒํ™”๋œ ๋„คํŠธ์›Œํฌ ๋ ˆ์ด์–ด์ด๋‹ค.
  • ๋‚ด๋ถ€ ์„œ๋น„์Šค ๊ฐ„ ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ต์‹ ์„ ๋ณด์žฅํ•˜๊ณ , ๋ผ์šฐํŒ…, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์ธ์ฆ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์•ˆ์ •์„ฑ๊ณผ ๊ฐ€์‹œ์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.
  • Istio์™€ Envoy ๊ฐ™์€ ๊ธฐ์ˆ ์ด ๋Œ€ํ‘œ์ 
  • ์„œ๋น„์Šค ๋ฉ”์‰ฌ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ:
    • ํ†ต์‹  ์ œ์–ด ๋ฐ ๋ณด์•ˆ: URI, API ๋ฒ„์ „, ์ธ์ฆ ๋“ฑ์„ ํ†ตํ•ด ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ์ œ์–ดํ•œ๋‹ค.
    • ๋ถ€ํ•˜ ๋ถ„์‚ฐ ๋ฐ ์žฅ์•  ๊ฒฉ๋ฆฌ: ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•˜๊ณ  ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ตœ์†Œํ•œ์˜ ์˜ํ–ฅ์œผ๋กœ ์„œ๋น„์Šค ์šฐํšŒ๋ฅผ ์ง€์›ํ•œ๋‹ค.
    • ์ถ”์  ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง: ํ†ต์‹  ๊ฒฝ๋กœ์™€ ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ถ„์„ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

3. MSA๋ฅผ ์ง€์›ํ•˜๋Š” ์ฃผ์š” ๊ธฐ์ˆ  ์Šคํƒ

  1. ๊ฒŒ์ดํŠธ์›จ์ด
    • Nginx, Kong: ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ผ์šฐํŒ…ํ•˜๊ณ  API ๊ฒŒ์ดํŠธ์›จ์ด ์—ญํ• ์„ ํ•œ๋‹ค.
    • Netflix OSS Zuul: ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ์™€ ํ†ตํ•ฉ๋˜์–ด API ๊ฒŒ์ดํŠธ์›จ์ด ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  2. ์„œ๋น„์Šค ๋ฉ”์‰ฌ
    • Istio, Envoy: ํƒ„๋ ฅ์ ์ธ ์„œ๋น„์Šค ๋ฉ”์‰ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋‚ด๋ถ€ ์„œ๋น„์Šค ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
  3. ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ
    • Docker: ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆํ™”๋กœ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ๊ฒฉ๋ฆฌ๋œ ์„œ๋น„์Šค ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • Kubernetes: ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์„ ํ†ตํ•ด ์„œ๋น„์Šค ๋ฐฐํฌ์™€ ํ™•์žฅ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
  4. ํ”„๋ ˆ์ž„์›Œํฌ
    • Spring Boot์™€ Spring Cloud: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ, ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด์—์„œ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•œ๋‹ค.
  5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฉ”์‹œ์ง•
    • Kafka, Redis, MongoDB: ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ๊ณผ ๋ฐฑํ‚น ์„œ๋น„์Šค์—์„œ ๊ฐ๊ฐ ํ™œ์šฉ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” NoSQL ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์„ ํ†ตํ•ด ์ตœ์ ํ™”๋œ๋‹ค.
  6. ์ž๋™ํ™” ๋„๊ตฌ
    • Gradle๊ณผ Maven: ์ฝ”๋“œ ๋นŒ๋“œ์™€ ํŒจํ‚ค์ง•์„ ๊ด€๋ฆฌํ•œ๋‹ค.
    • Jenkins: CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•์„ ํ†ตํ•ด ์ง€์†์  ํ†ตํ•ฉ๊ณผ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.
  7. ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ
    • ELK Stack: Elasticsearch, Logstash, Kibana๋กœ ๊ตฌ์„ฑ๋œ ์Šคํƒ์œผ๋กœ, ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๋ถ„์„ํ•˜์—ฌ ์„œ๋น„์Šค ์ƒํƒœ๋ฅผ ์‹œ๊ฐํ™”ํ•œ๋‹ค.
    • DataDog: ์„œ๋น„์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์„ฑ๋Šฅ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์œ ๋ฃŒ ์†”๋ฃจ์…˜์œผ๋กœ ๋‹ค์ˆ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์š”์•ฝ ๐Ÿ”—

MSA๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๊ฐ€ ๊ฒฐํ•ฉ๋˜์–ด ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๋ฉฐ

API Gateway, ์„œ๋น„์Šค ๋ฉ”์‰ฌ, Docker์™€ Kubernetes ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ , ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ CI/CD ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ ์šด์˜์„ ์ง€์›ํ•œ๋‹ค.






MSA ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด ๋‹ค๋ฅธ ๊ธ€ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

Leave a comment