# [[Domain-Driven Design (DDD)|Domain-Driven Design (DDD)]] ## ๐Ÿ“Œ Brief Summary Domain-Driven Design (DDD)์€ ์ œํ•œ๋œ ์ปจํ…์ŠคํŠธ(bounded contexts)์™€ ๋ณดํŽธ์  ์–ธ์–ด(ubiquitous language)์™€ ๊ฐ™์€ ์œ ์šฉํ•œ ๊ฐœ๋…์„ ๋„์ž…ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค [1]. ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ํŒ€์€ ์ข…์ข… ์ด๋Ÿฌํ•œ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์„ ์‹ค์šฉ์ ์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์Šต๋‹ˆ๋‹ค [1]. ๊ทธ๋Ÿฌ๋‚˜ Feature-Sliced Design(FSD)๊ณผ ๊ฐ™์€ ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ์„ ํ™œ์šฉํ•˜๋ฉด DDD์˜ ๊ฐœ๋…์„ ๋„๋ฉ”์ธ์— ๋งž๊ฒŒ ๊ตฌ์ฒด์ ์ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ํ™•์žฅ์„ฑ ์žˆ๋Š” ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1]. ## ๐Ÿ“– Core Content * **ํ”„๋ก ํŠธ์—”๋“œ์—์„œ์˜ DDD ์ ์šฉ ํ•œ๊ณ„:** DDD๋Š” ์ œํ•œ๋œ ์ปจํ…์ŠคํŠธ์™€ ๋ณดํŽธ์  ์–ธ์–ด ๋“ฑ ํ›Œ๋ฅญํ•œ ์•„์ด๋””์–ด๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ํ”„๋ก ํŠธ์—”๋“œ ํŒ€๋“ค์€ ์ข…์ข… ์ด๋Ÿฌํ•œ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์„ ์‹ค์šฉ์ ์ธ ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ํ•ด์„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์Šต๋‹ˆ๋‹ค [1]. * **FSD๋ฅผ ํ†ตํ•œ DDD ๋ณด์™„:** Feature-Sliced Design (FSD) ์•„ํ‚คํ…์ฒ˜๋Š” DDD์˜ ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์„ ๊ตฌ์ฒด์ ์ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋กœ ๋งคํ•‘ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค [1]. * **๋„๋ฉ”์ธ ๊ฐœ๋…์˜ ๊ตฌ์กฐํ™” (Entities & Features):** FSD ๊ตฌ์กฐ์—์„œ `entities/` ๊ณ„์ธต์€ "User", "Product", "Order"์™€ ๊ฐ™์€ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๊ฐœ๋…๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ UI ๋ฐ ์ƒํƒœ(state) ํ‘œํ˜„์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค [1, 2]. `features/` ๊ณ„์ธต์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์น˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ(์˜ˆ: ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ, ๊ฒฐ์ œ ์ฒ˜๋ฆฌ)์„ ํฌํ•จํ•˜๋ฉฐ, `shared/`๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์›ํ˜•๋“ค์„ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค [1, 2]. * **๊ฐ€์‹œ์ ์ธ ๋„๋ฉ”์ธ ๊ฒฝ๊ณ„:** ์ด๋Ÿฌํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐํ™”๋ฅผ ํ†ตํ•ด ๋„๋ฉ”์ธ์˜ ๊ฒฝ๊ณ„๊ฐ€ ๋‹จ์ˆœํžˆ ๋ฌธ์„œ์ƒ์—๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ฝ”๋“œ์˜ import ๊ฒฝ๋กœ์™€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ์‹œ๊ฐํ™”๋ฉ๋‹ˆ๋‹ค [1]. * **๋ชจ๋“ˆ๋Ÿฌ ๋ชจ๋†€๋ฆฌ์Šค(Modular Monolith)์™€์˜ ์—ฐ๊ณ„:** ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์ˆ˜์ง์  ์Šฌ๋ผ์ด์Šค(Vertical Slice)๋‚˜ ๋ชจ๋“ˆ๋Ÿฌ ๋ชจ๋†€๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ฑ„ํƒํ•  ๋•Œ, ๋ผ์šฐํŠธ, API, ํ…Œ์ด๋ธ” ๋“ฑ์„ ์•„์šฐ๋ฅด๋Š” ์—”๋“œํˆฌ์—”๋“œ(end-to-end) ๋„๋ฉ”์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. ๋„๋ฉ”์ธ ๊ฐ„ ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ๊ต์ฐจํ•˜๋Š” ๊ฒฝ์šฐ ๋„๋ฉ”์ธ ์ด๋ฒคํŠธ(domain events)๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋‚ด๋ถ€ ์ด๋ฒคํŠธ ๋ฒ„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Feature-Sliced Design (FSD)|Feature-Sliced Design (FSD)]], Modular Monolith - **Projects/Contexts:** [[Scalable Frontend Architecture|Scalable Frontend Architecture]] - **Contradictions/Notes:** ์†Œ์Šค์—์„œ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ํ™˜๊ฒฝ์—์„œ DDD๋ฅผ ๋‹จ๋…์œผ๋กœ ์ ์šฉํ•˜๋ฉด ๊ฐœ๋…์ด ๋„ˆ๋ฌด ์ถ”์ƒ์ ์ด์–ด์„œ ์‹คํŒจํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ์ด๋ฅผ ์‹ค์งˆ์ ์ธ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” FSD์™€ ๊ฐ™์€ ๊ตฌ์ฒด์ ์ธ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์˜ ๋„์›€์ด ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค [1]. --- *Last updated: 2026-04-26*