--- id: P-REINFORCE-AUTO-18EB0F category: "10_Wiki/๐Ÿ’ก Topics/Architecture" confidence_score: 0.95 tags: [auto-reinforced] last_reinforced: 2026-05-03 github_commit: "[P-Reinforce] Continuous Worker - Microservices Architecture (MSA)" --- # [[Microservices Architecture (MSA)|Microservices Architecture (MSA)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰ ์ค‘์‹ฌ์œผ๋กœ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์กฐ์งํ•˜๊ณ , ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๋ฐ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•œ ์ž‘์€ ์„œ๋น„์Šค๋“ค์˜ ์กฐํ•ฉ์œผ๋กœ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค [1, 2]. "ํ•œ ๊ฐ€์ง€ ์ผ์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ(Do one thing and do it well)"์ด๋ผ๋Š” ์œ ๋‹‰์Šค ์ฒ ํ•™์„ ๋”ฐ๋ฅด๋ฉฐ, ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๋ถ€ํ•˜์™€ ํŠธ๋ž˜ํ”ฝ ์ŠคํŒŒ์ดํฌ๋ฅผ ์šฐ์•„ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹œ์Šคํ…œ์˜ ํšŒ๋ณต๋ ฅ(Resiliency)์„ ๋†’์ผ ๋ชฉ์ ์œผ๋กœ ๋„์ž…๋ฉ๋‹ˆ๋‹ค [1, 2]. ๊ฐœ๋ณ„ ์„œ๋น„์Šค๋“ค์€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ์–ธ์–ด์— ์ข…์†๋˜์ง€ ์•Š๊ณ  HTTP๋‚˜ ๊ฒฝ๋Ÿ‰ํ™”๋œ ๋ฉ”์‹œ์ง• ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ํ†ต์‹ ํ•˜์—ฌ ์กฐ์ง์˜ ๋ฏผ์ฒฉํ•œ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [2, 3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๊ตฌ์„ฑ ๋ฐ ํŠน์„ฑ**: MSA๋Š” ๋ถ„์‚ฐ๋œ ๊ฑฐ๋ฒ„๋„Œ์Šค์™€ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํŠน์ง•์œผ๋กœ ํ•˜๋ฉฐ, ๋˜‘๋˜‘ํ•œ ์—”๋“œํฌ์ธํŠธ์™€ ๋‹จ์ˆœํ•œ ํŒŒ์ดํ”„(Smart endpoints and dumb pipes), ์‹คํŒจ๋ฅผ ๊ฐ€์ •ํ•œ ์„ค๊ณ„(Design for failure) ๋ฐ ์ง„ํ™”ํ˜• ์„ค๊ณ„ ์ฒ ํ•™์„ ๊ทผ๊ฐ„์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค [2]. ํ”„๋กœ์ ํŠธ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ์ œํ’ˆ ๋‹จ์œ„๋กœ ํŒ€์„ ๊ตฌ์„ฑํ•˜๋ฉฐ, ์„œ๋น„์Šค๋“ค์ด ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜๋”๋ผ๋„ ๋ฌด๋ฐฉํ•˜๋„๋ก ์„ค๊ณ„๋ฉ๋‹ˆ๋‹ค [2, 3]. * **ํ”„๋ ˆ์ž„์›Œํฌ ๊ธฐ๋ฐ˜์˜ ๊ตฌํ˜„ ํŒจํ„ด (ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ์‹ค์ „ ํŒจํ„ด)**: * **Spring Boot & Spring Cloud**: Java ์ƒํƒœ๊ณ„์—์„œ๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์˜ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ํŒจํ„ด(ํ™˜๊ฒฝ ์„ค์ • ๊ด€๋ฆฌ, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ, ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค, ์ง€๋Šฅํ˜• ๋ผ์šฐํŒ…)์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด Spring Cloud์™€ Netflix OSS(Eureka, Hystrix, Zuul, Ribbon ๋“ฑ)๋ฅผ ๋„๋ฆฌ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค [4, 5]. * **NestJS**: TypeScript์™€ Node.js ๊ธฐ๋ฐ˜์˜ NestJS๋Š” ๋ชจ๋“ˆํ™”๋œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ TCP, Redis, Kafka, RabbitMQ, gRPC ๋“ฑ ๋‹ค์ค‘ ํŠธ๋žœ์ŠคํฌํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ๋‚ด์žฅ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฒฌ๊ณ ํ•œ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ํŒจํ„ด์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค [6, 7]. * **๋Œ€๊ทœ๋ชจ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๋ถ„์„**: ์ˆ˜๋งŽ์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ ์†์—์„œ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด, ๋„ทํ”Œ๋ฆญ์Šค(Netflix)๋Š” ์š”์ฒญ ํ๋ฆ„์„ ์‹œ๊ฐํ™”ํ•˜๋Š” Slalom, ์ˆ˜๋งŒ ๊ฐœ์˜ ๋ฉ”ํŠธ๋ฆญ์—์„œ ๋ฌธ์ œ๋ฅผ ์ถ•์†Œํ•˜๋Š” Mogul, ์ธ์Šคํ„ด์Šค ์„ฑ๋Šฅ์„ ๊ณ ํ•ด์ƒ๋„๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” Vector ๋“ฑ ๊ฑฐ์‹œ์ /๋ฏธ์‹œ์  ๊ด€์ ์˜ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ๋„๊ตฌ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค [8-11]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) * **๋ณต์žก์„ฑ์˜ ์ด๋™๊ณผ ๊ฒฝ๊ณ„ ๋ถ„ํ• ์˜ ์–ด๋ ค์›€**: ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ๊ณ„๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ •์˜ํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ, ๋‹จ์ผ ์‹œ์Šคํ…œ ๋‚ด๋ถ€์— ์žˆ๋˜ ๋ณต์žก์„ฑ์ด ์„œ๋น„์Šค ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๋ถ€๋กœ ์ด๋™ํ•˜์—ฌ ์˜คํžˆ๋ ค ์‹œ์Šคํ…œ์„ ์•ฝํ™”์‹œํ‚ฌ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค [12]. "์•ฝํ•œ ํŒ€์€ ํ•ญ์ƒ ์•ฝํ•œ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ ๋‹ค"๋Š” ์‚ฌ์‹ค์„ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [12]. * **์šด์˜ ๋ฐ ๋””๋ฒ„๊น…์˜ ๊ณ ๋„ํ™”**: ๋‹จ์ผ ๋ชจ๋†€๋ฆฌ์Šค ํ™˜๊ฒฝ์— ๋น„ํ•ด ๋””๋ฒ„๊น…, ๋ฐฐํฌ, ๋กœ๊น…์˜ ๋‚œ์ด๋„๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ƒ์Šนํ•ฉ๋‹ˆ๋‹ค [13]. ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(์บ์‹ฑ, ๋ณด์•ˆ, ์ธ์ฆ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ, ๋™์‹œ์„ฑ ์ œ์–ด ๋“ฑ)๋ฅผ ๋ชจ๋“  ๋ถ„์‚ฐ ์„œ๋น„์Šค์— ๊ฑธ์ณ ์ผ๊ด€๋˜๊ฒŒ ์ ์šฉํ•˜๋Š” ๋ณ„๋„์˜ ์ „๋žต์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค [14-17]. * **์„ฑ๋Šฅ ๋ฐ ํ†ต์‹  ๋ณ‘๋ชฉ**: ๋™๊ธฐ์‹ HTTP ํ”„๋กœํ† ์ฝœ์€ ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ ์‹œ์Šคํ…œ์—์„œ ์ œํ•œ ์š”์†Œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ๊ธฐ๋ฐ˜์ด๋‚˜ ์ž๋™ ๋ฐฑํ”„๋ ˆ์…”(Back pressure)๋ฅผ ํ™œ์šฉํ•œ ๋…ผ๋ธ”๋กœํ‚น ํ†ต์‹  ๋ฐฉ์‹์˜ ๊ณ ๋ ค๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [13]. * **์•„ํ‚คํ…์ฒ˜ ๋„์ž… ์‹œ์ **: 20๋ช… ๋ฏธ๋งŒ์˜ ๊ฐœ๋ฐœ์ž ํŒ€์ผ ๊ฒฝ์šฐ ์ฒ˜์Œ๋ถ€ํ„ฐ MSA๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [13]. ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ๋Š” "๋ชจ๋†€๋ฆฌ์Šค๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๋ชจ๋“ˆ์‹์œผ๋กœ ์œ ์ง€ํ•˜๋‹ค๊ฐ€, ๋ชจ๋†€๋ฆฌ์Šค๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋  ๋•Œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„ํ• ํ•˜๋ผ"๊ณ  ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค [18]. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๋ฐ ์ง„ํ™” (Architecture Design & Evolution)] * [[Monolithic Architecture]] * ์—ฐ๊ฒฐ ์ด์œ : ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ์ถœ๋ฐœ์ ์ด์ž, ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์— ๊ถŒ์žฅ๋˜๋Š” ์•„ํ‚คํ…์ฒ˜์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [18]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ดˆ๊ธฐ ์‹œ์Šคํ…œ์˜ ๋””๋ฒ„๊น… ๋ฐ ๋ฐฐํฌ ํšจ์œจ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ์–ด๋А ์‹œ์ ์— ์‹œ์Šคํ…œ์˜ ๋ชจ๋“ˆ์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์•„ํ‚คํ…์ฒ˜์  ์ง„ํ™” ๊ณผ์ •์„ ๊นŠ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [13, 18]. * [[Cross-Cutting Concerns]] * ์—ฐ๊ฒฐ ์ด์œ : MSA์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋กœ๊น…, ๋ณด์•ˆ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ, ๋ถ„์‚ฐ ์บ์‹ฑ ๋“ฑ์˜ ๊ณตํ†ต ๋กœ์ง(ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ)์„ ๋ชจ๋“  ์„œ๋น„์Šค ์ „๋ฐ˜์— ๊ฑธ์ณ ์ผ๊ด€๋˜๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [14, 17, 19]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ํŒŒํŽธํ™”๋œ ์„œ๋น„์Šค ๊ด€๋ฆฌ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด AOP, ๋ฏธ๋“ค์›จ์–ด, ์ธํ„ฐ์…‰ํ„ฐ์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ ํŒจํ„ด์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [19-22]. #### [๊ตฌํ˜„ ์ƒํƒœ๊ณ„ ๋ฐ ๋„๊ตฌ (Implementation Ecosystem & Tools)] * [[Spring Cloud Netflix]] * ์—ฐ๊ฒฐ ์ด์œ : Spring Boot ํ™˜๊ฒฝ์—์„œ Eureka(์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ), Hystrix(์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค) ๋“ฑ์˜ Netflix ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ MSA ํŒจํ„ด์„ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•˜๊ฒŒ ๋•๋Š” ํ•ต์‹ฌ ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [4, 5]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๋ ˆ๋ฒจ์˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์žฅ์•  ๊ฒฉ๋ฆฌ(Fault Tolerance), ์„œ๋น„์Šค ๋“ฑ๋ก ๋ฐ ํƒ์ƒ‰ ๋“ฑ์˜ ๊ธฐ์ˆ ์  ๋ณต์žก์„ฑ์„ ํ”„๋ ˆ์ž„์›Œํฌ ์ˆ˜์ค€์—์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 5, 18]. * [[NestJS Microservices]] * ์—ฐ๊ฒฐ ์ด์œ : Node.js ๋ฐ TypeScript ์ง„์˜์—์„œ Redis, Kafka, gRPC ๋“ฑ ๋‹ค์–‘ํ•œ ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต์„ ์ง€์›ํ•˜๋ฉฐ ๊ตฌ์กฐํ™”๋œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์„ค๊ณ„๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ˜„๋Œ€์  ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์‹ค์ „ ํŒจํ„ด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [6, 7]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์˜์กด์„ฑ ์ฃผ์ž…(DI)๊ณผ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋ถ„์‚ฐํ˜• ๋ฐฑ์—”๋“œ ํ™˜๊ฒฝ์—์„œ ๊ฐ์ฒด ์ง€ํ–ฅ์  ์›์น™์„ ์–ด๋–ป๊ฒŒ ๊ฐ•์ œํ•˜๊ณ  ์Šค์ผ€์ผ๋งํ•˜๋Š”์ง€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 23]. ### Deeper Research Questions - ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ๋„ทํ”Œ๋ฆญ์Šค์˜ Mogul๊ณผ ๊ฐ™์ด ์ˆ˜๋งŒ ๊ฐœ์˜ ๋ฉ”ํŠธ๋ฆญ ์†์—์„œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์˜ ๊ทผ๋ณธ ์›์ธ(Root cause)์„ ์ฐพ์•„๋‚ด๋Š” ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ์ตœ์ ํ™” ํŒŒ์ดํ”„๋ผ์ธ์€ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„๋˜๋Š”๊ฐ€? [10, 24] - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์—์„œ ๋™๊ธฐ์‹ HTTP์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์•„ํ‚คํ…์ฒ˜์™€ ๋ฐฑํ”„๋ ˆ์…”(Back pressure) ์ œ์–ด๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? [13] - ๋ชจ๋†€๋ฆฌ์‹ ์‹œ์Šคํ…œ์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค์˜ ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„(Bounded Context)๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์€ ๋ฌด์—‡์ธ๊ฐ€? [12, 18, 25] - ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋‹ค์ค‘ ์„œ๋น„์Šค์— ๊ฑธ์นœ ํŠธ๋žœ์žญ์…˜์˜ ์›์ž์„ฑ(Atomicity)๊ณผ ์ผ๊ด€์„ฑ(Consistency)์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด 2๋‹จ๊ณ„ ์ปค๋ฐ‹(2PC)์ด๋‚˜ Saga ํŒจํ„ด์„ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€? [26] - Spring Boot์˜ AOP ๋ฐ NestJS์˜ Interceptor๋Š” MSA์˜ ๋ถ„์‚ฐ ๋กœ๊น…, ์ธ์ฆ๊ณผ ๊ฐ™์€ ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(Cross-cutting concerns)๋ฅผ ๊ฐœ๋ณ„ ์„œ๋น„์Šค ์ฝ”๋“œ ์˜ค์—ผ ์—†์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€? [6, 7, 21, 22] ### Practical Application Contexts - **Implementation:** Spring Boot Initializr๋ฅผ ํ†ตํ•ด Eureka Server๋‚˜ Feign, Zuul ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, NestJS์˜ ๋‹ค์ค‘ ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต์„ ํ™œ์šฉํ•ด ๋…๋ฆฝ๋œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 6, 27]. - **System Design:** "์‹œ์Šคํ…œ ์„ค๊ณ„๋Š” ์กฐ์ง์˜ ํ†ต์‹  ๊ตฌ์กฐ๋ฅผ ๋‹ฎ๋Š”๋‹ค"๋Š” ์ฝ˜์›จ์ด์˜ ๋ฒ•์น™(Conway's Law)์„ ์ ์šฉํ•˜์—ฌ, ์ œํ’ˆ ํŒ€์˜ ์—ญ๋Ÿ‰๊ณผ ๊ตฌ์กฐ์— ๋งž์ถฐ ์„œ๋น„์Šค์˜ ์•„ํ‚คํ…์ฒ˜ ๊ฒฝ๊ณ„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์‹œ์Šคํ…œ์„ ๋””์ž์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [2, 28]. - **Operation / Maintenance:** ๋ชจ๋‹ˆํ„ฐ๋ง ์‚ฌ๊ฐ์ง€๋Œ€๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค์˜ ์š”์ฒญ ID(Request ID)๋ฅผ ๋ชจ๋“  ๋กœ๊น… ์ด๋ฒคํŠธ์— ๊ธฐ๋ก(Traceability)ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ ์ƒํƒœ์™€ ์—๋Ÿฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํฌ๊ด„์ ์ธ ๊ด€์ œ ์‹œ์Šคํ…œ(์˜ˆ: Vector, Atlas)์„ ์šด์˜ ๋‹จ๊ณ„์— ํ•„์ˆ˜์ ์œผ๋กœ ํŽธ์ž…์‹œํ‚ต๋‹ˆ๋‹ค [11, 29, 30]. - **Learning Path:** ์šฐ์„  ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์—์„œ ๋ชจ๋“ˆ์„ ๋‚˜๋ˆ„์–ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝํ—˜์„ ์Œ“์€ ํ›„, ํ™•์žฅ์˜ ํ•œ๊ณ„๊ฐ€ ์™”์„ ๋•Œ ์ ์ง„์ ์œผ๋กœ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ์™€ API ๊ฒŒ์ดํŠธ์›จ์ด ๋“ฑ์˜ ๋ถ„์‚ฐ ํ†ต์‹  ํŒจํ„ด์„ ํ•™์Šตํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค [18]. - **My Project Relevance:** ํ˜„์žฌ ๋‹ค๋ฃจ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ(Spring Boot ํ˜น์€ NestJS)๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์˜์กด์„ฑ ์ฃผ์ž…๊ณผ ๋ชจ๋“ˆ ๊ตฌ์กฐ๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„ํ• ๋  ๋•Œ, ๊ธฐ์กด์˜ ๋กœ์ง์„ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋…๋ฆฝ๋œ ์„œ๋น„์Šค๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•ด ๋‚ด๊ธฐ ์œ„ํ•œ ์„ค๊ณ„ ์ฐธ์กฐ ๋ชจ๋ธ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 18]. ### Adjacent Topics - [[Domain-Driven Design (DDD)]] * ํ™•์žฅ ๋ฐฉํ–ฅ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ ์„œ๋น„์Šค ๋‹จ์œ„(๋ชจ๋“ˆ)๋ฅผ ๋‚˜๋ˆŒ ๋•Œ ๊ธฐ์ค€์ด ๋˜๋Š” '๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ(Bounded Context)'์™€ ๋„๋ฉ”์ธ ์ค‘์‹ฌ์˜ ์ฝ”๋“œ ์กฐ์งํ™” ์ „๋žต์„ ์‹ฌ์ธต์ ์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์กฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค [6, 25, 31]. --- *Last updated: 2026-05-03* --- *Last updated: 2026-05-03* - Raw Source: 00_Raw/2026-05-03/Microservices Architecture (MSA).md ---