--- id: P-REINFORCE-WIKI-6D27573E category: Unified confidence_score: 0.95 tags: ['microservices-architecture', 'monolithic-architecture', 'service-oriented-architecture-(soa)', 'domain-driven-design-(ddd)', 'saga-pattern', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Microservices Architecture]] ## ๐Ÿ“Œ Brief Summary ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)๋Š” ํฌ๊ณ  ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์„œ๋น„์Šค๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋‹ค [1-3]. ๊ฐ ์„œ๋น„์Šค๋Š” ์ž์œจ์ ์ธ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋˜๋ฉฐ ๊ฐ€๋ฒผ์šด ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜(์ฃผ๋กœ HTTP API, ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ๋“ฑ)์„ ํ†ตํ•ด ์ƒํ˜ธ์ž‘์šฉํ•œ๋‹ค [1, 4, 5]. ์ด๋ฅผ ํ†ตํ•ด ์กฐ์ง์€ ํŠน์ • ๊ธฐ๋Šฅ๋งŒ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์— ๋งž์ถฐ ๋น ๋ฅด๊ณ  ๋นˆ๋ฒˆํ•˜๊ฒŒ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํƒ„๋ ฅ์ ์ธ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค [6, 7]. ## ๐Ÿ“– 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]. ## โš–๏ธ 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]. ## ๐Ÿ”— 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*