DEV/ETC

MSA ( ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜) ์ดํ•ดํ•˜๊ธฐ

SBP 2025. 6. 2. 08:37
MSA (๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜) ์ดํ•ดํ•˜๊ธฐ

๐Ÿงฉ MSA (๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜)๋ž€?

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

์ด๋Š” ์ „ํ†ต์ ์ธ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜(Monolithic Architecture)๊ฐ€ ๊ฐ€์ง€๋Š” ๊ฐœ๋ฐœ, ๋ฐฐํฌ, ํ™•์žฅ์„ฑ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.

โœจ MSA์˜ ์ฃผ์š” ํŠน์ง• ๋ฐ ์›์น™

  • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responsibility Principle): ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์ด๋‚˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ฑ…์ž„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค์˜ ๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์‘์ง‘๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.
  • ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ (Independent Deployment): ๊ฐ ์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋” ๋น ๋ฅด๊ณ  ์œ ์—ฐํ•œ ๋ฐฐํฌ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์ˆ  ๋‹ค์–‘์„ฑ ๋ฐ ๋ถ„์‚ฐ๋œ ๊ฑฐ๋ฒ„๋„Œ์Šค (Technology Diversity & Decentralized Governance): ๊ฐ ์„œ๋น„์Šค ํŒ€์€ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์˜ ๊ธฐ์ˆ  ์Šคํƒ์„ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ (Decentralized Data Management): ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ž์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง) ์ด๋Š” ์„œ๋น„์Šค ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ํƒ„๋ ฅ์„ฑ ๋ฐ ์žฅ์•  ๊ฒฉ๋ฆฌ (Resilience & Fault Isolation): ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์—์„œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„, ํ•ด๋‹น ์žฅ์• ๊ฐ€ ์ „์ฒด ์‹œ์Šคํ…œ์œผ๋กœ ์ „ํŒŒ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ํŒจํ„ด ์ ์šฉ)
  • ํ™•์žฅ์„ฑ (Scalability): ํŠน์ • ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์š”๊ตฌ์‚ฌํ•ญ(ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€ ๋“ฑ)์ด ๋Š˜์–ด๋‚  ๊ฒฝ์šฐ, ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ™•์žฅํ•  ํ•„์š” ์—†์ด ํ•ด๋‹น ์„œ๋น„์Šค๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  (Inter-Service Communication): ์„œ๋น„์Šค๋“ค์€ ์ฃผ๋กœ HTTP/REST API, gRPC ๋˜๋Š” ๋ฉ”์‹œ์ง€ ํ(์˜ˆ: Kafka, RabbitMQ)์™€ ๊ฐ™์€ ๊ฒฝ๋Ÿ‰ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘ MSA์˜ ์žฅ์ ๊ณผ ๐Ÿ‘Ž ๋‹จ์  (๋„์ „ ๊ณผ์ œ)

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

๐Ÿค” MSA ๋„์ž…, ์–ธ์ œ ๊ณ ๋ คํ•ด์•ผ ํ• ๊นŒ์š”?

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

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

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

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

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

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ (MSA):

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ž‘์€ ์„œ๋น„์Šค๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ์„œ๋น„์Šค๋Š” ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์„œ๋กœ ๋А์Šจํ•˜๊ฒŒ ๊ฒฐํ•ฉ(Loosely Coupled)๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ ๊ฒฐ๋ก 

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

์ค‘์š”ํ•œ ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ, ํŒ€์˜ ์—ญ๋Ÿ‰, ์กฐ์ง ๋ฌธํ™”, ๊ทธ๋ฆฌ๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉํ‘œ๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์—ฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. MSA๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์œ ์—ฐ์„ฑ, ํ™•์žฅ์„ฑ, ํƒ„๋ ฅ์„ฑ์˜ ๊ฐ€์น˜๊ฐ€ ์šด์˜์˜ ๋ณต์žก์„ฑ์„ ์ƒ์‡„ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์„ฑ๊ณต์ ์ธ ๋„์ž…์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.