--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[Microservices Architecture]] last_updated: 2026-05-02 --- # [[Microservices Architecture]] ## ๐Ÿ“Œ Brief Summary ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)๋Š” ํฌ๊ณ  ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์„œ๋น„์Šค๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋‹ค [1-3]. ๊ฐ ์„œ๋น„์Šค๋Š” ์ž์œจ์ ์ธ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋˜๋ฉฐ ๊ฐ€๋ฒผ์šด ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜(์ฃผ๋กœ HTTP API, ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ๋“ฑ)์„ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•œ๋‹ค [1, 4, 5]. ์ด๋ฅผ ํ†ตํ•ด ์กฐ์ง์€ ํŠน์ • ๊ธฐ๋Šฅ๋งŒ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์— ๋งž์ถฐ ๋น ๋ฅด๊ณ  ๋นˆ๋ฒˆํ•˜๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํƒ„๋ ฅ์ ์ธ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค [6, 7]. --- > "๊ฑฐ๋Œ€ํ•œ ๋‹จ์ผ์ฒด๋ฅผ ์ชผ๊ฐœ์–ด ๋…๋ฆฝ์ ์ธ ์ƒ๋ช…์ฒด๋“ค์˜ ์—ฐํ•ฉ๊ตฐ์œผ๋กœ ๋งŒ๋“ค๊ณ , ๊ฐ์ž๊ฐ€ ๊ฐ€์žฅ ์ž˜ํ•˜๋Š” ์ผ์— ์ง‘์ค‘ํ•˜๊ฒŒ ํ•˜๋ผ" โ€” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ ๋‹จ์œ„์˜ ์ž‘๊ณ  ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋“ค๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ตฌ์ถ•ํ•˜๊ณ , ๊ฐ€๋ฒผ์šด ํ†ต์‹  ํ”„๋กœํ† ์ฝœ(์ฃผ๋กœ REST/gRPC)์„ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•˜๊ฒŒ ํ•˜๋Š” ์„ค๊ณ„ ๋ฐฉ์‹. --- ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(Microservices Architecture)๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋…๋ฆฝ์ ์ธ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋กœ ๋ถ„ํ• ํ•˜๋Š” ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฐฉ์‹์ด๋‹ค[1]. ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ๊ณผ ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ…์˜ ๋ฐœ์ „๊ณผ ํ•จ๊ป˜ ๋„์ž…์ด ๊ฐ€์†ํ™”๋˜๊ณ  ์žˆ์œผ๋ฉฐ, JAMstack ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” API ํ˜•ํƒœ๋กœ๋„ ์ž์ฃผ ํ™œ์šฉ๋œ๋‹ค[2, 3]. ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ(Bounded Context) ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋ฉด ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ์ง€์† ๊ฐ€๋Šฅ์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค[4, 5]. --- > ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)๋Š” ํฌ๊ณ  ๋ณต์žกํ•œ ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ([[business|business]] Domain)์„ ์ค‘์‹ฌ์œผ๋กœ ์ž‘๊ณ  ๋…๋ฆฝ์ ์ด๋ฉฐ ์ž์œจ์ ์ธ ์„œ๋น„์Šค๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [1-3]. ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ž์ฒด ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์ฃผ๋กœ HTTP/REST API๋‚˜ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ํ์™€ ๊ฐ™์€ ๊ฒฝ๋Ÿ‰ํ™”๋œ ๋„คํŠธ์›Œํฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค [3, 4]. ์ด ์•„ํ‚คํ…์ฒ˜๋Š” ๊ฐœ๋ณ„ ์„œ๋น„์Šค์˜ ๋…๋ฆฝ์ ์ธ ๊ฐœ๋ฐœ, ๋ฐฐํฌ ๋ฐ ํ™•์žฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์œ ์—ฐ์„ฑ ๋ฐ ์žฅ์•  ๋ณต์›๋ ฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค [1, 5]. --- ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ์ค‘์‹ฌ์œผ๋กœ ๋ชจ๋ธ๋ง๋œ ์ž‘๊ณ  ์ž์œจ์ ์ธ ์„œ๋น„์Šค๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์กฐํ™”ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋‹ค [1]. ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋Š” ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ, ๋ฐฐํฌ ๋ฐ ํ™•์žฅ๋  ์ˆ˜ ์žˆ์–ด ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ๋‹จ์ผ ๋‹จ์œ„๋กœ ๊ฒฐํ•ฉ๋œ ๊ธฐ์กด์˜ ๋ชจ๋†€๋ฆฌ์‹(Monolithic) ์Šคํƒ€์ผ๊ณผ ์ง์ ‘์ ์œผ๋กœ ๋Œ€๋น„๋œ๋‹ค [1]. ๊ฐ ์„œ๋น„์Šค๋Š” ์ž˜ ์ •์˜๋œ ๊ฒฝ๋Ÿ‰ API(์ฃผ๋กœ HTTP/REST ๋˜๋Š” ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ํ)๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฑฐ์ณ ์„œ๋กœ ํ†ต์‹ ํ•˜๋ฉฐ ๋ฏผ์ฒฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค [2]. ## ๐Ÿ“– Core Content * **๋…๋ฆฝ์„ฑ๊ณผ ์ž์œจ์„ฑ:** ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ(๋„๋ฉ”์ธ)์„ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๊ฐ ์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋…์ž์ ์œผ๋กœ ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋ฐ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋‹ค [3, 8-10]. ์ด๋Ÿฌํ•œ ์ž์œจ์„ฑ ๋•๋ถ„์— ํŒ€๋ณ„๋กœ ํ•ด๋‹น ์„œ๋น„์Šค ํŠน์„ฑ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ธฐ์ˆ  ์Šคํƒ๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค [10-12]. * **๋ฐ์ดํ„ฐ ๊ฒฉ๋ฆฌ (Exclusive State):** ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ์€ ๊ฐ ์„œ๋น„์Šค๊ฐ€ ์ž์‹ ๋งŒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๋ฐฐํƒ€์ ์œผ๋กœ ์†Œ์œ ํ•˜๋Š” '์„œ๋น„์Šค๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database per Service)' ์›์น™์„ ๋”ฐ๋ฅธ๋‹ค๋Š” ์ ์ด๋‹ค [13-16]. ๋‹ค๋ฅธ ์„œ๋น„์Šค๋Š” ์ด ๋ฐ์ดํ„ฐ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ณต์œ ๋‚˜ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ์ž˜ ์ •์˜๋œ API๋‚˜ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ƒํ˜ธ์ž‘์šฉํ•ด์•ผ ํ•œ๋‹ค [14, 15]. * **๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responsibility)๊ณผ ๋„๋ฉ”์ธ ๋ถ„๋ฆฌ:** ๊ฐ ์„œ๋น„์Šค๋Š” ๋‹จ์ผ ๋น„์ฆˆ๋‹ˆ์Šค ์ฑ…์ž„์—๋งŒ ์ง‘์ค‘ํ•ด์•ผ ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์˜ค์ง ํ•˜๋‚˜๋กœ ์ œํ•œ๋˜์–ด์•ผ ํ•œ๋‹ค [17]. ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD) ์›์น™์„ ํ™œ์šฉํ•˜์—ฌ ์„œ๋น„์Šค์˜ ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ์‹๋ณ„ํ•˜๊ณ  ๋ถ„๋ฆฌํ•˜๋Š” ์ž‘์—…์ด ์ˆ˜๋ฐ˜๋œ๋‹ค [16, 17]. * **๋น„๋™๊ธฐ ํ†ต์‹  ๋ฐ ์œ„์น˜ ํˆฌ๋ช…์„ฑ:** ๋ถ„์‚ฐ๋œ ์„œ๋น„์Šค ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ์ฆ‰๊ฐ์ ์ธ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š” ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ๋ฐฉ์‹(์˜ˆ: RabbitMQ, Kafka ํ™œ์šฉ)์ด ๊ถŒ์žฅ๋œ๋‹ค [18]. ๋˜ํ•œ, ์„œ๋น„์Šค๋“ค์€ ํŠน์ • ๋ฌผ๋ฆฌ์  IP ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ๋…ผ๋ฆฌ์  ์‹๋ณ„์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ์œ„์น˜ ํˆฌ๋ช…์„ฑ(Location Transparency)์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋‚˜ ์„œ๋น„์Šค ๋ฉ”์‹œ(Service Mesh)์™€ ๊ฐ™์€ ๋™์  ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๊ธฐ์ˆ ์ด ํ™œ์šฉ๋œ๋‹ค [19]. --- - **์ถ”์ถœ๋œ ํŒจํ„ด:** "Decomposition and Autonomy" โ€” ์‹œ์Šคํ…œ์„ ์ž‘๊ฒŒ ๋‚˜๋ˆ„์–ด ๊ฐ ์„œ๋น„์Šค๊ฐ€ ์ž์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๋ฐ ํ™•์žฅ(Scaling)๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ์œผ๋กœ์จ, ํŠน์ • ๊ธฐ๋Šฅ์˜ ์žฅ์• ๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด๋กœ ํ™•์‚ฐ(Cascading Failure)๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ๋ฐฉ์–ด์  ์—ฐํ•ฉ ํŒจํ„ด. - **ํ•ต์‹ฌ ์š”์†Œ:** - **API Gateway:** ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ ์ ˆํ•œ ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…ํ•˜๊ณ  ํ†ตํ•ฉ ๊ด€๋ฆฌ. - **Service Discovery:** ๋™์ ์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ์„œ๋น„์Šค๋“ค์˜ ์œ„์น˜๋ฅผ ์ž๋™์œผ๋กœ ํŒŒ์•…. - **Database per Service:** ์„œ๋น„์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ฐ„์„ญ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋…๋ฆฝ์  ์ง„ํ™” ๋ณด์žฅ. - **Event-driven Communication:** ๋ฉ”์‹œ์ง€ ํ๋ฅผ ํ†ตํ•œ ๋น„๋™๊ธฐ ๊ฒฐํ•ฉ์œผ๋กœ ์„ฑ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ ํ™•๋ณด. - **์˜์˜:** ๋Œ€๊ทœ๋ชจ ์กฐ์ง์—์„œ ํŒ€๋ณ„ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜๊ณ , ๊ธฐ์ˆ  ์Šคํƒ์˜ ๋‹ค์–‘์„ฑ์„ ์ˆ˜์šฉํ•˜๋ฉฐ, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ํƒ„๋ ฅ์„ฑ์„ 100% ํ™œ์šฉ ๊ฐ€๋Šฅ์ผ€ ํ•จ. --- * **๋…๋ฆฝ์  ์„œ๋น„์Šค ๋ถ„ํ• ๊ณผ ํ™•์žฅ์„ฑ ํ™•๋ณด** ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ **๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ์ชผ๊ฐœ๋Š” ์•„ํ‚คํ…์ฒ˜**์ด๋‹ค[1]. ์ด๋ฅผ ํ†ตํ•ด ์ „์ฒด ์‹œ์Šคํ…œ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์ง€ ์•Š์•„๋„ ํŠน์ • ์„œ๋น„์Šค๋งŒ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ํŠธ๋ž˜ํ”ฝ์— ๋งž์ถฐ ํ™•์žฅ(Scaling)ํ•  ์ˆ˜ ์žˆ์–ด ํ˜„๋Œ€์ ์ธ ์‹œ์Šคํ…œ ์„ค๊ณ„์˜ ํ•ต์‹ฌ์œผ๋กœ ์ž๋ฆฌ ์žก์•˜๋‹ค[1]. * **ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ๊ณผ์˜ ๊ฒฐํ•ฉ** 2025๋…„ ํ˜„์žฌ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ…(Serverless Computing)๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ **ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋œ ๊ธฐ์ˆ  ์Šคํƒ**์œผ๋กœ ์ฑ„ํƒ์ด ๊ฐ€์†ํ™”๋˜๊ณ  ์žˆ๋‹ค[3]. AWS Lambda์™€ ๊ฐ™์€ ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์€ ์ž๋™ ํ™•์žฅ์„ฑ๊ณผ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค[6]. * **JAMstack ๋ฐ API ๊ธฐ๋ฐ˜ ํ”„๋ก ํŠธ์—”๋“œ์™€์˜ ์‹œ๋„ˆ์ง€** ํ˜„๋Œ€ ์›น ๊ฐœ๋ฐœ ์•„ํ‚คํ…์ฒ˜์ธ JAMstack ๊ตฌ์กฐ์—์„œ, ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ์€ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ API๋กœ ์ถ”์ƒํ™”๋˜๋ฉฐ ์ด๋Š” ์ข…์ข… ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ํ˜•ํƒœ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณต๋œ๋‹ค[2]. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ๋‹ค[2, 7]. * **ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜์™€์˜ ์—ฐ๊ด€์„ฑ** ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ๊ธฐ์›(origin)์œผ๋กœ ํ‰๊ฐ€๋ฐ›๊ธฐ๋„ ํ•œ๋‹ค[5]. ๋‹จ์ผ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ(Bounded Context)๋ฅผ ๋„˜์–ด์„œ๋Š” ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ๋•Œ, **๊ฐ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ๋ฅผ ๋‹จ์ผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„ํ• **ํ•จ์œผ๋กœ์จ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ์ง€์† ๊ฐ€๋Šฅ์„ฑ(Sustainability)๊ณผ ๊ฒฉ๋ฆฌ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค[4]. * **ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌํ˜„ ํŠน์ง•** * **Node.js (Express)**: ๊ฐ€๋ณ๊ณ  ๋‹จ์ˆœํ•œ ์•„ํ‚คํ…์ฒ˜ ๋•๋ถ„์— **์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋‚ฎ๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•œ(latency-sensitive) ์†Œ๊ทœ๋ชจ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค**๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„ ํƒ์ง€๋กœ ํ‰๊ฐ€๋œ๋‹ค[8]. * **Java (Spring Boot)**: ๋ชจ๋“ˆํ™”๋˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜ ํ…œํ”Œ๋ฆฟ์„ ๊ตฌ์„ฑํ•˜์—ฌ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค[5, 9]. --- * **ํ•ต์‹ฌ ๊ฐœ๋… ๋ฐ ํŠน์ง•** * ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋‹จ์ผ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ(Single business task)์— ์ง‘์ค‘ํ•˜๋ฉฐ, ๊ฐ ์„œ๋น„์Šค๊ฐ€ ์ž์ฒด ์ฝ”๋“œ๋ฒ ์ด์Šค, CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๋ฐ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค [4, 6, 7]. * ์‹œ์Šคํ…œ์„ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ•ดํ•จ์œผ๋กœ์จ ๊ฐ ํŒ€์€ ์ž์‹ ์ด ๋‹ด๋‹นํ•œ ์„œ๋น„์Šค๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋…๋ฆฝ์ ์œผ๋กœ ์†Œ์œ (End-to-End Ownership)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 8]. * ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์„ ์œตํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ์  ์ด์งˆ์„ฑ(Technology Heterogeneity)์„ ์ง€์›ํ•˜๋ฏ€๋กœ, ๊ฐ ์„œ๋น„์Šค์˜ ํŠน์„ฑ์— ๋งž๋Š” ์ตœ์ ์˜ ๋„๊ตฌ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(ํด๋ฆฌ๊ธ€๋ž ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐ ์˜์†์„ฑ)๋ฅผ ์ž์œจ์ ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 9, 10]. * **๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋„์ž…์˜ ์ฃผ์š” ์žฅ์ ** * **๋ฏผ์ฒฉ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ:** ๋‹จ์ผ ๊ตฌ์กฐ(Monolithic)์™€ ๋‹ฌ๋ฆฌ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์žฌ๋ฐฐํฌํ•  ํ•„์š” ์—†์ด ํ•„์š”ํ•œ ๊ฐœ๋ณ„ ์„œ๋น„์Šค๋งŒ ๋ณ‘๋ ฌ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์ž์ฃผ ์—…๋ฐ์ดํŠธํ•˜๋ฉฐ, ์œ ์—ฐํ•˜๊ฒŒ ์ž์›์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 9, 11]. * **์žฅ์•  ๋ณต์›๋ ฅ([[Resilience|Resilience]]):** ๊ณ ์žฅ ๊ฒฉ๋ฆฌ(Fault isolation)๋ฅผ ํ†ตํ•ด ํ•œ ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฌธ์ œ์˜ ๋ฒ”์œ„(Blast radius)๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์ค‘๋‹จ์œผ๋กœ ์ด์–ด์ง€์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [9, 12, 13]. * **์กฐ์ง์  ํšจ์œจ์„ฑ:** ๋„ทํ”Œ๋ฆญ์Šค(Netflix), ์•„๋งˆ์กด(Amazon), ์Šคํฌํ‹ฐํŒŒ์ด(Spotify) ๋“ฑ์˜ ๊ธฐ์—… ์‚ฌ๋ก€์ฒ˜๋Ÿผ ์†Œ๊ทœ๋ชจ ์ „๋‹ด ํŒ€์—๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์— ๋”ฐ๋ฅธ ์ฑ…์ž„์„ ๋ถ„์‚ฐํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„์™€ ํ˜์‹ ์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 14, 15]. * **์ฃผ์š” ๋‹จ์  ๋ฐ ํ•ด๊ฒฐ ๊ณผ์ œ** * ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋ณธ์งˆ์ ์ธ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ , ๋ถ€๋ถ„์  ์‹คํŒจ ์ฒ˜๋ฆฌ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ์˜ ์ถ”๊ฐ€์ ์ธ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ์ง€์›ํ•  ๊ณ ๋„๋กœ ์ˆ™๋ จ๋œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค [10, 11, 16]. * ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฑธ์ณ ๋™์ž‘ํ•˜๋Š” ์š”์ฒญ๊ณผ ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๊นŒ๋‹ค๋กœ์šฐ๋ฉฐ, ๊ฐ ์„œ๋น„์Šค๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ๋Ÿฐํƒ€์ž„(JVM ๋“ฑ)๊ณผ ์„œ๋ฒ„ ๊ณต๊ฐ„์„ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ธํ”„๋ผ ๋ฐ ์šด์˜ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค [11, 16, 17]. * ์ด์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ํšŒ๋กœ ์ฐจ๋‹จ๊ธฐ(Circuit Breakers), ์žฌ์‹œ๋„(Retries) ๋“ฑ ์‹คํŒจ๋ฅผ ๋Œ€๋น„ํ•œ ์„ค๊ณ„์™€ ์ปจํ…Œ์ด๋„ˆ(Docker), ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Kubernetes)์„ ํ™œ์šฉํ•œ ์šด์˜ ์ž๋™ํ™”์˜ ๋„์ž…์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [18]. * **๊ตฌ์„ฑ ํŒจํ„ด (Composition Patterns)** * ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ๊ณผ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด Aggregator, Proxy, Branch, Chained, Shared Resource ๋“ฑ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ํŒจํ„ด์ด ์‹ค๋ฌด์—์„œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [19, 20]. --- * **์„œ๋น„์Šค ๋ถ„ํ•ด์™€ ์ž์œจ์„ฑ (Service Decomposition & Independence)**: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‚ฌ์šฉ์ž ์ธ์ฆ, ๊ฒฐ์ œ ์ฒ˜๋ฆฌ, ์ œํ’ˆ ์นดํƒˆ๋กœ๊ทธ ๋“ฑ ๋‹จ์ผ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์„ธ๋ถ„ํ™”๋œ ์„œ๋น„์Šค๋กœ ๋ถ„ํ•ด๋œ๋‹ค [2]. ๊ฐ ์„œ๋น„์Šค๋Š” ๊ณ ์œ ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค, CI/CD ํŒŒ์ดํ”„๋ผ์ธ, ๊ทธ๋ฆฌ๊ณ  ์ž์ฒด ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ ธ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธ ๋ฐ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค [2]. * **๋ถ„์‚ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋ฐ ํด๋ฆฌ๊ธ€๋ž ํ™˜๊ฒฝ (Decentralized Governance)**: ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค ๊ตฌ์กฐ ๋•๋ถ„์— ๊ฐ ๊ฐœ๋ฐœ ํŒ€์€ ํŠน์ • ์„œ๋น„์Šค์˜ ๋ชฉ์ ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋„๊ตฌ์™€ ๊ธฐ์ˆ  ์Šคํƒ์„ ์ž์œจ์ ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค [2]. ์ด๋Š” ํ˜์‹ ์„ ์ด‰์ง„ํ•˜๋ฉฐ ํด๋ฆฌ๊ธ€๋ž(Polyglot) ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์˜์†์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค [2]. * **์ฃผ์š” ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ ์š”์†Œ**: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ ํŒจํ„ด์„ ๋ณด๋ฉด, ์ฃผ๋กœ API ๊ฒŒ์ดํŠธ์›จ์ด(API Gateway), ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ(Service Discovery), ๊ฐœ๋ณ„ DB๋ฅผ ๊ฐ€์ง„ ๋‹ค์ˆ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(Message Broker), ์ค‘์•™ ์ง‘์ค‘์‹ ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ์š”์†Œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค [3, 4]. * **ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ์™€์˜ ๊ฒฐํ•ฉ (Cloud-Native Synergy)**: ๋„ทํ”Œ๋ฆญ์Šค(Netflix)๋‚˜ ์Šคํฌํ‹ฐํŒŒ์ด(Spotify)์˜ ์‚ฌ๋ก€์ฒ˜๋Ÿผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ปจํ…Œ์ด๋„ˆํ™”(์˜ˆ: Docker) ๋ฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ(์˜ˆ: Kubernetes)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์•„ํ‚คํ…์ฒ˜์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌํ•˜๊ฒŒ ๋•๋Š”๋‹ค [5, 6]. * **ํ†ต์‹  ํ”„๋กœํ† ์ฝœ**: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์€ ๋‹จ์ˆœํ•œ REST API๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ง€์—ฐ ์‹œ๊ฐ„์ด ์งง๊ณ  ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ง€์›ํ•˜๋Š” gRPC [7], ํ˜น์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋‹ค๋‹จ๊ณ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜(EDA)์˜ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง€ ๋ผ์šฐํŒ…์„ ์ ๊ทน ํ™œ์šฉํ•œ๋‹ค [8]. ## โš–๏ธ Trade-offs & Caveats * **์žฅ์  (Pros):** ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฌ๋Š” ํŠน์ • ์„œ๋น„์Šค๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด ์ž์› ํšจ์œจ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ์••๋„์ ์œผ๋กœ ๋›ฐ์–ด๋‚˜๋‹ค [11, 20, 21]. ๋˜ํ•œ ํ•œ ์„œ๋น„์Šค์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๋Š” ๊ฒฐํ•จ ๊ฒฉ๋ฆฌ(Fault Isolation)๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, CI/CD ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ ๋ฐฐํฌ ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค [11, 14, 21]. * **๋ณต์žก์„ฑ ์ฆ๊ฐ€ ๋ฐ ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ (Cons):** ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ณ ์œ ์˜ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ(Latency)๊ณผ ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ˆ˜์‹ญ~์ˆ˜๋ฐฑ ๊ฐœ์˜ ์„œ๋น„์Šค๊ฐ€ ์–ฝํ˜€ ์žˆ์„ ๊ฒฝ์šฐ ๋ถ„์‚ฐ ์ถ”์ (Distributed Tracing) ๋„๊ตฌ ์—†์ด๋Š” ์—๋Ÿฌ์˜ ๊ทผ๋ณธ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต๋‹ค [22-25]. * **๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€์˜ ์–ด๋ ค์›€:** ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ ์ „๋ฐ˜์— ๊ฑธ์นœ ๊ฐ•๋ ฅํ•œ ACID ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ด์ง„๋‹ค [22, 26, 27]. ๊ทธ ๋Œ€์‹  Saga ํŒจํ„ด ๋“ฑ์„ ํ™œ์šฉํ•ด ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฑธ์นœ '์ตœ์ข… ์ผ๊ด€์„ฑ(Eventual Consistency)'์„ ๋ณด์žฅํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ์˜ ๋‚œ์ด๋„๋ฅผ ๊ธ‰๊ฒฉํžˆ ๋†’์ธ๋‹ค [26-28]. * **๋ง‰๋Œ€ํ•œ ์šด์˜ ์˜ค๋ฒ„ํ—ค๋“œ:** ์ธํ”„๋ผ ๊ด€๋ฆฌ๊ฐ€ ๊นŒ๋‹ค๋กœ์›Œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes), ๋„์ปค(Docker), API ๊ฒŒ์ดํŠธ์›จ์ด ๋“ฑ ๋ณต์žกํ•œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ์ˆ  ์Šคํƒ๊ณผ ๊ณ ๋„ํ™”๋œ DevOps ์ „๋ฌธ ์ง€์‹์ด ํ•„์ˆ˜์ ์œผ๋กœ ์š”๊ตฌ๋œ๋‹ค [11, 16, 24, 29]. ์„œ๋น„์Šค๊ฐ€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋„ˆ๋ฌด ์ž‘๊ฒŒ ์ชผ๊ฐœ์งˆ ๊ฒฝ์šฐ(Over-granularity), ์ธํ”„๋ผ ์ค‘๋ณต๊ณผ ํ†ต์‹  ๋ณต์žก์„ฑ๋งŒ ๊ฐ€์ค‘์‹œํ‚ฌ ์œ„ํ—˜์ด ์žˆ๋‹ค [17, 30, 31]. --- - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๋งŒ๋Šฅ์ด๋ผ๋Š” ๋งน์‹ ์—์„œ ๋ฒ—์–ด๋‚˜, ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ๋ณต์žก์„ฑ๊ณผ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€ ๋น„์šฉ(Distributed Transaction) ๋“ฑ '๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ์„ธ๊ธˆ'์„ ์‹ ์ค‘ํžˆ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” ํ˜„์‹ค์  ๊ด€์ ์ด ์ •๋ฆฝ๋จ. - **์ •์ฑ… ๋ณ€ํ™”:** Antigravity ํ”„๋กœ์ ํŠธ์˜ ๋ฐฑ์—”๋“œ๋Š” ์—์ด์ „ํŠธ ๋ธŒ๋ ˆ์ธ, ์ง€์‹ ์ธ๋ฑ์„œ, ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ธฐ ๋“ฑ์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ˜•ํƒœ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด, ํŠน์ • ๋ชจ๋“ˆ์˜ ๋ถ€ํ•˜ ์ฆ๊ฐ€ ์‹œ ํ•ด๋‹น ๋ถ€๋ถ„๋งŒ ์ฆ‰๊ฐ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•จ. --- ์†Œ์Šค ๋ฐ์ดํ„ฐ ๋‚ด์— ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ์ž์ฒด๊ฐ€ ๊ฐ€์ง€๋Š” ๊ตฌ์ฒด์ ์ธ ๋‹จ์ ์ด๋‚˜ ์ œ์•ฝ ์‚ฌํ•ญ์„ ๊นŠ์ด ์žˆ๊ฒŒ ์„œ์ˆ ํ•œ ์ •๋ณด๋Š” ๋ถ€์กฑํ•˜๋‹ค. **(์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.)** ๋‹ค๋งŒ, ์ฃผ์–ด์ง„ ์†Œ์Šค๋ฅผ ํ†ตํ•ด ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๋กœ์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ˆ˜๋ฐ˜ํ•˜๋Š” ์ผ๋ถ€ ์„ค๊ณ„์  ์ œ์•ฝ ๋ฐ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. * **๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ†ต์‹ ์˜ ๋ณต์žก์„ฑ**: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹Œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์ด๋ฏ€๋กœ, ๋™๊ธฐ์‹(Sync) ํ†ต์‹ ๊ณผ ๋น„๋™๊ธฐ์‹(Async) ํ†ต์‹  ํŒจํ„ด ๊ฐ„์˜ ๋ณต์žกํ•œ ์„ค๊ณ„ ์„ ํƒ์ด ์š”๊ตฌ๋˜๋ฉฐ, ๋ฉ”์‹œ์ง€ ํ(Message Queues) ๋“ฑ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ†ตํ•ฉ ํŒจํ„ด์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค[10]. * **์„œ๋ฒ„๋ฆฌ์Šค ์ œ์•ฝ ์‚ฌํ•ญ ๊ณต์œ **: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ(FaaS)์— ๋ฐฐํฌํ•  ๊ฒฝ์šฐ, ์ดˆ๊ธฐ ๊ตฌ๋™ ์‹œ ๋ฐœ์ƒํ•˜๋Š” **์ฝœ๋“œ ์Šคํƒ€ํŠธ(Cold start) ์ง€์—ฐ, ์ œํ•œ๋œ ์‹คํ–‰ ์‹œ๊ฐ„, ๊ธฐ์ € ์ธํ”„๋ผ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ ์ƒ์‹ค** ๋“ฑ์˜ ์„œ๋ฒ„๋ฆฌ์Šค ํ”Œ๋žซํผ์ด ์ง€๋‹Œ ์ œ์•ฝ์„ ๊ทธ๋Œ€๋กœ ๋– ์•ˆ๊ฒŒ ๋œ๋‹ค[6]. * **์•ˆํ‹ฐํŒจํ„ด์˜ ์œ„ํ—˜**: ๋ถ€์ ์ ˆํ•˜๊ฒŒ ์„ค๊ณ„๋  ๊ฒฝ์šฐ ๋ถ„์‚ฐ ๋ชจ๋†€๋ฆฌ์Šค(Distributed Monolith)์™€ ๊ฐ™์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•ˆํ‹ฐํŒจํ„ด(Anti-patterns)์— ๋น ์งˆ ์œ„ํ—˜์ด ์กด์žฌํ•œ๋‹ค[10]. --- - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** AI ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. --- * **๊ตฌํ˜„ ๋ฐ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ณต์žก์„ฑ**: ์„œ๋น„์Šค ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋ฉฐ, ๋น„๋™๊ธฐ ํ˜ธ์ถœ, ๋„คํŠธ์›Œํฌ ์ง€์—ฐ, ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋“ฑ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ณ ์œ ์˜ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ตฌํ˜„์˜ ๋‚œ์ด๋„๊ฐ€ ๋†’๋‹ค [9]. * **๋†’์€ ๋ฆฌ์†Œ์Šค ์š”๊ตฌ๋Ÿ‰**: ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ, ๊ณ ๋„ํ™”๋œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ, ์„œ๋น„์Šค ๋ฉ”์‹œ(Service Mesh) ๋ฐ ํฌ๊ด„์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง/์ถ”์  ์ธํ”„๋ผ๊ฐ€ ํ•„์ˆ˜์ ์ด๋ฏ€๋กœ ์‹œ์Šคํ…œ ์ž์› ๋ฐ ์šด์˜ ๋น„์šฉ์ด ๋งŽ์ด ๋“ ๋‹ค [9]. * **๊ตฌ์กฐ ํŒŒ์•… ๋ฐ ๊ด€๋ฆฌ์˜ ์–ด๋ ค์›€**: ์„œ๋น„์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ฑ์žฅํ•จ์— ๋”ฐ๋ผ ์„œ๋กœ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ๊ณผ ์ข…์†์„ฑ์ด ๋ณต์žกํ•˜๊ฒŒ ์–ฝํžŒ ์›น(Web) ํ˜•ํƒœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค [10, 11]. ์ด๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ํŒŒํŽธํ™”๋˜์–ด ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๋™์ž‘์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๋ฉฐ, ์•„ํ‚คํ…์ฒ˜์˜ ๋“œ๋ฆฌํ”„ํŠธ(Drift)๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ†ตํ•ฉ๋œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ์ง€์†์ ์ธ ์‹œ๊ฐํ™”๊ฐ€ ์š”๊ตฌ๋œ๋‹ค [11, 12]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [๋น„๊ต ํŒจ๋Ÿฌ๋‹ค์ž„ / ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„] - [[Monolithic Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ํ™•์žฅ์„ฑ๊ณผ ๋ฐฐํฌ ์†๋„์˜ ํ•œ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ๋Œ€์กฐํ•ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ์ „ํ†ต์ ์ธ ์•„ํ‚คํ…์ฒ˜์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋ฌถ์—ฌ ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ•ํ•œ ๊ฒฐํ•ฉ๋„์™€ ํ™•์žฅ์„ฑ ๋ฌธ์ œ, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ธฐ์ˆ ์  ์ž„๊ณ„์ ๊ณผ ๊ทธ๋กœ ์ธํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. - [[Service-Oriented Architecture (SOA)]] - ์—ฐ๊ฒฐ ์ด์œ : ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ด์ „ ์„ธ๋Œ€์˜ ๋ถ„์‚ฐ ์„ค๊ณ„ ๋ฐฉ์‹์œผ๋กœ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ง„ํ™” ๊ณผ์ •์„ ์„ค๋ช…ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ธฐ์กด SOA๊ฐ€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„œ๋น„์Šค ๋ฒ„์Šค(ESB)์— ์ง€๋‚˜์น˜๊ฒŒ ์˜์กดํ•˜์—ฌ ๋ณ‘๋ชฉ์„ ์ผ์œผํ‚จ ๋ฐ˜๋ฉด, MSA๊ฐ€ '์Šค๋งˆํŠธ ์—”๋“œํฌ์ธํŠธ์™€ ๋ค ํŒŒ์ดํ”„(Smart Endpoints and Dumb Pipes)' ์›์น™์„ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ์ง„์ •ํ•œ ์„œ๋น„์Šค ๋…๋ฆฝ์„ฑ์„ ํ™•๋ณดํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. #### [๊ตฌํ˜„ ์›๋ฆฌ / ํ™œ์šฉ ๋„๊ตฌ] - [[Domain-Driven Design (DDD)]] - ์—ฐ๊ฒฐ ์ด์œ : ๊ฑฐ๋Œ€ํ•œ ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋‚˜๋ˆŒ ๋•Œ ๊ธฐ์ค€์ด ๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰ ๋ชจ๋ธ๋ง ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ํฌ๊ธฐ(Granularity)๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๊ธฐ์ค€๊ณผ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์ด ์ ์šฉ๋˜๋Š” ๊ตฌ์ฒด์ ์ธ ๋ฐ”์šด๋”๋ฆฌ(Bounded Context) ์„ค์ • ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค. - [[Saga Pattern]] - ์—ฐ๊ฒฐ ์ด์œ : ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง€๋Š” ๊ตฌ์กฐ์—์„œ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ '์ตœ์ข… ์ผ๊ด€์„ฑ'์„ ๋ณด์žฅํ•˜๋Š” ํ•„์ˆ˜ ๊ตฌํ˜„ ํŒจํ„ด์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋‹จ์ผ ACID ํŠธ๋žœ์žญ์…˜์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์—์„œ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง•๊ณผ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜(Compensating Transaction)์„ ํ†ตํ•ด ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. - [[API Gateway]] - ์—ฐ๊ฒฐ ์ด์œ : ํด๋ผ์ด์–ธํŠธ์™€ ์ˆ˜๋งŽ์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์‚ฌ์ด์—์„œ ๋‹จ์ผ ์ง„์ž…์  ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋ผ์šฐํŒ…๊ณผ ๋ณด์•ˆ์„ ๋‹ด๋‹นํ•˜๋Š” ์ธํ”„๋ผ ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ถ„์‚ฐ๋œ ์ˆ˜๋งŽ์€ ์„œ๋น„์Šค์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ˆจ๊ธฐ๊ณ  ๋ณต์žก์„ฑ์„ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ํ†ต์‹  ํ๋ฆ„์„ ํ†ต์ œํ•˜๋Š” ๋ฐฉ์‹์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค. ### Deeper Research Questions - ๋‹จ์ผ ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ ์ง„์ ์œผ๋กœ ์ „ํ™˜ํ•  ๋•Œ, ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒจํ„ด(์˜ˆ: Strangler Fig Pattern)์€ ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”๊ฐ€? - '์„œ๋น„์Šค๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database per Service)' ๊ตฌ์กฐ์—์„œ Saga ํŒจํ„ด ์™ธ์— ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฐ์ดํ„ฐ์˜ ์ตœ์ข… ์ผ๊ด€์„ฑ(Eventual Consistency)์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜์  ๋Œ€์•ˆ์€ ๋ฌด์—‡์ธ๊ฐ€? - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋ถ„ํ• ํ•  ๋•Œ ์„œ๋น„์Šค์˜ ์ ์ • ํฌ๊ธฐ(Granularity)๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ๊ด€์ ์ธ ๊ธฐ์ค€์€ ๋ฌด์—‡์ด๋ฉฐ, ๋„ˆ๋ฌด ์ž˜๊ฒŒ ์ชผ๊ฐœ์–ด ์ƒ๊ธฐ๋Š” ์šด์˜ ๋ณต์žก์„ฑ(Over-engineering)์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์—์„œ ๋™๊ธฐ์‹ ํ†ต์‹ (HTTP/REST)๊ณผ ๋น„๋™๊ธฐ์‹ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ(Event-Driven)์€ ์„ฑ๋Šฅ ๋ฐ ๊ฒฐํ•จ ๊ฒฉ๋ฆฌ ์ธก๋ฉด์—์„œ ์–ด๋–ค ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ฐ๊ฐ ์–ด๋–ค ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ํ•ฉํ•œ๊ฐ€? - ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ, ํŠธ๋žœ์žญ์…˜์˜ ํ๋ฆ„์„ ์ถ”์ ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์‚ฐ ์ถ”์ (Distributed Tracing) ๋ฐ ๊ด€์ธก์„ฑ(Observability) ํ™•๋ณด์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ธ๊ฐ€? ### Practical Application Contexts - **Implementation:** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ณ„๋„์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์™€ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ดํ›„ ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๊ณ , ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์€ REST API ๋˜๋Š” Kafka์™€ ๊ฐ™์€ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ธŒ๋กœ์ปค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. - **System Design:** ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์กฐ์ง ๊ตฌ์กฐ๋„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ „์ฒด ์ƒ๋ช…์ฃผ๊ธฐ(๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ, ์šด์˜)๋ฅผ ์ž์œจ์ ์ธ ์†Œ๊ทœ๋ชจ ํŒ€(์˜ˆ: ํˆฌ ํ”ผ์ž ํŒ€)์ด ์˜จ์ „ํžˆ ์†Œ์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ˜์›จ์ด์˜ ๋ฒ•์น™(Conway's Law)์— ๋ถ€ํ•ฉํ•˜๊ฒŒ ์‹œ์Šคํ…œ๊ณผ ํŒ€ ์กฐ์ง์„ ํ•จ๊ป˜ ์„ค๊ณ„ํ•œ๋‹ค. - **Operation / Maintenance:** ์ˆ˜์‹ญ ๊ฐœ์˜ ์„œ๋น„์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ์ปจํ…Œ์ด๋„ˆ(Docker)์™€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ(Kubernetes)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐฐํฌ ํ™˜๊ฒฝ์„ ํ‘œ์ค€ํ™”ํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ์™€ ๊ฐœ๋ณ„ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™” ๋“ฑ ๊ณ ๋„ํ™”๋œ DevOps ์‹ค์ฒœ์ด ์œ ์ง€๋ณด์ˆ˜์˜ ํ•„์ˆ˜ ์กฐ๊ฑด์ด ๋œ๋‹ค. - **Learning Path:** ์šฐ์„  ๋‹จ์ผ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๊ตฌ์„ฑ๋œ ์ „ํ†ต์ ์ธ ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์˜ ํ•œ๊ณ„๋ฅผ ํ•™์Šตํ•œ ํ›„, ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD) ๊ฐœ๋…์„ ์ตํ˜€ ์„œ๋น„์Šค ๊ฒฝ๊ณ„๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฐ๊ฐ์„ ๊ธฐ๋ฅธ๋‹ค. ์ด์–ด์„œ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ์˜ ํ†ต์‹  ํŒจํ„ด(API ํ†ต์‹ , ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง•) ๋ฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•(Saga)์„ ์—ฐ๊ตฌํ•˜๋ฉฐ ์ ์ง„์ ์œผ๋กœ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ƒํƒœ๊ณ„๋กœ ํ•™์Šต์„ ํ™•์žฅํ•œ๋‹ค. - **My Project Relevance:** ๊ทœ๋ชจ๊ฐ€ ์ปค์ ธ ์œ ์ง€๋ณด์ˆ˜ ์†๋„๊ฐ€ ํ˜„์ €ํžˆ ๋А๋ ค์ง„ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์„ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜, ํŠธ๋ž˜ํ”ฝ ๋ณ€๋™ํญ์ด ๊ทน์‹ฌํ•œ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒˆ๋กœ ๊ธฐํšํ•  ๋•Œ ํ•„์ˆ˜์ ์œผ๋กœ ๊ฒ€ํ† ํ•ด์•ผ ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์ง€์‹์ด๋‹ค. ํ”„๋กœ์ ํŠธ ํŒ€์˜ DevOps ์„ฑ์ˆ™๋„์™€ ๋น„์šฉ ์˜ˆ์‚ฐ์„ ์ข…ํ•ฉํ•˜์—ฌ ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ์œ ์ง€ํ• ์ง€, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ทผ๊ฑฐ๋กœ ํ™œ์šฉ๋œ๋‹ค. ### Adjacent Topics - [[Serverless Architecture]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ํ•œ ๊ฑธ์Œ ๋” ๋‚˜์•„๊ฐ€ ์„œ๋ฒ„ ์ธํ”„๋ผ ๊ด€๋ฆฌ ์ž์ฒด๋ฅผ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž์—๊ฒŒ ์™„์ „ํžˆ ์œ„์ž„ํ•˜๊ณ  ํ•จ์ˆ˜(Function) ๋‹จ์œ„๋กœ ์‹คํ–‰ํ•˜๋ฉฐ ๋™์  ํ™•์žฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์•„ํ‚คํ…์ฒ˜๋กœ ์ง€์‹์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. - [[Modular Monolith]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ดˆ๋ž˜ํ•˜๋Š” ๋ถ„์‚ฐ ํ†ต์‹  ๋ณต์žก์„ฑ๊ณผ ์šด์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ํ”ผํ•˜๋ฉด์„œ๋„, ๋„๋ฉ”์ธ๋ณ„ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๋ผ๋Š” ์ด์ ์€ ์œ ์ง€ํ•˜๋Š” ํƒ€ํ˜‘์  ๋Œ€์•ˆ ์•„ํ‚คํ…์ฒ˜๋กœ์„œ ํ•จ๊ป˜ ๋น„๊ต ๋ถ„์„ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค. --- *Last updated: 2026-05-02* --- - [[Message-Queues-and-Event-Streams|Message-Queues-and-Event-Streams]],[[_system|system]]-Design-for-AI-Scale, [[High-Availability-Systems|High-Availability-Systems]], [[Kubernetes-for-AI-Orchestration|Kubernetes-for-AI-Orchestration]] - **Raw Source:** 10_Wiki/Topics/AI/Microservices-Architecture.md --- ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] - [[Hexagonal Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์„ค๊ณ„์˜ ๊ธฐ์›์  ํŒจํ„ด์œผ๋กœ ์—ฌ๊ฒจ์ง€๋ฉฐ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์™ธ๋ถ€ ์ธํ”„๋ผ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•ต์‹ฌ ์ฒ ํ•™์„ ์ œ๊ณตํ•œ๋‹ค[5]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ฑฐ๋Œ€ํ•œ ์‹œ์Šคํ…œ์„ ์–ด๋–ป๊ฒŒ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ(Bounded Context) ๋‹จ์œ„์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๊ณ„์  ์ ‘๊ทผ๋ฒ•[4]. - [[Serverless Computing]] - ์—ฐ๊ฒฐ ์ด์œ : ์„œ๋ฒ„๋ฆฌ์Šค๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์„œ๋ฒ„ ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด ์ฝ”๋“œ๋ฅผ ์˜จ๋””๋งจ๋“œ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ํ•ด ์ฃผ์–ด, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์ž๋™ ํ™•์žฅํ•˜๋Š” ๋ฐ ์ด์ƒ์ ์ธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค[6, 11]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ์–ด๋–ป๊ฒŒ ๋น„์šฉ ํšจ์œจ์ ์ด๊ณ  ํƒ„๋ ฅ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€์™€ ์ฝœ๋“œ ์Šคํƒ€ํŠธ ์ง€์—ฐ ๋“ฑ์˜ ์‹ค์งˆ์  ํ•œ๊ณ„[6]. - [[Cloud Native]] - ์—ฐ๊ฒฐ ์ด์œ : ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ์ˆ  ์Šคํƒ์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃจ๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ, ์„œ๋ฒ„๋ฆฌ์Šค ๋“ฑ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ˜„๋Œ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ๊ณผ ๋ฏผ์ฒฉ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•œ๋‹ค[1, 3]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: 2025๋…„ ์›น/์•ฑ ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ์œ„์—์„œ ์–ด๋–ป๊ฒŒ ๊ธ€๋กœ๋ฒŒ ํ™•์žฅ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋Š”์ง€[1, 3]. #### [๊ตฌํ˜„/ํ™œ์šฉ ๋„๊ตฌ] - [[Spring Boot]] - ์—ฐ๊ฒฐ ์ด์œ : Java ํ™˜๊ฒฝ์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์™€ ํ—ฅ์‚ฌ๊ณ ๋‚  ํŒจํ„ด์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๊ณ  ํ™•์žฅ์„ฑ ์žˆ๋Š” REST API ์„œ๋ฒ„๋ฅผ ํ…œํ”Œ๋ฆฟํ™”ํ•˜์—ฌ ๊ตฌ์ถ•ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค[5, 9, 12]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ™˜๊ฒฝ์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…๊ณผ ๋ชจ๋“ˆํ™”๋ฅผ ํ†ตํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์‹ค๋ฌด ์ฝ”๋“œ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€[5]. - [[Express]] - ์—ฐ๊ฒฐ ์ด์œ : Node.js ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ๊ทธ ๊ฐ€๋ณ๊ณ  ๋‹จ์ˆœํ•œ ํŠน์„ฑ ๋•๋ถ„์— ๋น ๋ฅด๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์— ๋ฏผ๊ฐํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋‚˜ ๋‚ด๋ถ€ API๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ์ ํ•ฉํ•œ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋œ๋‹ค[8]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋Œ€๊ทœ๋ชจ ๋ณต์žก์„ฑ๋ณด๋‹ค๋Š” ๋‹จ์ˆœ์„ฑ๊ณผ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์ด ์š”๊ตฌ๋˜๋Š” ๋‹จ์œ„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌํ˜„ ์‹œ ํ”„๋ ˆ์ž„์›Œํฌ ์„ ํƒ์˜ ๊ธฐ์ค€[8]. ### Deeper Research Questions - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ๋™๊ธฐ์‹(Sync) ์•„ํ‚คํ…์ฒ˜์™€ ๋น„๋™๊ธฐ์‹(Async) ์•„ํ‚คํ…์ฒ˜๋Š” ๊ฐ๊ฐ ์–ด๋–ค ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์— ์ ํ•ฉํ•˜๋ฉฐ, ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ ์ธก๋ฉด์—์„œ์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋Š” ๋ฌด์—‡์ธ๊ฐ€? [10] - ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ชจ๋†€๋ฆฌ์‹(Monolithic) ์‹œ์Šคํ…œ์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•  ๋•Œ, ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ(Bounded Context)์˜ ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ํšจ๊ณผ์ ์ธ ๊ธฐ์ค€์€ ๋ฌด์—‡์ธ๊ฐ€? [4] - AWS Lambda์™€ ๊ฐ™์€ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์— ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ฝœ๋“œ ์Šคํƒ€ํŠธ(Cold Start) ์ง€์—ฐ ๋ฌธ์ œ๋ฅผ Express, Fastify, NestJS ๋“ฑ Node.js ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„๋กœ ์–ด๋–ป๊ฒŒ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? [6, 13] - ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ๋ถ„๋ฆฌ๋œ JAMstack ํ™˜๊ฒฝ์—์„œ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ œ๊ณต๋˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ API๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Orchestration)ํ•˜๊ณ  ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๋Š” ํŒจํ„ด์€ ๋ฌด์—‡์ธ๊ฐ€? [2, 7] - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋„์ž… ์‹œ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์•ˆํ‹ฐํŒจํ„ด(Anti-patterns)์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ์œผ๋ฉฐ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์ด๋ฅผ ์ง„๋‹จํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? [10] ### Practical Application Contexts - **Implementation:** Spring Boot๋‚˜ Node.js(Express) ๋“ฑ์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋‹จ์ผ ์ฑ…์ž„์„ ๊ฐ–๋„๋ก ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ณ  REST API ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ณ„ ๋ชจ๋“ˆ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค[5, 8, 12]. - **System Design:** ์ „์ฒด ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ๋•Œ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜์˜ ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ์‘์šฉํ•˜์—ฌ ์™ธ๋ถ€ ๊ธฐ์ˆ (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฉ”์‹œ์ง€ ํ ๋“ฑ)์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ , ๊ธฐ๋Šฅ์  ๊ฒฝ๊ณ„(Bounded Context)์— ๋”ฐ๋ผ ๋…๋ฆฝ๋œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„ํ• ํ•œ๋‹ค[4, 5]. - **Operation / Maintenance:** ๊ตฌํ˜„๋œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ AWS Lambda, Google Cloud Run๊ณผ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ/์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•˜์—ฌ, ํŠน์ • ์„œ๋น„์Šค์— ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฌ๋”๋ผ๋„ ํ•ด๋‹น ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ํƒ„๋ ฅ์  ํ™•์žฅ(Auto-scaling)์ด ์ด๋ฃจ์–ด์ง€๋„๋ก ์šด์˜ํ•œ๋‹ค[1, 6]. - **Learning Path:** 12-Factor App ๋ฐฉ๋ฒ•๋ก  ๋ฐ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋””์ž์ธ ํŒจํ„ด(๋ฉ”์‹œ์ง€ ํ ํ™œ์šฉ ๋“ฑ)์„ ํ•™์Šตํ•œ ํ›„, ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜์˜ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‹ค์ œ ๋ชจ๋†€๋ฆฌ์‹ ์•ฑ์„ ๋ถ„๋ฆฌํ•ด๋ณด๋Š” ์‹ค์Šต ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค[4, 10]. - **My Project Relevance:** ๋ณต์žกํ•œ ๋„๋ฉ”์ธ๊ณผ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์ด ํ˜ผ์žฌ๋œ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋‚˜, ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ JAMstack์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ๋…๋ฆฝ์ ์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐฑ์—”๋“œ API ์„œ๋น„์Šค๋“ค์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ์ตœ์šฐ์„ ์œผ๋กœ ๋„์ž…์„ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค[1, 2]. ### Adjacent Topics - [[JAMstack]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜์˜ API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ณ  ํ™•์žฅ์„ฑ ๋†’์€ ํ”„๋ก ํŠธ์—”๋“œ(JavaScript, Markup, API) ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ์›น ์•„ํ‚คํ…์ฒ˜์˜ ๊ตฌ์กฐ์  ์ด์  ํƒ๊ตฌ[2, 14]. - [[Bounded Context (DDD)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD) ๊ด€์ ์—์„œ ๊ฑฐ๋Œ€ ์‹œ์Šคํ…œ์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ชผ๊ฐœ๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ์˜๋ฏธ์ , ๋…ผ๋ฆฌ์  ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„ ์„ค์ • ๋ฐฉ๋ฒ• ํ•™์Šต[4]. - [[Message Queues]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋‚ด์˜ ์ˆ˜๋งŽ์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ์ดํ•ด[10]. --- *Last updated: 2026-05-02* --- - **Related Topics:** ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜ (Monolithic Architecture), [[แ„€แ…ชแ†ซแ„‰แ…ตแ†ทแ„‰แ…กแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต (Separation of Concerns)|๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ ([[Separation of Concerns]])]], ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„ (Domain-Driven Design), ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ (Containers and Orchestration) - **Projects/Contexts:** ๋„ทํ”Œ๋ฆญ์Šค ์ฝ”์Šค๋ชจ์Šค ํ”Œ๋žซํผ (Netflix Cosmos Platform), ์Šคํฌํ‹ฐํŒŒ์ด ์Šค์ฟผ๋“œ ๋ชจ๋ธ (Spotify Squad Model) - **Contradictions/Notes:** ์ผ๋ฐ˜์ ์œผ๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์™„๋ฒฝํ•œ ๋ชจ๋“ˆ์˜ ๊ฒฐํ•ฉ ๋ถ„๋ฆฌ์™€ ๋ฐฐํฌ ๋…๋ฆฝ์„ฑ์„ ๊ฐ€์ ธ๋‹ค์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์‹œ์Šคํ…œ์ด ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ(Cross-cutting concerns)๋‚˜ ๊ณต์œ  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ์–ฝํ˜€์žˆ์„ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜๋Š” '๊ฒฐํ•ฉ ๋ถ„๋ฆฌ์˜ ์˜ค๋ฅ˜' ๋ฐ '๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ๋…๋ฆฝ์„ฑ์˜ ์˜ค๋ฅ˜'๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์„œ๋น„์Šค ๊ฐ„์˜ ๋‹จ์ˆœ ๋ฌผ๋ฆฌ์  ๋ถ„๋ฆฌ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„์น˜ ์•Š์œผ๋ฉฐ, ์„œ๋น„์Šค ๋‚ด๋ถ€์˜ ์•„ํ‚คํ…์ฒ˜ ๊ฒฝ๊ณ„์™€ ์˜์กด์„ฑ ๊ทœ์น™์ด ์ œ๋Œ€๋กœ ์„ค๊ณ„๋˜์–ด์•ผ ์ง„์ •ํ•œ ๋…๋ฆฝ์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [21-24]. --- *Last updated: 2026-04-18* --- --- ### Related Concepts #### [๊ด€๊ณ„ ์œ ํ˜• A (์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ )] * [[Bounded Context]] * ์—ฐ๊ฒฐ ์ด์œ : ๋Œ€๊ทœ๋ชจ ๋„๋ฉ”์ธ์„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ํ•˜์œ„ ๋„๋ฉ”์ธ์œผ๋กœ ๋‚˜๋ˆ„๋Š” DDD์˜ ๊ฐœ๋…์œผ๋กœ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•  ๋•Œ ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ค€์ด ๋œ๋‹ค [13, 14]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ถ„์‚ฐ๋œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ฝ”๋“œ๋ฅผ ์ฝ์„ ๋•Œ, ํ•ด๋‹น ์„œ๋น„์Šค์˜ ๋…๋ฆฝ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ์ฑ…์ž„ ๋ฒ”์œ„์™€ ๋ชจ๋“ˆํ™”๋œ ๋กœ์ง์ด ์™ธ๋ถ€์™€ ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ๋ณดํ˜ธ๋˜๋Š” ์›๋ฆฌ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค [15, 16]. * [[Container Diagram (C4 Model)]] * ์—ฐ๊ฒฐ ์ด์œ : ๋ถ„์‚ฐ๋œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ํ†ต์‹ ๊ณผ ์ฑ…์ž„์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ์‹œ๊ฐ์ ์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค [17, 18]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ˆ˜๋งŽ์€ ์ €์žฅ์†Œ๋กœ ์ชผ๊ฐœ์ง„ ๊ฑฐ๋Œ€ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ฝ๊ธฐ ์ „, ๊ฐœ๋ณ„ ์ฝ”๋“œ๊ฐ€ ์ „์ฒด ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์–ด๋–ค ์ปจํ…Œ์ด๋„ˆ๋กœ ์ž‘๋™ํ•˜๋ฉฐ ๋ˆ„๊ตฌ์™€ ์ข…์†์„ฑ์„ ๋งบ๊ณ  ์žˆ๋Š”์ง€ ๊ฑฐ์‹œ์ ์œผ๋กœ ์กฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค [17]. #### [๊ด€๊ณ„ ์œ ํ˜• B (ํ†ต์‹  ํŒจํ„ด/ํƒ์ƒ‰ ์ฒด๊ณ„)] * [[Event-Driven Architecture (EDA)]] * ์—ฐ๊ฒฐ ์ด์œ : ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ์ง์ ‘์ ์ธ API ํ˜ธ์ถœ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด, ์ด๋ฒคํŠธ๋ฅผ ์ƒ์‚ฐํ•˜๊ณ  ์†Œ๋น„ํ•˜๋Š” ๋ฐฉ์‹(์˜ˆ: Kafka ์‚ฌ์šฉ)์œผ๋กœ ์‹œ์Šคํ…œ์„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•œ๋‹ค [4, 8, 19]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•  ๋•Œ, ์ง์ ‘์ ์ธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์•„๋‹Œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ํ†ตํ•œ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ถ”์ ํ•˜๋Š” ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค [8]. * [[API-First Architecture]] * ์—ฐ๊ฒฐ ์ด์œ : ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ๊ฐ ์„œ๋น„์Šค๋Š” ์ž˜ ์ •์˜๋œ API๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์†Œํ†ตํ•˜๋ฉฐ, API ๊ณ„์•ฝ(Contract)์„ ์ตœ์šฐ์„ ์œผ๋กœ ์„ค๊ณ„ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ํ†ตํ•ฉ ์ง€์ ์œผ๋กœ ์‚ผ๋Š”๋‹ค [20, 21]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์—ฌ๋Ÿฌ ํŒ€์ด ๋‚˜๋ˆ„์–ด ๊ฐ€์ง„ ๋‹ค์ค‘ ์ €์žฅ์†Œ(Multi-repo) ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํŒŒ์•…ํ•  ๋•Œ, OpenAPI ๊ทœ๊ฒฉ ๋“ฑ์˜ ๊ณ„์•ฝ์„ ๋จผ์ € ์ฝ์Œ์œผ๋กœ์จ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ๊ฐ„์˜ ๊ฒฐํ•ฉ๊ณผ ๊ธฐ๋Šฅ์  ๋ชฉ์ ์„ ์‹ ์†ํžˆ ํ•ด๋…ํ•  ์ˆ˜ ์žˆ๋‹ค [21, 22]. ### Deeper Research Questions * ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ถ„ํ•ด(Decomposition)ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์ƒ์˜ ๊ธฐ์ค€๊ณผ ๊ธฐ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? [2, 9] * ์—ฌ๋Ÿฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๊ฑธ์ณ ๋ฐœ์ƒํ•˜๋Š” ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€? [1, 13] * ๋ถ„์‚ฐ๋œ ์„œ๋น„์Šค๋“ค์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์žฅ์•  ์›์ธ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ์™€ ๋ชจ๋‹ˆํ„ฐ๋ง(์˜ˆ: OpenTelemetry)์„ ์–ด๋–ป๊ฒŒ ์ถ”์ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? [3, 18] * ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ฝ”๋“œ๋ฅผ ์ฝ์„ ๋•Œ, ๋‚ด๋ถ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(Domain)๊ณผ ์™ธ๋ถ€ ํด๋ผ์šฐ๋“œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Kubernetes ๋“ฑ) ์„ค์ • ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€ ์ง€์–ด ํ•ด์„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? [5, 6] * gRPC, REST, GraphQL ๋“ฑ ํ†ต์‹  API์˜ ์„ ํƒ์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ ๋ฐ ์„œ๋ฒ„ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๋ณต์žก์„ฑ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€ ๋ฌด์—‡์ธ๊ฐ€? [23, 24] ### Practical Application Contexts * **Implementation:** ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ, ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹จ์ผ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ถ„๋ฆฌ๋œ ๊ฐœ๋ณ„ ์ €์žฅ์†Œ์—์„œ ๋…์ž์ ์ธ ๊ธฐ์ˆ  ์Šคํƒ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ(CI/CD)์„ ๊ตฌ์ถ•ํ•œ๋‹ค [2]. * **System Design:** ์ด๋ฒคํŠธ ๋ธŒ๋กœ์ปค, API ๊ฒŒ์ดํŠธ์›จ์ด ๋“ฑ์„ ๋ฐฐ์น˜ํ•˜๊ณ , ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹  ๊ฒฝ๋กœ๋ฅผ C4 ๋ชจ๋ธ์ด๋‚˜ ํด๋ผ์šฐ๋“œ ๋‹ค์ด์–ด๊ทธ๋žจ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์˜ ์ฒญ์‚ฌ์ง„์„ ์„ค๊ณ„ํ•œ๋‹ค [3, 17]. * **Operation / Maintenance:** ๊ฐœ๋ณ„ ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ „์ฒด ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ(Kubernetes)๋ฅผ ์‚ฌ์šฉํ•ด ํŠธ๋ž˜ํ”ฝ์— ๋งž์ถฐ ์ž๋™์œผ๋กœ ์ž์›์„ ์Šค์ผ€์ผ๋งํ•˜๊ณ  ์ค‘์•™์—์„œ ๋กœ๊น…/๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค [3, 5, 6]. * **Learning Path:** ๋ณต์žกํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์„ ํŒŒ์•…ํ•ด์•ผ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ํ•˜ํ–ฅ์‹(Top-Down) ์ „๋žต์œผ๋กœ API ๊ฒŒ์ดํŠธ์›จ์ด ๋“ฑ์˜ ์ง„์ž…์ ์„ ๋จผ์ € ํ™•์ธํ•œ ํ›„, ๊ฐœ๋ณ„ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ ๋‚ด๋ถ€๋กœ ์ง„์ž…ํ•˜์—ฌ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ข…์†์„ฑ์„ ์—ญ์ถ”์ ํ•˜๋Š” ํ›ˆ๋ จ์„ ํ•ด์•ผ ํ•œ๋‹ค [25-27]. * **My Project Relevance:** ๊ทœ๋ชจ๊ฐ€ ์ปค์ ธ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์šด ๋ชจ๋†€๋ฆฌ์‹ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ํ•ด๋…ํ•˜๊ณ , ์ด๋ฅผ ํ˜„๋Œ€ํ™”(Modernization)ํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์  ์ง€๋„์™€ ์ „๋žต์„ ์ œ๊ณตํ•œ๋‹ค [10, 12]. ### Adjacent Topics * [[Cloud-Native Architecture]] * ํ™•์žฅ ๋ฐฉํ–ฅ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ ๋ฐ ์‹คํ–‰์˜ ํ•ต์‹ฌ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ๊ณผ ์Šค์ผ€์ผ๋ง์„ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ(์˜ˆ: Kubernetes ํ™œ์šฉ)์— ๋Œ€ํ•œ ์ง€์‹์œผ๋กœ ํ™•์žฅ [5, 6]. * [[Domain-Driven Design (DDD)]] * ํ™•์žฅ ๋ฐฉํ–ฅ: ๋น„์ฆˆ๋‹ˆ์Šค ์ค‘์‹ฌ์˜ ๋ชจ๋ธ๋ง์„ ํ†ตํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ๋‚˜๋‰˜์–ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ด๋ก ์  ๊ธฐ์ค€(Ubiquitous Language, Aggregate ๋“ฑ)์„ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์‚ฌ์ƒ์œผ๋กœ ํ™•์žฅ [13, 28]. --- *Last updated: 2026-05-02*