--- category: Unified tags: [auto-consolidated, technical-documentation] title: [[DDD (Domain-Driven Design)]] last_updated: 2026-05-02 --- # [[DDD (Domain-Driven Design)]] ## ๐Ÿ“Œ Brief Summary DDD(Domain-Driven Design, ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„)๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„œ๋น„์Šค๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ์ค‘์‹ฌ์œผ๋กœ ์กฐ์งํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์šฉ๋˜๋Š” ์„ค๊ณ„ ์›์น™์ž…๋‹ˆ๋‹ค [1, 2]. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๊ตฌํ˜„ํ•˜๋Š” ํ•ต์‹ฌ ์—”ํ‹ฐํ‹ฐ(์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ)๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๋ฅผ ์ด‰์ง„ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด๋“ค๊ณผ ๊ฐ•ํ•œ ์‹œ๋„ˆ์ง€๋ฅผ ๋ƒ…๋‹ˆ๋‹ค [3, 4]. ๋‹ค๋งŒ, ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”์™€ ์„ค๊ณ„ ์ดํ•ด๋„๊ฐ€ ์š”๊ตฌ๋˜์–ด ํŒ€์˜ ์ „๋ฌธ์„ฑ์ด ๋ถ€์กฑํ•  ๊ฒฝ์šฐ ๋„์ž… ์‹œ ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 6]. --- > "๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์‹ฌ์žฅ์œผ๋กœ ๋งŒ๋“ค์–ด๋ผ" โ€” ๊ธฐ์ˆ ์  ๋ณต์žก์„ฑ๋ณด๋‹ค ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์˜ ๋ณต์žก์„ฑ์„ ์šฐ์„ ์‹œํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž์™€ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋™์ผํ•œ ์–ธ์–ด(Ubiquitous Language)๋กœ ์†Œํ†ตํ•˜๋ฉฐ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก . --- > "๊ธฐ์ˆ ์  ๊ตฌํ˜„๋ณด๋‹ค ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๋ณธ์งˆ(๋„๋ฉ”์ธ)์„ ์ฝ”๋“œ์˜ ์ค‘์‹ฌ์— ๋‘์–ด๋ผ" โ€” ๋ณต์žกํ•œ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ธฐ์ˆ  ์ธํ”„๋ผ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์ผํ•œ ์–ธ์–ด(Ubiquitous Language)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก . --- Domain-Driven Design(DDD)์€ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ค‘์‹ฌ์— ๋‘๊ณ , ๊ธฐ์ˆ  ํŒ€๊ณผ ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€ ๊ฐ„์˜ ๊ธด๋ฐ€ํ•œ ํ˜‘๋ ฅ์„ ํ†ตํ•ด ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ˜์˜ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋‹ค [1, 2]. ๊ฐœ๋ฐœ์ž์™€ ์ดํ•ด๊ด€๊ณ„์ž๊ฐ€ ์†Œํ†ตํ•˜๋Š” ๊ณตํ†ต์˜ ์–ดํœ˜์ธ '์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด'๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฑฐ๋Œ€ํ•œ ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ํ•˜์œ„ ๋„๋ฉ”์ธ์ธ '๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ'๋กœ ๋ถ„ํ• ํ•œ๋‹ค [1, 3, 4]. ์ฝ”๋“œ๋ฒ ์ด์Šค ์ฝ๊ธฐ ๊ด€์ ์—์„œ DDD๋Š” ๊ธฐ์ˆ ์  ๊ณ„์ธต์ด ์•„๋‹Œ ๋น„์ฆˆ๋‹ˆ์Šค ์šฉ์–ด๋กœ ๋ช…๋ช…๋œ ๋ชจ๋“ˆ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ์˜ ์„ธ๋ถ€ ๊ตฌํ˜„์— ๋งค๋ชฐ๋˜๊ธฐ ์ „์— ๋น„์ฆˆ๋‹ˆ์Šค ์˜๋„๋ฅผ ๋จผ์ € ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ง€์  ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•œ๋‹ค [5]. --- ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD)๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ๊ณผ ๋กœ์ง์„ ์ค‘์‹ฌ์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ชจ๋ธ๋งํ•˜๊ณ  ๊ตฌ์กฐํ™”ํ•˜๋Š” ์„ค๊ณ„ ์›์น™์ด๋‹ค [1, 2]. ์ฃผ๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋‚˜ ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค(Modular Monolith) ํ™˜๊ฒฝ์—์„œ ๊ฐ ์„œ๋น„์Šค๋‚˜ ๋ชจ๋“ˆ์ด ๋‹ด๋‹นํ•ด์•ผ ํ•  ๋‹จ์ผ ์ฑ…์ž„๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ์  ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค [2, 3]. ์ด ์ ‘๊ทผ๋ฒ•์€ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์— ๋”ฐ๋ผ ๋ถ„ํ• ํ•˜์—ฌ, ๊ธฐ์ˆ ์  ๊ตฌํ˜„๋ณด๋‹ค ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ์ž์ฒด์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค [4, 5]. --- ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD)๋Š” ์—๋ฆญ ์—๋ฐ˜์Šค(Eric Evans)๊ฐ€ ๋Œ€์ค‘ํ™”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ์ ‘๊ทผ๋ฒ•์œผ๋กœ, ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ์— ๋‘๊ณ  ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด์— ๋งž์ถ”๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค [1]. ๊ธฐ์ˆ  ํŒ€๊ณผ ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€ ๊ฐ„์˜ ๊ธด๋ฐ€ํ•œ ํ˜‘๋ ฅ์„ ์ด‰์ง„ํ•˜๋ฉฐ, '๋ณดํŽธ์  ์–ธ์–ด(Ubiquitous Language)'๋ผ๋Š” ๊ณต์œ  ์–ดํœ˜๋ฅผ ํ†ตํ•ด ์˜์‚ฌ์†Œํ†ต ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•ฉ๋‹ˆ๋‹ค [1]. ๋˜ํ•œ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์„ '๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ(Bounded Context)'๋ผ๋Š” ๋” ์ž‘๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ํ•˜์œ„ ๋„๋ฉ”์ธ์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ๊ด€๋ฆฌ์™€ ์ง„ํ™”๋ฅผ ๋•๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ž…๋‹ˆ๋‹ค [2-5]. ## ๐Ÿ“– Core Content * **๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰ ์ค‘์‹ฌ์˜ ์„œ๋น„์Šค ์กฐ์งํ™”**: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)์—์„œ ๊ฐ ์„œ๋น„์Šค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ์ค‘์‹ฌ์œผ๋กœ ์กฐ์ง๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” DDD์˜ ํ•ต์‹ฌ ์›์น™๊ณผ ๋งฅ์„ ๊ฐ™์ด ํ•ฉ๋‹ˆ๋‹ค [2]. * **๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค์—์„œ์˜ ๊ฒฝ๊ณ„ ๊ฐ•์ œ**: ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค(Modular Monolith) ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ์„œ๋น„์Šค๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ๋„คํŠธ์›Œํฌ๋กœ ๋ถ„ํ• ํ•˜์ง€ ์•Š๊ณ ๋„ DDD ์›์น™์„ ๊น”๋”ํ•˜๊ฒŒ ์ ์šฉํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. * **์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด๊ณผ์˜ ๋†’์€ ํ˜ธํ™˜์„ฑ**: ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)๋Š” ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๋ฅผ ์ด‰์ง„ํ•˜๋ฏ€๋กœ DDD ์›์น™๊ณผ ๋งค์šฐ ์ž˜ ๋ถ€ํ•ฉํ•ฉ๋‹ˆ๋‹ค [3]. ๋˜ํ•œ, UI ํฌํŠธ์—๋Š” MVC ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—๋Š” DDD๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7]. * **๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ์™€ ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ(Aggregates)**: ์‹œ์Šคํ…œ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๊ตฌํ˜„ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ(DDD ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ)์™€ ์™ธ๋ถ€ ์„ธ๊ณ„์™€ ํ†ต์‹ ํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ(Adapters)๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค [4]. *(โ€ป ์†Œ์Šค์— DDD์˜ ๊ตฌ์ฒด์ ์ธ ์ „์ˆ ์  ํŒจํ„ด์ด๋‚˜ ์ƒ์„ธํ•œ ๋‚ด๋ถ€ ์›๋ฆฌ์— ๋Œ€ํ•œ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.)* --- - **์ถ”์ถœ๋œ ํŒจํ„ด:** ๊ฑฐ๋Œ€ํ•œ ์‹œ์Šคํ…œ์„ ๋…๋ฆฝ์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ '๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ(Bounded Context)'๋กœ ๋‚˜๋ˆ„๊ณ , ๊ทธ ๋‚ด๋ถ€๋ฅผ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋ชจ๋ธ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด. - **์ „๋žต์  ์„ค๊ณ„ (Strategic Design):** - **Ubiquitous Language:** ๊ฐœ๋ฐœ์ž, ๊ธฐํš์ž, ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๊ณตํ†ต ์–ธ์–ด ์ •์˜. - **Bounded Context:** ํŠน์ • ๋ชจ๋ธ์ด ์ ์šฉ๋˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ฒฝ๊ณ„ ์„ค์ •. ์ปจํ…์ŠคํŠธ ๊ฐ„์˜ ๊ด€๊ณ„๋Š” Context Map์œผ๋กœ ์ •์˜. - **Core Domain:** ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๊ฐ€์น˜๋ฅผ ์ฐฝ์ถœํ•˜๋Š” ์˜์—ญ์— ์ž์› ์ง‘์ค‘. - **์ „์ˆ ์  ์„ค๊ณ„ (Tactical Design):** - **Entity & Value Object:** ์‹๋ณ„์ž ๊ธฐ๋ฐ˜์˜ ๊ฐ์ฒด์™€ ์†์„ฑ ๊ธฐ๋ฐ˜์˜ ๊ฐ’ ๊ฐ์ฒด ๊ตฌ๋ถ„. - **Aggregate:** ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์˜ ๋‹จ์œ„๋กœ ๋ฌถ์ธ ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ. Root ์—”ํ‹ฐํ‹ฐ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ. - **Repository:** ๋„๋ฉ”์ธ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ €์žฅ์†Œ ์ถ”์ƒํ™” ์ œ๊ณต. - **Domain Service:** ํŠน์ • ์—”ํ‹ฐํ‹ฐ์— ์†ํ•˜๊ธฐ ์–ด๋ ค์šด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ. --- - **์ถ”์ถœ๋œ ํŒจํ„ด:** ๊ฑฐ๋Œ€ํ•œ ์‹œ์Šคํ…œ์„ ์˜๋ฏธ ์žˆ๋Š” ๊ฒฝ๊ณ„(Bounded Context)๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ๋งฅ๋ฝ ์•ˆ์—์„œ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์„ ์ •๊ตํ•˜๊ฒŒ ๊ตฌ์ถ•ํ•˜์—ฌ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ „๋žต์  ์„ค๊ณ„ ํŒจํ„ด. - **ํ•ต์‹ฌ ์š”์†Œ:** - **Ubiquitous Language:** ๊ธฐํš์ž์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œํ†ตํ•˜๋Š” ๊ณตํ†ต์˜ ์šฉ์–ด ์‚ฌ์ „. - **Bounded Context:** ๋ชจ๋ธ์ด ์ ์šฉ๋˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ฒฝ๊ณ„. MSA์˜ ๊ธฐ๋ฐ˜์ด ๋จ. - **Entity & Value Object:** ์‹๋ณ„์ž๊ฐ€ ์ค‘์š”ํ•œ ๊ฐ์ฒด์™€ ์†์„ฑ๊ฐ’์ด ์ค‘์š”ํ•œ ๊ฐ์ฒด์˜ ๊ตฌ๋ถ„. - **Aggregate:** ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์˜ ๋‹จ์œ„์ด์ž ์บก์Аํ™” ๊ฒฝ๊ณ„. - **Layered Architecture:** ๋„๋ฉ”์ธ ๋กœ์ง์„ ํ‘œํ˜„ ๋ ˆ์ด์–ด๋‚˜ ์ธํ”„๋ผ ๋ ˆ์ด์–ด๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌ. --- * **์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด (Ubiquitous Language)**: DDD์˜ ๋ชฉํ‘œ๋Š” ๊ฐœ๋ฐœ์ž์™€ ๋น„์ฆˆ๋‹ˆ์Šค ์ดํ•ด๊ด€๊ณ„์ž ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•˜๋Š” ๊ณต์œ  ์–ธ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค [1]. ์ด ์–ธ์–ด๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ์ฐธ์—ฌ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋ฉฐ ๋Œ€ํ™”, ๋ฌธ์„œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ ์ž์ฒด์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋˜์–ด ์‹œ์Šคํ…œ ๋‚ด์˜ ๋ชจํ˜ธํ•จ์„ ์ค„์ธ๋‹ค [6, 7]. * **๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ (Bounded Context)**: ํฌ๊ณ  ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ '์ฃผ๋ฌธ ๊ด€๋ฆฌ', '๊ณ ๊ฐ ์ง€์›' ๋“ฑ ์ž‘๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ํ•˜์œ„ ๋„๋ฉ”์ธ์œผ๋กœ ๋‚˜๋ˆˆ ๋…ผ๋ฆฌ์  ๊ฒฝ๊ณ„๋‹ค [3]. ๊ฐ ์ปจํ…์ŠคํŠธ๋Š” ๊ณ ์œ ํ•œ ๋ชจ๋ธ๊ณผ ์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ชจ๋ธ์˜ ์ค‘์ฒฉ์„ ๋ง‰์•„ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•œ๋‹ค [4, 7]. * **์—”ํ‹ฐํ‹ฐ(Entities)์™€ ๊ฐ’ ๊ฐ์ฒด(Value Objects)**: DDD๋Š” ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋‚ด์—์„œ ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง„ '์—”ํ‹ฐํ‹ฐ(์˜ˆ: Customer)'์™€ ์˜ค๋กœ์ง€ ์†์„ฑ์œผ๋กœ๋งŒ ์ •์˜๋˜๋Š” '๊ฐ’ ๊ฐ์ฒด(์˜ˆ: ShippingAddress)'๋ฅผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜์—ฌ ์„ค๊ณ„ํ•œ๋‹ค [3, 5]. * **์• ๊ทธ๋ฆฌ๊ฑฐํŠธ (Aggregates)**: ํ•˜๋‚˜์˜ ๋‹จ์ผ ๋‹จ์œ„๋กœ ์ทจ๊ธ‰๋  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด๋“ค์˜ ๊ตฐ์ง‘(์˜ˆ: Order์™€ ํ•˜์œ„์˜ OrderLineItem)์„ ์˜๋ฏธํ•œ๋‹ค [3, 5]. ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ์˜ ๋ฃจํŠธ ๊ฐ์ฒด๋Š” ํ•ด๋‹น ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค [3]. * **์ฝ”๋“œ๋ฒ ์ด์Šค ๊ตฌ์กฐ์™€ ์˜๋„ ํŒŒ์•…**: DDD๊ฐ€ ์ ์šฉ๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ๊ธฐ์ˆ ์ ์ธ ๊ธฐ๋Šฅ์ด ์•„๋‹Œ ๋น„์ฆˆ๋‹ˆ์Šค ์šฉ์–ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํด๋”์™€ ๋ชจ๋“ˆ์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค [5]. ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•๋ถ„์— ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๋Š” ์ƒ์„ธ ๋กœ์ง๋ณด๋‹ค ๋น„์ฆˆ๋‹ˆ์Šค ์˜๋„์™€ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ํ•˜ํ–ฅ์‹์œผ๋กœ ๋” ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค [5, 8]. --- * **๋น„์ฆˆ๋‹ˆ์Šค ๊ฒฝ๊ณ„ ๋ฐ ์„œ๋น„์Šค ๋ถ„ํ• ์˜ ๊ธฐ์ค€:** ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD)๋Š” ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๊ณ  ๋ฌด์—‡์„ ํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋ช…ํ™•ํžˆ ์ •์˜ํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ๊ณตํ•œ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, DDD ์›์น™์„ ํ™œ์šฉํ•ด ์‹œ์Šคํ…œ์˜ ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„(Domain boundaries)๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ์ค‘์‹ฌ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์กฐ์งํ•  ์ˆ˜ ์žˆ๋‹ค [2, 5]. * **์„œ๋ธŒ๋„๋ฉ”์ธ(Subdomain)๊ณผ ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ(Aggregates):** DDD์—์„œ ์„œ๋ธŒ๋„๋ฉ”์ธ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ(๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰)์˜ ํŠน์ • ๋‹จ๋ฉด์„ ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ๋กœ ์ •์˜ํ•œ ๊ฒƒ์ด๋‹ค [4]. ์„œ๋ธŒ๋„๋ฉ”์ธ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ(DDD ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ)์™€ ์™ธ๋ถ€ ์„ธ๊ณ„์™€ ํ†ต์‹ ํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ(Adapters)๋กœ ๊ตฌ์„ฑ๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํฌํ•จํ•œ๋‹ค [4]. * **๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค(Modular Monolith) ์•„ํ‚คํ…์ฒ˜์™€์˜ ์กฐํ™”:** ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ์—†์ด ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋™์ž‘ํ•˜๋Š” ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋Š” DDD ์›์น™์„ ๊น”๋”ํ•˜๊ฒŒ ์ ์šฉํ•˜๊ธฐ์— ์ด์ƒ์ ์ธ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค [3, 6]. ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์ด๋‚˜ ์„œ๋น„์Šค ๋ถ„ํ• ์˜ ๋ณต์žก์„ฑ ์—†์ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ๋ฅผ ์ž˜ ์ฒด๊ณ„ํ™”ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๊ธฐ์—ฌํ•œ๋‹ค [3]. * **ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)์˜ ๊ธฐ๋ฐ˜:** ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ(Ports and Adapters) ํŒจํ„ด์œผ๋กœ๋„ ๋ถˆ๋ฆฌ๋Š” ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๋Š” ๋„๋ฉ”์ธ ์ค‘์‹ฌ ์„ค๊ณ„(DDD) ์›์น™๊ณผ ์ž˜ ๋ถ€ํ•ฉํ•œ๋‹ค [1]. ์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ์˜์—ญ์— ์œ„์น˜์‹œํ‚ค๊ณ  ์™ธ๋ถ€ ์‹œ์Šคํ…œ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, UI ๋“ฑ)์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ ์ธ ํ‹€์„ ์ œ๊ณตํ•œ๋‹ค [1, 7]. *(์ฐธ๊ณ : ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. DDD์˜ ์„ธ๋ถ€์ ์ธ ์ „๋žต์  ํŒจํ„ด(์˜ˆ: Bounded Context, Ubiquitous Language)์ด๋‚˜ ๊ตฌ์ฒด์  ์ „์ˆ ์  ํŒจํ„ด์— ๋Œ€ํ•œ ์ƒ์„ธ ์ด๋ก ์€ ์ œ๊ณต๋œ ๋ฌธ์„œ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)* --- * **์ฃผ์š” ๊ฐœ๋… ๋ฐ ํŒจํ„ด:** * **๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ (Bounded Context):** ํฌ๊ณ  ๋ณต์žกํ•œ ๋„๋ฉ”์ธ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆํ™”๋œ ์ž‘์€ ํ•˜์œ„ ๋„๋ฉ”์ธ์œผ๋กœ ๋ถ„๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค [2, 4, 5]. ๊ฐ ์ปจํ…์ŠคํŠธ๋Š” ๊ณ ์œ ํ•œ ๋ชจ๋ธ๊ณผ ๋ณดํŽธ์  ์–ธ์–ด๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๋ฅผ ํ†ตํ•ด ๋ชจ๋ธ ๊ฐ„์˜ ํ˜ผํ•ฉ๊ณผ ์ค‘์ฒฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค [2, 5]. * **๋ณดํŽธ์  ์–ธ์–ด (Ubiquitous Language):** ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ์›(๊ฐœ๋ฐœ์ž ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ์ดํ•ด๊ด€๊ณ„์ž)์ด ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋กœ, ๋Œ€ํ™”, ๋ฌธ์„œ, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ ๊ทธ ์ž์ฒด์— ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 5, 6]. * **์• ๊ทธ๋ฆฌ๊ฑฐํŠธ (Aggregates):** ๋‹จ์ผ ๋‹จ์œ„๋กœ ์ทจ๊ธ‰๋  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ ๊ฐ์ฒด๋“ค์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ, ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ์˜ ๋ฃจํŠธ๊ฐ€ ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค [2]. * **์—”ํ‹ฐํ‹ฐ(Entities)์™€ ๊ฐ’ ๊ฐ์ฒด(Value Objects):** DDD๋Š” ๋ช…ํ™•ํ•œ ์‹๋ณ„์„ฑ์„ ์ง€๋‹Œ ๊ฐ์ฒด์ธ '์—”ํ‹ฐํ‹ฐ'์™€ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์†์„ฑ์œผ๋กœ๋งŒ ์ •์˜๋˜๋Š” '๊ฐ’ ๊ฐ์ฒด'๋ฅผ ๊ตฌ๋ณ„ํ•˜์—ฌ ๋ชจ๋ธ๋งํ•ฉ๋‹ˆ๋‹ค [2]. * **์ฝ”๋“œ๋ฒ ์ด์Šค ๊ตฌ์กฐ์™€ ๋…ํ•ด ์ ‘๊ทผ:** * DDD๊ฐ€ ์ ์šฉ๋œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ๊ธฐ์ˆ ์ ์ธ ๊ธฐ๋Šฅ์ด ์•„๋‹Œ '์ฃผ๋ฌธ ๊ด€๋ฆฌ', '๊ณ ๊ฐ ์ง€์›'๊ณผ ๊ฐ™์ด ๋น„์ฆˆ๋‹ˆ์Šค ์šฉ์–ด๋กœ ๋ช…๋ช…๋œ ๋ชจ๋“ˆ ๊ตฌ์กฐ(๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ ์ค‘์‹ฌ)๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค [2, 7]. * ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ์  ํŠน์ง• ๋•๋ถ„์— ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๊ฐœ๋ฐœ์ž๋Š” ์„ธ๋ถ€ ๋กœ์ง์— ๋งค๋ชฐ๋˜๊ธฐ ์ „์— ๋น„์ฆˆ๋‹ˆ์Šค ์˜๋„์™€ ๋„๋ฉ”์ธ ๋ชฉ์ ์„ ๋จผ์ € ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ง€์  ๊ธฐ๋ฐ˜์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [7]. * ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ UI ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฐ™์€ ์ธํ”„๋ผ ๊ด€์‹ฌ์‚ฌ๋กœ๋ถ€ํ„ฐ ์ฒ ์ €ํžˆ ๋ถ„๋ฆฌ(๊ฒฉ๋ฆฌ)๋˜์–ด ๊น”๋”ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ์„ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค [6]. * ๋„๋ฉ”์ธ์„ ํƒ๊ตฌํ•˜๊ณ  ๋„๋ฉ”์ธ ์ด๋ฒคํŠธ, ๋ช…๋ น ๋ฐ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฒคํŠธ ์Šคํ† ๋ฐ(Event Storming)๊ณผ ๊ฐ™์€ ํ˜‘์—… ์›Œํฌ์ƒต์ด ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [6]. ## โš–๏ธ Trade-offs & Caveats * **๊ฐ€ํŒŒ๋ฅธ ํ•™์Šต ๊ณก์„ (Steep Learning Curve)**: DDD์— ์ต์ˆ™ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๊ทœ๋ชจ๊ฐ€ ์ž‘์€ ํŒ€์˜ ๊ฒฝ์šฐ, ๋””์ž์ธ ํŒจํ„ด๊ณผ ์ถ”์ƒํ™”์— ๋Œ€ํ•œ ์„ฑ์ˆ™ํ•œ ์ดํ•ด๊ฐ€ ์š”๊ตฌ๋˜๋ฏ€๋กœ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜(Clean Architecture)์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ํ•™์Šต ๊ณก์„ ์œผ๋กœ ์ธํ•ด ํฐ ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6]. * **์ „๋ฌธ์„ฑ ๋ถ€์กฑ ์‹œ ๋„์ž… ์œ„ํ—˜**: ํŒ€ ๋‚ด์— DDD ์ „๋ฌธ์„ฑ์ด ๊ฒฐ์—ฌ๋˜์–ด ์žˆ๋‹ค๋ฉด, ์ด๋ฒคํŠธ ์†Œ์‹ฑ(Event Sourcing) ํŒจํ„ด๊ณผ ๊ฐ™์ด ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ์‚ฌ๊ณ ๋ฐฉ์‹ ์ „ํ™˜์ด ํ•„์š”ํ•œ ๋ณต์žกํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์€ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [5, 8]. ํŠนํžˆ ๋‹จ์ˆœํ•œ CRUD ์ž‘์—… ์œ„์ฃผ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5]. --- - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ๊ณผ๊ฑฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘์‹ฌ ์„ค๊ณ„(ERD ์ค‘์‹ฌ)์—์„œ ํ–‰์œ„์™€ ๋„๋ฉ”์ธ ๋กœ์ง ์ค‘์‹ฌ์˜ ์„ค๊ณ„๋กœ ์ „ํ™˜. - **์ •์ฑ… ๋ณ€ํ™”:** Antigravity ํ”„๋กœ์ ํŠธ๋Š” '์ง€์‹ ๊ด€๋ฆฌ', '๊ฒŒ์ž„ ์—”์ง„', '๋ฐ์ดํ„ฐ ์ˆ˜์ง‘'์„ ๊ฐ๊ฐ์˜ Bounded Context๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ์ปจํ…์ŠคํŠธ ๊ฐ„ ํ†ต์‹ ์€ ๋ฉ”์‹œ์ง€ ํ๋ฅผ ํ†ตํ•œ ๋น„๋™๊ธฐ ๋ฐฉ์‹์„ ์ง€ํ–ฅํ•จ. --- - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์ค‘์‹ฌ์˜ ์„ค๊ณ„์—์„œ, ๋น„์ฆˆ๋‹ˆ์Šค ํ–‰์œ„([[Behavior|Behavior]]) ์ค‘์‹ฌ์˜ ์„ค๊ณ„๋กœ ์ „ํ™˜. ์ดˆ๊ธฐ์—๋Š” ์ค‘๋ณต ๋‚ด์šฉ์ด ์—ฌ๋Ÿฌ ํŒŒ์ผ์— ํฉ์–ด์ ธ ์žˆ์—ˆ์œผ๋‚˜, Antigravity ์ง€์‹ ์ •๋น„ ๊ณผ์ •์„ ํ†ตํ•ด ํ†ตํ•ฉ ๋งˆ์Šคํ„ฐ ๋ฌธ์„œ๋กœ ์ •๋ฆฝ๋จ. - **์ •์ฑ… ๋ณ€ํ™”:** Antigravity ํ”„๋กœ์ ํŠธ๋Š” ์—์ด์ „ํŠธ์˜ ์Šคํ‚ฌ๊ณผ ์ง€์‹ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ DDD ์›์น™์„ ์ ์šฉํ•˜์—ฌ, ๊ฐ ์—์ด์ „ํŠธ๊ฐ€ ๋ช…ํ™•ํ•œ ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„ ๋‚ด์—์„œ ์ž์œจ์„ฑ์„ ๊ฐ–๋„๋ก ๊ตฌ์„ฑํ•จ. --- * **๋†’์€ ๊ตฌํ˜„ ๋ฐ ์„ค๊ณ„ ๋ณต์žก์„ฑ**: ์‹ฌ์ธต์ ์ธ ๋„๋ฉ”์ธ ๋ชจ๋ธ๋ง๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„์„ ์ˆ˜๋ฐ˜ํ•˜๋ฏ€๋กœ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์ปจํ…์ŠคํŠธ ๊ฒฝ๊ณ„๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ณผ์ • ์ž์ฒด๊ฐ€ ๋งค์šฐ ๊นŒ๋‹ค๋กญ๊ณ  ์–ด๋ ต๋‹ค [7, 9]. * **๋ฆฌ์†Œ์Šค์™€ ์‹œ๊ฐ„ ์†Œ๋ชจ**: ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€์™€์˜ ์ง€์†์ ์ธ ํ˜‘์—… ์›Œํฌ์ƒต(Event Storming ๋“ฑ), ๋ชจ๋ธ ๋ถ„์„, ๊ทธ๋ฆฌ๊ณ  ์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด ๊ตฌ์ถ•์— ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž์˜ ์ž์›์ด ์š”๊ตฌ๋œ๋‹ค [6, 9]. * **์ ์šฉ ์˜์—ญ์˜ ์ œํ•œ**: ๊ธˆ์œต, ํ—ฌ์Šค์ผ€์–ด, ์ด์ปค๋จธ์Šค ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์ด ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๊ทœ์น™์ด ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚ธ๋‹ค [9]. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋‹จ์ˆœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— DDD๋ฅผ ๋„์ž…ํ•  ๊ฒฝ์šฐ ์˜คํžˆ๋ ค ๋ถˆํ•„์š”ํ•œ ์—”์ง€๋‹ˆ์–ด๋ง ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๊ณผ๋„ํ•œ ๊ตฌ์กฐ์  ๋ณต์žก์„ฑ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค [9]. --- * **๊ฐ€ํŒŒ๋ฅธ ํ•™์Šต ๊ณก์„ ๊ณผ ์ „๋ฌธ์„ฑ ์š”๊ตฌ:** ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„๋Š” ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋‚˜ ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•œ ์†Œ๊ทœ๋ชจ ํŒ€์—๊ฒŒ๋Š” ํ•™์Šต ๊ณก์„ ์ด ๊ฐ€ํŒŒ๋ฅด๊ณ  ์ ์šฉํ•˜๊ธฐ ๊นŒ๋‹ค๋กœ์šด ์›์น™์ด๋‹ค [8]. ๋ช…ํ™•ํ•œ ์ถ”์ƒํ™”์™€ ์„ค๊ณ„ ํŒจํ„ด์„ ์ดํ•ดํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ํŒ€์ด DDD ์ „๋ฌธ์„ฑ์„ ๊ฐ–์ถ”์ง€ ๋ชปํ•œ ์ƒํƒœ์—์„œ ๋„์ž…์„ ์‹œ๋„ํ•  ๊ฒฝ์šฐ ๊ณ ์ „ํ•  ์ˆ˜ ์žˆ๋‹ค [8]. * **์ „๋ฌธ์„ฑ ๋ถ€์กฑ ์‹œ ํŠน์ • ์•„ํ‚คํ…์ฒ˜ ๋„์ž…์˜ ์ œ์•ฝ:** ์ด๋ฒคํŠธ ์†Œ์‹ฑ(Event Sourcing)๊ณผ ๊ฐ™์ด DDD์™€ ์‹œ๋„ˆ์ง€๋ฅผ ๋‚ด๋Š” ํŠน์ • ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ๋„์ž…ํ•  ๋•Œ, ํŒ€์— ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„์— ๋Œ€ํ•œ ์ „๋ฌธ ์ง€์‹์ด ๋ถ€์กฑํ•˜๋‹ค๋ฉด ์˜คํžˆ๋ ค ํ•ด๋‹น ํŒจํ„ด์˜ ์‚ฌ์šฉ์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋œ๋‹ค [9]. ์ฆ‰, ์‹œ์Šคํ…œ ์„ค๊ณ„์˜ ๋ณต์žก๋„๊ฐ€ ๋†’์•„์งˆ์ˆ˜๋ก DDD์— ๋Œ€ํ•œ ๋†’์€ ์ˆ˜์ค€์˜ ์ดํ•ด๋„๊ฐ€ ํ•„์ˆ˜์ ์ธ ์ „์ œ ์กฐ๊ฑด์ด ๋œ๋‹ค. *(์ฐธ๊ณ : ์†Œ์Šค์— ๊ด€๋ จ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. DDD ์ ์šฉ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์ฒด์ ์ธ ์„ฑ๋Šฅ ์ €ํ•˜, ์ถ”๊ฐ€์ ์ธ ์ธํ”„๋ผ ๋น„์šฉ ๋“ฑ์˜ ๋‹ค๋ฅธ ๊ธฐ์ˆ ์  ๋ถ€์ž‘์šฉ์— ๋Œ€ํ•œ ์–ธ๊ธ‰์€ ์†Œ์Šค์— ์—†์Šต๋‹ˆ๋‹ค.)* --- * **์žฅ์ :** ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์— ๊ฐ•ํ•˜๊ฒŒ ์ •๋ ฌ๋˜๋ฉฐ, ๊ฐœ๋ณ„ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ์˜ ๋…๋ฆฝ์„ฑ ๋•๋ถ„์— ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ๋ณ‘๋ ฌ ๊ฐœ๋ฐœ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค [8-10]. ๋˜ํ•œ ์‹œ์Šคํ…œ์˜ ํ•œ ๋ถ€๋ถ„์— ์žˆ๋Š” ๋ฒ„๊ทธ๊ฐ€ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šฐ๋ฉฐ, ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ ๋ณ€ํ™”์— ๋งž์ถ˜ ํ™•์žฅ(Scalable)์ด ์›ํ™œํ•ฉ๋‹ˆ๋‹ค [10]. ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์„ค๊ณ„์˜ ํ›Œ๋ฅญํ•œ ๊ธฐ์ค€์ ์ด ๋ฉ๋‹ˆ๋‹ค [11, 12]. * **๋‹จ์  (์ œ์•ฝ ์‚ฌํ•ญ):** ๊ตฌํ˜„ ๋ณต์žก๋„(Implementation Complexity)๊ฐ€ ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค [8]. ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€์™€์˜ ์‹ฌ๋„ ์žˆ๋Š” ํ˜‘์—…๊ณผ ๊นŠ์ด ์žˆ๋Š” ๋„๋ฉ”์ธ ๋ชจ๋ธ๋ง์„ ํ•„์š”๋กœ ํ•˜๋ฏ€๋กœ, ๋ถ„์„์— ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ์ž์›(Medium-High Resource Requirements)์ด ์†Œ๋ชจ๋ฉ๋‹ˆ๋‹ค [8]. ๋”ฐ๋ผ์„œ ๋‹จ์ˆœํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณด๋‹ค๋Š” ๊ธˆ์œต, ์˜๋ฃŒ, ์ด์ปค๋จธ์Šค ๋“ฑ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค [8]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [๊ด€๊ณ„ ์œ ํ˜•: ํ˜ธํ™˜ ๋ฐ ํ™•์žฅ ์•„ํ‚คํ…์ฒ˜ (Compatible Architectures)] * [[Hexagonal Architecture]] * ์—ฐ๊ฒฐ ์ด์œ : ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๋ฅผ ์ œ๊ณตํ•˜์—ฌ DDD ์›์น™์„ ์ ์šฉํ•˜๊ธฐ ์ข‹์€ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [3]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: DDD์˜ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์™ธ๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌํ˜„์œผ๋กœ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ๊ธฐ์ˆ ์ ์œผ๋กœ ๋…๋ฆฝ์‹œํ‚ค๋Š”์ง€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. * [[Modular Monolith]] * ์—ฐ๊ฒฐ ์ด์œ : ๋„คํŠธ์›Œํฌ ๋ถ„๋ฆฌ ์—†์ด๋„ DDD ์›์น™์„ ํ†ตํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋Š” ์„ค๊ณ„ ๋ชจ๋ธ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [1]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: MSA์˜ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋ณต์žก์„ฑ์„ ํ”ผํ•˜๋ฉด์„œ๋„ ๋…ผ๋ฆฌ์  ๋„๋ฉ”์ธ ๋ถ„๋ฆฌ ์ด์ ์„ ์ทจํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. * [[Microservices Architecture]] * ์—ฐ๊ฒฐ ์ด์œ : ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ์ค‘์‹ฌ์œผ๋กœ ์กฐ์ง๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด DDD์™€ ์ง๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [2]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋…ผ๋ฆฌ์ ์ธ ๋„๋ฉ”์ธ ๋ชจ๋ธ ์„ค๊ณ„๊ฐ€ ๋ฌผ๋ฆฌ์ ์ธ ์„œ๋น„์Šค ๋ถ„๋ฆฌ ๋‹จ์œ„๋กœ ์–ด๋–ป๊ฒŒ ๋งตํ•‘๋˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### [๊ด€๊ณ„ ์œ ํ˜•: ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ (Core Components)] * [[DDD Aggregates]] * ์—ฐ๊ฒฐ ์ด์œ : ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋‚ด์—์„œ ๊ตฌ์ฒด์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๊ตฌํ˜„ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ์˜ ๋ฌถ์Œ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [4]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์‹œ์Šคํ…œ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„๋ฉ”์ธ ๋‚ด๋ถ€์—์„œ ์–ด๋–ป๊ฒŒ ์บก์Аํ™”๋˜๊ณ  ์กฐ์งํ™”๋˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. #### [๊ด€๊ณ„ ์œ ํ˜•: ๊ฒฐํ•ฉ ์‹œ ๋†’์€ ์ „๋ฌธ์„ฑ์ด ์š”๊ตฌ๋˜๋Š” ํŒจํ„ด (Patterns Requiring Expertise)] * [[Event Sourcing]] * ์—ฐ๊ฒฐ ์ด์œ : ๋ชจ๋“  ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์ด๋ฒคํŠธ์˜ ์—ฐ์†์œผ๋กœ ์บก์ฒ˜ํ•˜๋Š” ํŒจํ„ด์œผ๋กœ, ๋„์ž… ์‹œ DDD ์ „๋ฌธ์„ฑ์ด ํ•„์ˆ˜์ ์œผ๋กœ ์š”๊ตฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [5, 9]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋‹จ์ˆœํ•œ CRUD ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜, ๋„๋ฉ”์ธ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋ธ๋งํ•˜๋Š” ๋ฐฉ์‹์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### Deeper Research Questions * DDD์˜ ํ•ต์‹ฌ ์š”์†Œ์ธ '์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ(Aggregates)'๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ๊ฐ ์„œ๋น„์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ๊ณผ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”๊ฐ€? * ์ด๋ฒคํŠธ ์†Œ์‹ฑ(Event Sourcing) ํŒจํ„ด์„ ๊ตฌํ˜„ํ•  ๋•Œ CRUD ๋งˆ์ธ๋“œ์…‹์„ ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•ด DDD ์ „๋ฌธ์„ฑ์ด ํ•„์ˆ˜์ ์ธ ๊ตฌ์ฒด์  ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€? * ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค(Modular Monolith) ์•„ํ‚คํ…์ฒ˜์—์„œ ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ์—†์ด DDD ์›์น™๋งŒ์œผ๋กœ ๋ชจ๋“ˆ ๊ฐ„ ๊ฐ•๊ฒฐํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์„ค๊ณ„ ๊ธฐ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? * ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜(Clean Architecture)๋‚˜ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)์˜ ํฌํŠธ/์–ด๋Œ‘ํ„ฐ ๋ชจ๋ธ์ด DDD์˜ ๋„๋ฉ”์ธ ๋กœ์ง์„ ์™ธ๋ถ€ ๋ณ€ํ™”๋กœ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ๋ณดํ˜ธํ•˜๋Š”๊ฐ€? * DDD์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์†Œ๊ทœ๋ชจ ๊ฐœ๋ฐœ ํŒ€์ด ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฑ„ํƒํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํ•™์Šต ๊ณก์„ (Learning Curve)์„ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„์  ์ ‘๊ทผ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? ### Practical Application Contexts * **Implementation:** ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๊ตฌํ˜„ํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ๋ฅผ DDD์˜ ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ(Aggregates)๋กœ ์‹๋ณ„ํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜์—ฌ ํ•ต์‹ฌ ๋กœ์ง์„ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค [4]. * **System Design:** ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ๋˜๋Š” ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ปดํฌ๋„ŒํŠธ๋‚˜ ์„œ๋น„์Šค์˜ ๊ฒฝ๊ณ„๋ฅผ ๋ถ„ํ• ํ•˜๋Š” ๋…ผ๋ฆฌ์  ๊ธฐ์ค€์œผ๋กœ DDD์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰ ์ค‘์‹ฌ ๋ถ„ํ•  ์›์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [1-3]. * **Operation / Maintenance:** ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒฝ๊ณ„ ๋•๋ถ„์— ์ˆ˜์ •์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ด๋ฒคํŠธ ์†Œ์‹ฑ ๋“ฑ์„ ๊ฒฐํ•ฉํ•  ์‹œ ์šด์˜์— ๋Œ€ํ•œ ๋†’์€ ์ „๋ฌธ์„ฑ์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค [1, 5]. * **Learning Path:** ํŒ€์— DDD ๊ฒฝํ—˜์ด ์—†๋‹ค๋ฉด ๋ณต์žกํ•œ ์•„ํ‚คํ…์ฒ˜(์˜ˆ: ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜, ์ด๋ฒคํŠธ ์†Œ์‹ฑ) ๋„์ž…์„ ์„ฃ๋ถˆ๋ฆฌ ์ง„ํ–‰ํ•˜๊ธฐ๋ณด๋‹ค, ์ถ”์ƒํ™” ๋ฐ ๋„๋ฉ”์ธ ๋ถ„๋ฆฌ ์›์น™์— ๋Œ€ํ•œ ์‚ฌ์ „ ํ•™์Šต์„ ์ถฉ๋ถ„ํžˆ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [5, 6]. * **My Project Relevance:** ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ๋‹ค๋ฃจ๊ฑฐ๋‚˜ ํ–ฅํ›„ MSA๋กœ์˜ ์•ˆ์ „ํ•œ ์ „ํ™˜์„ ๊ณ ๋ คํ•˜๋Š” ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค๋กœ ์„ค๊ณ„๋  ๋•Œ ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ์ฑ„ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### Adjacent Topics * [[Clean Architecture]] * ํ™•์žฅ ๋ฐฉํ–ฅ: ๋„๋ฉ”์ธ ๋กœ์ง์„ ์ค‘์•™์— ๋ฐฐ์น˜ํ•˜๊ณ  ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ DB๋ฅผ ์–ด๋Œ‘ํ„ฐ๋กœ ๋ฐ€์–ด๋‚ด๋Š” ์ถ”์ƒํ™” ๊ณ„์ธต ์„ค๊ณ„ ์›๋ฆฌ๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ™•์žฅ. * [[Event-Driven Architecture (EDA)]] * ํ™•์žฅ ๋ฐฉํ–ฅ: ๋„๋ฉ”์ธ ๋‚ด์˜ ์ƒํƒœ ๋ณ€ํ™”(Event)๋ฅผ ์‹œ์Šคํ…œ ์ „์ฒด์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ „ํŒŒํ•˜๊ณ  ๋‹ค๋ฅธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ด์— ๋ฐ˜์‘ํ•˜๋„๋ก ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ํ†ต์‹  ๋ฐฉ์‹์— ๋Œ€ํ•œ ํ•™์Šต์œผ๋กœ ํ™•์žฅ. --- *Last updated: 2026-05-02* --- - **Parent:** 10_Wiki/๐Ÿ’ก Topics/Software Architecture - **Related:** Bounded-Context, Microservices, Clean-Architecture, Event-Sourcing - **Merged Sources:** - 10_Wiki/Topics/AI/Domain-Driven Design (DDD) in TypeScript.md - 10_Wiki/Topics/AI/Domain-Driven Design (DDD) Type Safety.md - 10_Wiki/Topics/AI/แ„ƒแ…ฉแ„†แ…ฆแ„‹แ…ตแ†ซ แ„Œแ…ฎแ„ƒแ…ฉ แ„‰แ…ฅแ†ฏแ„€แ…จ (Domain-Driven Design DDD).md - 10_Wiki/Topics/Frontend_Mastery/Domain-Driven Design (DDD).md --- - [[Software-Architecture-Patterns|Software-Architecture-Patterns]], Microservices, [[Strategic-Thinking|Strategic-Thinking]],[[_system|system]]-Design-for-AI-Scale - **Raw Source:** 10_Wiki/Topics/AI/Domain-Driven-Design-DDD.md --- ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ ๋ฐ ์„ค๊ณ„ ์›์น™] - [[Bounded Context]] - ์—ฐ๊ฒฐ ์ด์œ : DDD์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ํŒจํ„ด์œผ๋กœ, ๊ฑฐ๋Œ€ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ„๋ฅผ ์ง€๋‹Œ ๊ฐœ๋ณ„ ๋ชจ๋“ˆ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๊ธฐ์ค€์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [3, 7]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋˜๋Š” ๋ชจ๋“ˆ๋Ÿฌ ๋ชจ๋†€๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์ด ์„œ๋กœ ๊ฐ„์„ญ ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋˜๋Š” ๋…ผ๋ฆฌ์  ๋ถ„๋ฆฌ ์›๋ฆฌ [4, 7, 10, 11]. - [[Clean Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : ์ˆœ์ˆ˜ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™(Entities ๋ฐ Use Cases)์„ UI๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ™์€ ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌํ•˜๋Š” ์ ‘๊ทผ๋ฒ•์œผ๋กœ, DDD๊ฐ€ ์ถ”๊ตฌํ•˜๋Š” ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง์˜ ๋ณดํ˜ธ์™€ ์‹œ๋„ˆ์ง€๋ฅผ ๋‚ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [6, 12]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์‹œ์Šคํ…œ ๋‚ด์—์„œ ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด ์™ธ๋ถ€ ์ธํ”„๋ผ์˜ ๋ณ€ํ™”์— ์˜ํ–ฅ๋ฐ›์ง€ ์•Š๋„๋ก ์˜์กด์„ฑ์„ ์—ญ์ „(Dependency Rule)์‹œํ‚ค๋Š” ์ฝ”๋“œ ํŒจํ‚ค์ง• ๊ธฐ๋ฒ• [12, 13]. #### [๋ถ„์„ ๋„๊ตฌ ๋ฐ ๋ฐฉ๋ฒ•๋ก ] - [[Event Storming]] - ์—ฐ๊ฒฐ ์ด์œ : ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์ˆ  ํŒ€๊ณผ ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€๊ฐ€ ํ˜‘๋ ฅํ•˜์—ฌ ๋„๋ฉ”์ธ ์ด๋ฒคํŠธ, ๋ช…๋ น, ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์›Œํฌ์ƒต ๊ธฐ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [6]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜๊ฒŒ ๋  ์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด์™€ ๋„๋ฉ”์ธ ๋ชจ๋ธ ๊ตฌ์กฐ๊ฐ€ ์‹ค์ œ ์—…๋ฌด ํ”„๋กœ์„ธ์Šค์—์„œ ์–ด๋–ป๊ฒŒ ๋„์ถœ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ํ˜•์„ฑ ๋งฅ๋ฝ [6]. ### Deeper Research Questions - DDD์˜ '์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด'๊ฐ€ ํŒ€์˜ ์˜์‚ฌ์†Œํ†ต์„ ๋„˜์–ด ์‹ค์ œ ์ฝ”๋“œ์˜ ํด๋ž˜์Šค๋ช…, ๋ณ€์ˆ˜๋ช…, ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์— ์–ด๋–ป๊ฒŒ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋งตํ•‘๋˜๋ฉฐ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š”๊ฐ€? - ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ(Bounded Context) ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ฐธ์กฐ๋‚˜ ํ˜ธ์ถœ์ด ํ•„์š”ํ•  ๋•Œ, ์ด๋“ค์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ์ปจํ…์ŠคํŠธ ๋งคํ•‘(Context Mapping)์€ ์‹ค์ œ ์ฝ”๋“œ์—์„œ ์–ด๋–ค ๊ตฌ์กฐ(์ธํ„ฐํŽ˜์ด์Šค, ์ด๋ฒคํŠธ ๋“ฑ)๋กœ ๊ตฌํ˜„๋˜๋Š”๊ฐ€? - ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์ค‘์‹ฌ(Data-driven)์œผ๋กœ ์„ค๊ณ„๋œ ๊ฑฐ๋Œ€ํ•œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋„๋ฉ”์ธ ์ค‘์‹ฌ(Domain-driven) ๋ชจ๋“ˆ ๊ตฌ์กฐ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ(Aggregate) ๋‹จ์œ„๊ฐ€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์ด๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ํ™˜๊ฒฝ ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ์˜ ํŠธ๋žœ์žญ์…˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์–ด๋–ป๊ฒŒ ๋ณด์žฅํ•˜๋Š”๊ฐ€? - ์ฝ”๋“œ๋ฒ ์ด์Šค ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์ฒ ์ €ํžˆ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ(์˜ˆ: '๊ฒฐ์ œ', '๋ฐฐ์†ก')์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ์„ ๋•Œ, ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ฝ”๋“œ์˜ ์ง„์ž…์ (Top-Down)๋ถ€ํ„ฐ ์˜์†์„ฑ ๊ณ„์ธต(Bottom-Up)๊นŒ์ง€ ์ถ”์ ํ•˜๋Š” ํƒ์ƒ‰ ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜์™€ ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์ง€๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง์„ ์™ธ๋ถ€ ์ธํ”„๋ผ ๊ตฌ์กฐ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€์‹ฌ์‚ฌ์™€ ๊ฒฉ๋ฆฌํ•˜์—ฌ, ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฝ๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์€ ์ˆœ์ˆ˜ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค [6]. - **System Design:** ํฐ ์‹œ์Šคํ…œ์„ ๊ธฐ์ˆ ์  ๊ณ„์ธต์ด ์•„๋‹Œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ(Capability) ๋‹จ์œ„๋กœ ๋ถ„ํ•ดํ•˜๋ฏ€๋กœ, ์‹œ์Šคํ…œ ํ™•์žฅ ์‹œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋‚˜ ๋ชจ๋“ˆ๋Ÿฌ ๋ชจ๋†€๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ„ํ• ํ•˜๋Š” ์ฒญ์‚ฌ์ง„์ด ๋œ๋‹ค [11, 14]. - **Operation / Maintenance:** ๊ฐ๊ฐ์˜ ๋„๋ฉ”์ธ(๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ)์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋‚˜ ์žฅ์• ๊ฐ€ ์ „์ฒด ์‹œ์Šคํ…œ์œผ๋กœ ์ „ํŒŒ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ , ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋ถ€๋ถ„์  ๊ฐœ์„ ์ด ์ˆ˜์›”ํ•˜๋‹ค [10]. - **Learning Path:** ๋ณต์žกํ•œ ๋ ˆ๊ฑฐ์‹œ๋‚˜ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์— ์ƒˆ๋กœ ์˜จ๋ณด๋”ฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ํŠน์ • ํ•จ์ˆ˜๋‚˜ ๋กœ์ง์— ๊ฐ‡ํžˆ๊ธฐ๋ณด๋‹ค, ๋””๋ ‰ํ† ๋ฆฌ์— ๋ช…๋ช…๋œ ์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ์šฐ์„  ํŒŒ์•…ํ•˜๋Š” ํ•˜ํ–ฅ์‹ ๋…ํ•ด๋ฅผ ํ›ˆ๋ จํ•  ์ˆ˜ ์žˆ๋‹ค [5, 8]. - **My Project Relevance:** ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ์Šคํ…œ์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋‚˜ ๊ทœ๋ชจ๊ฐ€ ํฐ ๋ชจ๋†€๋ฆฌ์Šค ์‹œ์Šคํ…œ์„ ํ•ด๋…ํ•˜๊ณ  ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ๋•Œ, ์ฝ”๋“œ ๋‚ด์˜ ๋ชจ๋“ˆ์ด ์™œ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๋‹จ์œ„๋กœ ๋ฌถ์—ฌ ์žˆ๋Š”์ง€ ์˜์กด์„ฑ ๊ทœ์น™์„ ์ดํ•ดํ•˜๋Š” ๊ฒฐ์ •์ ์ธ ๋ Œ์ฆˆ๋กœ ํ™œ์šฉ๋œ๋‹ค [5]. ### Adjacent Topics - [[Microservices Architecture]] - ํ™•์žฅ ๋ฐฉํ–ฅ: DDD์˜ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ ๋‹จ์œ„๋กœ ์‹๋ณ„๋œ ๋„๋ฉ”์ธ์ด ์–ด๋–ป๊ฒŒ ๊ฐœ๋ณ„์ ์ด๊ณ  ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ ๋‹จ์œ„์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜๋˜์–ด ์„œ๋น„์Šค ๊ฐ„ ๋А์Šจํ•œ ๊ฒฐํ•ฉ์„ ์ด๋ฃจ๋Š”์ง€์— ๋Œ€ํ•œ ์•„ํ‚คํ…์ฒ˜์  ํ™•์žฅ [11, 14]. - [[Layered Architecture]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ‰์ ์ธ ์ฑ…์ž„(UI, Business Logic, Data Access)์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ์ „ํ†ต์  ์ ‘๊ทผ๋ฒ•๊ณผ ๋น„๊ตํ•˜์—ฌ, ๋„๋ฉ”์ธ ์ค‘์‹ฌ ๊ตฌ์กฐ๊ฐ€ ๊ณ„์ธต ๊ฐ„ ์†Œํ†ต์— ์–ด๋– ํ•œ ์ฐจ์ด๋ฅผ ๋งŒ๋“œ๋Š”์ง€ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์  ํŒจํ„ด ํƒ์ƒ‰ [15-17]. --- *Last updated: 2026-05-02* --- ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] - [[Microservices Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : DDD๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ์„œ๋น„์Šค์˜ ํฌ๊ธฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฒฝ๊ณ„๋ฅผ ์‹๋ณ„ํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ์ค‘์‹ฌ์œผ๋กœ ์‹œ์Šคํ…œ์„ ์กฐ๊ฐ๋‚ด๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๋ฐฉ๋ฒ•๋ก ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [2, 5]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ž‘์€ ์„œ๋น„์Šค๋“ค์ด ์–ด๋–ป๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ๊ณผ 1:1๋กœ ๋งคํ•‘๋˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. - [[Modular Monolith]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค๋Š” ์„œ๋น„์Šค๋ฅผ ๋„คํŠธ์›Œํฌ๋กœ ๋ถ„์‚ฐ์‹œํ‚ค์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋‚ด๋ถ€์ ์œผ๋กœ DDD ์›์น™์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ ์šฉํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋…ผ๋ฆฌ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [3, 6]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฌผ๋ฆฌ์ ์ธ ์„œ๋ฒ„ ๋ถ„๋ฆฌ ์—†์ด๋„ ๋…ผ๋ฆฌ์  ๋„๋ฉ”์ธ ๋ถ„๋ฆฌ๋งŒ์œผ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์„ค๊ณ„์  ์ด์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. - [[Hexagonal Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๋Š” DDD์˜ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง์„ ์™ธ๋ถ€์˜ ๊ธฐ์ˆ ์  ๋ณ€ํ™”๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌ(Isolation)ํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์  ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•˜์—ฌ DDD ์›์น™ ๊ตฌํ˜„์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [1, 7]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ํฌํŠธ(Port)์™€ ์–ด๋Œ‘ํ„ฐ(Adapter)๋ฅผ ์‚ฌ์šฉํ•ด ์–ด๋–ป๊ฒŒ ๋„๋ฉ”์ธ ๋กœ์ง์„ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ### Deeper Research Questions - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์‹œ์Šคํ…œ์„ ๋ถ„ํ• ํ•  ๋•Œ DDD์˜ '์„œ๋ธŒ๋„๋ฉ”์ธ'๊ณผ '์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ'๋Š” ์„œ๋น„์Šค์˜ ์ฑ…์ž„๊ณผ ํŠธ๋žœ์žญ์…˜ ๊ฒฝ๊ณ„๋ฅผ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ•˜๋Š”๊ฐ€? [2, 4] - ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ DDD๋ฅผ ์ ์šฉํ•˜์—ฌ ๋…ผ๋ฆฌ์  ๊ฒฝ๊ณ„๋ฅผ ๋‚˜๋ˆˆ ํ›„, ํ–ฅํ›„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•  ๋•Œ ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌํ•˜๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๊ฒƒ์ธ๊ฐ€? [6, 10] - ์ด๋ฒคํŠธ ์†Œ์‹ฑ(Event Sourcing) ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์„ ๊ตฌ์ถ•ํ•  ๋•Œ DDD ์ „๋ฌธ์„ฑ์ด ๊ฒฐ์—ฌ๋  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ์น˜๋ช…์ ์ธ ๋ฌธ์ œ์ ์€ ๋ฌด์—‡์ด๋ฉฐ, ์–ด๋–ป๊ฒŒ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? [9] - ์• ์ž์ผํ•˜๊ณ  ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ํ•„์š”ํ•œ ์Šคํƒ€ํŠธ์—… ํ™˜๊ฒฝ(MVP)์—์„œ DDD์˜ ๋†’์€ ํ•™์Šต ๊ณก์„ ๊ณผ ์ดˆ๊ธฐ ์„ค๊ณ„ ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋ฉฐ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ๋ฐฉ์•ˆ์€ ๋ฌด์—‡์ธ๊ฐ€? [8] - ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜์˜ ํฌํŠธ ๋ฐ ์–ด๋Œ‘ํ„ฐ ์„ค๊ณ„๊ฐ€ DDD์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์—”ํ‹ฐํ‹ฐ ๋ชจ๋ธ๋ง๊ณผ ๊ฒฐํ•ฉํ•  ๋•Œ, ์‹œ์Šคํ…œ์˜ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์€ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ–ฅ์ƒ๋˜๋Š”๊ฐ€? [1, 11] ### Practical Application Contexts - **Implementation:** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์‹œ, ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™๊ณผ ๋กœ์ง์„ DDD์˜ ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ(Aggregates) ๋ชจ๋ธ๋กœ ์บก์Аํ™”ํ•˜์—ฌ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค [4]. - **System Design:** ๊ฑฐ๋Œ€ํ•œ ๋ชจ๋†€๋ฆฌ์‹ ์‹œ์Šคํ…œ์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„ํ•ดํ•˜๊ฑฐ๋‚˜, ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ์„œ๋น„์Šค์˜ ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„์™€ ๋‹จ์ผ ์ฑ…์ž„์„ ์ •์˜ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ๊ธฐ์ค€์œผ๋กœ ํ™œ์šฉ๋œ๋‹ค [2, 3, 6]. - **Operation / Maintenance:** ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๋‹จ์œ„๋กœ ์‹œ์Šคํ…œ์ด ์ž˜ ๋ถ„ํ• ๋˜๋ฉด, ํ•œ ๋ชจ๋“ˆ์˜ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์–ด ์žฅ๊ธฐ์ ์œผ๋กœ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์„ ์ค„์ด๊ณ  ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋‹ค [3, 6]. - **Learning Path:** ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์—์„œ ์ง„ํ™”ํ•˜์—ฌ ํ—ฅ์‚ฌ๊ณ ๋‚ ์ด๋‚˜ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‹ค๋ฌด์— ๋„์ž…ํ•˜๊ธฐ ์œ„ํ•ด ํŒ€์›๋“ค์ด ์‚ฌ์ „์— ๋ฐ˜๋“œ์‹œ ํ•™์Šตํ•ด์•ผ ํ•˜๋Š” ์ถ”์ƒํ™” ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ๋ง ๊ธฐ๋ฒ•์ด๋‹ค [1, 8]. - **My Project Relevance:** ํ˜„์žฌ ํŒ€์˜ ๊ทœ๋ชจ, ๊ฐœ๋ฐœ์ž์˜ ์ „๋ฌธ์„ฑ, ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žก๋„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ดˆ๊ธฐ์—๋Š” ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค ๊ธฐ๋ฐ˜์˜ DDD๋ฅผ ์ ์šฉํ•˜๊ณ  ์‹œ์Šคํ…œ์ด ์„ฑ์žฅํ•จ์— ๋”ฐ๋ผ ์ ์ง„์ ์œผ๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋กœ๋“œ๋งต์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค [6, 8, 10]. ### Adjacent Topics - [[Event Sourcing]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์ผ๋ จ์˜ ์ด๋ฒคํŠธ ๋กœ๊ทธ๋กœ ์ €์žฅํ•˜๋Š” ์ด ํŒจํ„ด์ด DDD์˜ ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์–ด๋–ป๊ฒŒ ๊ฒฐํ•ฉ๋˜๋Š”์ง€ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค [9, 12]. - [[Clean Architecture]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋„๋ฉ”์ธ ์—”ํ‹ฐํ‹ฐ(Entities)์™€ ์œ ์Šค์ผ€์ด์Šค(Use Cases)๋ฅผ ์™ธ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋“œ๋ผ์ด๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ๊ฐ€ DDD์˜ ์ฒ ํ•™์„ ์–ด๋–ป๊ฒŒ ๋’ท๋ฐ›์นจํ•˜๋Š”์ง€ ์—ฐ๊ตฌํ•œ๋‹ค [13, 14]. --- *Last updated: 2026-05-02* --- ### Related Concepts #### [๊ด€๊ณ„ ์œ ํ˜• A: ์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] * [[๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ (Bounded Context)]] * ์—ฐ๊ฒฐ ์ด์œ : DDD์—์„œ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์„ ๋‚˜๋ˆ„๋Š” ํ•ต์‹ฌ ๊ฒฝ๊ณ„ ๋‹จ์œ„์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [2, 5]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋‚˜ ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๋ชจ๋“ˆ๊ณผ ์„œ๋น„์Šค์˜ ์ฑ…์ž„์„ ์–ด๋–ป๊ฒŒ ๋ฌผ๋ฆฌ์ /๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ถ„ํ• ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [12, 13]. * [[ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ (Clean Architecture)]] * ์—ฐ๊ฒฐ ์ด์œ : DDD์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ ์™ธ๋ถ€ ์ธํ”„๋ผ๋กœ๋ถ€ํ„ฐ ์ฒ ์ €ํžˆ ๊ฒฉ๋ฆฌ/๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ ์›์น™์œผ๋กœ ์‚ผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [7, 14]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: DDD์˜ ๋„๋ฉ”์ธ ๋กœ์ง์ด ์™ธ๋ถ€ ๊ธฐ์ˆ  ๊ณ„์ธต์— ์˜ค์—ผ๋˜์ง€ ์•Š๊ณ  ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์œ ์ง€๋˜๋Š” ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 14]. #### [๊ด€๊ณ„ ์œ ํ˜• B: ๊ตฌํ˜„/ํ™œ์šฉ ๋„๊ตฌ] * [[๋ณดํŽธ์  ์–ธ์–ด (Ubiquitous Language)]] * ์—ฐ๊ฒฐ ์ด์œ : DDD์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์˜์‚ฌ์†Œํ†ต ์ˆ˜๋‹จ์ด์ž, ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€์™€ ๊ฐœ๋ฐœ์ž ์‚ฌ์ด์˜ ์–ธ์–ด ํ†ตํ•ฉ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค [1, 5, 6]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ฝ”๋“œ๋ฒ ์ด์Šค ๋‚ด์˜ ํด๋ž˜์Šค๋ช…, ๋ณ€์ˆ˜๋ช…, ํŒจํ‚ค์ง€๋ช…์ด ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™๊ณผ ์–ผ๋งˆ๋‚˜ ์ผ์น˜ํ•˜๋Š”์ง€ ๋ถ„์„ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์‹ค์ œ ์—ญํ• ์„ ํšจ์œจ์ ์œผ๋กœ ๋…ํ•ดํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค [6, 7]. * [[์ด๋ฒคํŠธ ์Šคํ† ๋ฐ (Event Storming)]] * ์—ฐ๊ฒฐ ์ด์œ : DDD๋ฅผ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•  ๋•Œ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ํƒ๊ตฌํ•˜๊ณ  ๋ชจ๋ธ๋งํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํ˜‘์—… ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค [6]. * ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์‹œ์Šคํ…œ ๋‚ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฒคํŠธ์™€ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ์˜ ๊ด€๊ณ„๋ฅผ ๋„์ถœํ•˜๋Š” ๊ณผ์ •์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6]. ### Deeper Research Questions * DDD์˜ ์—”ํ‹ฐํ‹ฐ(Entity)์™€ ๊ฐ’ ๊ฐ์ฒด(Value Object)๋Š” ์†Œ์Šค ์ฝ”๋“œ ์ƒ์—์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ตฌํ˜„๋˜๋ฉฐ, ์ด๋“ค์˜ ์„ค๊ณ„ ์ฐจ์ด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜์†์„ฑ ์ฒ˜๋ฆฌ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”๊ฐ€? * ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ ๊ฐ„์˜ ๊ด€๊ณ„์™€ ํ†ต์‹  ๋ฐฉ์‹์„ ์ •์˜ํ•˜๋Š” '์ปจํ…์ŠคํŠธ ๋งคํ•‘(Context Mapping)'์€ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์˜ API ์—ฐ๋™(REST, gRPC)์ด๋‚˜ ์ด๋ฒคํŠธ ๋ฉ”์‹œ์ง• ์„ค๊ณ„์— ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”๊ฐ€? * ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ(Data-driven)์œผ๋กœ ์„ค๊ณ„๋œ ๊ฑฐ๋Œ€ํ•œ ๋ ˆ๊ฑฐ์‹œ ๋ชจ๋†€๋ฆฌ์‹ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ DDD ๊ธฐ๋ฐ˜์˜ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ ๋‹จ์œ„๋กœ ์ ์ง„์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์žฅ์• ๋ฌผ๊ณผ ํ•ด๊ฒฐ ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? * ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•  ๋•Œ, ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ DDD์˜ ๊ณ„์ธต ๋ถ„๋ฆฌ ์›์น™๊ณผ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ์˜ ๊ฒฝ๊ณ„(์˜ˆ: UI๊ฐ€ DB๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๋“ฑ ์˜์กด์„ฑ ์œ„๋ฐ˜)๋ฅผ ์ ์ ˆํžˆ ์ค€์ˆ˜ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํšจ์œจ์ ์œผ๋กœ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? * ์ด๋ฒคํŠธ ์Šคํ† ๋ฐ์„ ํ†ตํ•ด ๋„์ถœ๋œ ๋„๋ฉ”์ธ ์ด๋ฒคํŠธ๊ฐ€ ์‹ค์ œ ๊ตฌํ˜„ ๋‹จ๊ณ„์—์„œ '์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜(Event-Driven Architecture)'์˜ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ๊ตฌ์กฐ๋กœ ์–ด๋–ป๊ฒŒ ์ด์–ด์ง€๋Š”๊ฐ€? ### Practical Application Contexts * **Implementation:** ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ DB ์ ‘๊ทผ ์ฝ”๋“œ์™€ ํ˜ผ์žฌ๋˜์ง€ ์•Š์€ ์ˆœ์ˆ˜ํ•œ ํ˜•ํƒœ์˜ ์• ๊ทธ๋ฆฌ๊ฑฐํŠธ, ์—”ํ‹ฐํ‹ฐ, ๊ฐ’ ๊ฐ์ฒด ๋“ฑ ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [2, 6]. * **System Design:** ๋ณต์žกํ•œ ์‹œ์Šคํ…œ(์ด์ปค๋จธ์Šค์˜ ์œ ์ € ๊ด€๋ฆฌ, ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ, ์ธ๋ฒคํ† ๋ฆฌ ๋“ฑ)์˜ ์„œ๋น„์Šค ๊ฒฝ๊ณ„๋ฅผ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„ํ•˜์—ฌ ์ƒํ˜ธ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ๋…๋ฆฝ์ ์ธ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค [4, 5]. * **Operation / Maintenance:** ๋ชจ๋“ˆํ™”๋œ ์ปจํ…์ŠคํŠธ ๊ตฌ์กฐ ๋•๋ถ„์— ์‹œ์Šคํ…œ ์ผ๋ถ€์˜ ๋ฒ„๊ทธ ์ˆ˜์ •์ด๋‚˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋‹ค๋ฅธ ํŒŒํŠธ๋กœ ๋ฒˆ์ง€๋Š” ๊ฒƒ์„ ๋ง‰์•„ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค [10]. * **Learning Path:** ๋‚ฏ์„ค๊ณ  ๋ฐฉ๋Œ€ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ฝ์„ ๋•Œ ํ•˜ํ–ฅ์‹, ์ƒํ–ฅ์‹ ์ถ”์ ์— ์•ž์„œ ๋น„์ฆˆ๋‹ˆ์Šค ์šฉ์–ด ๊ธฐ๋ฐ˜์˜ ํด๋” ๊ตฌ์กฐ์™€ ๋ณดํŽธ์  ์–ธ์–ด๋ฅผ ๋จผ์ € ์Šค์บ”ํ•˜์—ฌ ์„ค๊ณ„์˜ ์˜๋„(Context)๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ํŒŒ์•…ํ•˜๋Š” ๋ฉ˜ํƒˆ ๋ชจ๋ธ์„ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค [7]. * **My Project Relevance:** ๊ฑฐ๋Œ€ํ•˜๊ณ  ๋ณต์žกํ•œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์ฝ๊ณ  ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•˜๊ฑฐ๋‚˜, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋˜๋Š” ๋ชจ๋“ˆํ˜• ๋ชจ๋†€๋ฆฌ์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์Šคํ…œ์„ ๋ฆฌํŒฉํ„ฐ๋ง/์„ค๊ณ„ํ•  ๋•Œ ๋ชจ๋“ˆ ๋ถ„ํ•  ๋ฐ ๋„๋ฉ”์ธ ์ง€์‹ ์ถ”์ถœ์˜ ์ „๋žต์  ๊ธฐ์ค€์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### Adjacent Topics * [[์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜ (Event-Driven Architecture)]] * ํ™•์žฅ ๋ฐฉํ–ฅ: DDD์—์„œ ์‹๋ณ„๋œ ๋„๋ฉ”์ธ ์ด๋ฒคํŠธ๊ฐ€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ฐ„์— ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ™œ์šฉ๋˜๋Š”์ง€, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(Kafka ๋“ฑ)์™€ ํ•จ๊ป˜ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€ ์—ฐ๊ณ„ํ•˜์—ฌ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹ค [15, 16]. * [[C4 ๋ชจ๋ธ (C4 Model)]] * ํ™•์žฅ ๋ฐฉํ–ฅ: ์‹๋ณ„ํ•œ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ์™€ ์ปดํฌ๋„ŒํŠธ ๊ฒฝ๊ณ„๋ฅผ ์—ฌ๋Ÿฌ ์ดํ•ด๊ด€๊ณ„์ž๊ฐ€ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•˜๋Š” ๋ฐฉ์•ˆ์œผ๋กœ ์ง€์‹์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค [17-19]. --- *Last updated: 2026-05-02*