๋ฐ์ํ

DDD ์ ์ฒ ํ
- DDD(Domain Driven Design, ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ)๋ ๋ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ ๊น์ด ์ง์คํ์ฌ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํํธ์จ์ด๋ฅผ ์ค๊ณํ๋ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
- ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๋๋ฉ์ธ ๋ชจ๋ธ๋ก ํํํ๊ณ , ์ด๋ฅผ ํตํด ๋๋ฉ์ธ์ ์ฑ ์๊ณผ ์ญํ ์ ๋ช ํํ ๋ฐ์ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
- DDD๋ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ ์ ์ดํดํ๊ณ ์ด๋ฅผ ์ํํธ์จ์ด์ ๋
น์ฌ๋ด๋ ๋ฐ ์ค์ ์ ๋๋ฉฐ, ์ค๊ณ ๋จ๊ณ์์๋ถํฐ ์ฝ๋๊ฐ ๋๋ฉ์ธ์ ๋ณธ์ง์ ๋ช
ํํ ๋ฐ์ํ๋๋ก ํจ์ผ๋ก์จ, ๋น์ฆ๋์ค์ ๊ธฐ์ ๊ฐ์ ๊ฐ๊ฒฉ์ ์ค์ด๊ณ ์ฝ๋ ์์ฒด๊ฐ ๋๋ฉ์ธ์ ๋ฌธ์ ์ญํ ์ ํ๋๋ก ๋ง๋๋ ๊ฒ์ด ๊ทธ ํต์ฌ ์ฒ ํ์ด๋ค.
- ์๋ฅผ ๋ค์ด, ์ฐ์ง ์ง์ก ์ด๋ผ๋ ์์ ๋๋ฉ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋, ๊ฐ ์ธ๋ถ์ ์ธ ๊ธฐ๋ฅ์ ‘ํ์', ‘์ํ’, '์ฃผ๋ฌธ', '๊ฒฐ์ ', 'ํํ’, '๋ฐฐ์ก'๊ณผ ๊ฐ์ ํ์ ๋๋ฉ์ธ์ผ๋ก ๋๋์ด ์ญํ ์ ์ ์ํ ์ ์๋ค.
- ์ด๋ฌํ ๊ณผ์ ์ ํตํด ๊ฐ ๋๋ฉ์ธ์ด ๋ฌด์์ ์ฑ ์์ง๊ณ , ์ด๋ค ์ญํ ์ ์ํํด์ผ ํ๋์ง๋ฅผ ๋ช ํํ ํ ์ ์๋ค.
- ์ด๋ ๊ฒ ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ค๊ณํ๊ณ ๋๋ฉด, ๊ฐ ๋๋ฉ์ธ์ด ๋งก๋ ์ญํ ๊ณผ ์ฑ
์์ด ์ฝ๋์ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ์๋๋ฉฐ,
์ด๋ฅผ ํตํด "์ฝ๋๊ฐ ๊ณง ๋ฌธ์ํ"๋ผ๋ ์ฒ ํ๊ณผ ์ฐ๊ฒฐ๋๋๋ฐ, DDD์์๋ ์ฝ๋๊ฐ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋๋ฉ์ธ์ ์ง์ ํํํ๊ธฐ ๋๋ฌธ์, ๋ณ๋์ ๋ฌธ์ ์์ด๋ ์ฝ๋๋ง์ผ๋ก ์์คํ ์ ์ค๊ณ์ ๋์์ ์ดํดํ ์ ์๊ฒ ๋๋ ๊ฒ. - DDD๋ ๋จ์ํ ํด๋ ๊ตฌ์กฐ๊ฐ ์๋๋ผ ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ ๋๋ฉ์ธ ์ค์ฌ์ผ๋ก ์ค๊ณํ๋ ๋ฐฉ๋ฒ๋ก .
- DIP๋ ์ด ์ค๊ณ๋ฅผ ๊ธฐ์ ์ ์ผ๋ก ๊ตฌํํ ๋ ๋๋ฉ์ธ์ ๋ ๋ฆฝ์ฑ์ ๋ณด์ฅํ๋ ์์น์ผ๋ก ์๋ํ๋ค.
DDD์ ํต์ฌ ๊ตฌ์ฑ์์

์ ๋ต์ ์ค๊ณ (Strategic Design)
- Business Domain์ ์ํฉ(Context: ๋์์ฌ์ฉ์, ์ํฉ)์ ๋ง๊ฒ ์ค๊ณํ์๋ ์ปจ์
- ์ ๋ต์ ์ค๊ณ๋ฅผ ์ํด Business Domain์ ๋ชฉ์ ๋ณ๋ก ์๋น์ค๋ค์ ๊ทธ๋ฃนํํฉ๋๋ค.
| ๊ฐ๋ | ๊ธฐ์ค | ์ค๋ฌด ์์ |
| Bounded Context | ๋ณต์กํ ์์คํ ์ ์ด๋ค ๊ฒฝ๊ณ๋ก ๋๋ ๊ฒ์ธ๊ฐ? | - ๊ฐ์ ์ฉ์ด๊ฐ ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ๋ ๊ฒฝ๊ณ (e.g. ์ํ) - ์ฃผ๋ฌธ: ์ฃผ๋ฌธ ํ๋ชฉ, - ๊ฐ๊ฒฉ ๋ฐฐ์ก: ๋ฌด๊ฒ, ํฌ๊ธฐ |
| Ubiquitous Language | ๊ฐ๋ฐ์์ ๊ธฐํ์๊ฐ ๋์ผํ ์ฉ์ด ์ฌ์ฉ → ์ฝ๋์ ๊ทธ๋๋ก ๋ฐ์ | - ๊ธฐํ: "์ฃผ๋ฌธ ํ์ " ์ฝ๋: order.confirm() - ๊ธฐํ: "๋ฐฐ์ก ์์" ์ฝ๋: delivery.start() |
| Context Map Bounded | Context ๊ฐ์ ๊ด๊ณ ์ ์ | - ๊ฒฐ์ Context์ ๋ณ๊ฒฝ์ด ์ฃผ๋ฌธ Context์ ์ํฅ์ ์ค - [์ฃผ๋ฌธ Context] ๊ณ ๊ฐ/๊ณต๊ธ์ - [๊ฒฐ์ Context] |
์ ์ ์ ์ค๊ณ(Tactical Design)
- ํ๋์ Bounded Context ์์์ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ๊ฒ์ธ๊ฐ
- Strategic = "์ด๋์ ์๋ฅผ๊น" (๊ฒฝ๊ณ ์ค์ ) Tactical = "์์์ ๋ญ ๋ง๋ค๊น" (๋น๋ฉ ๋ธ๋ก)
Strategic Design Tactical Design
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
์์คํ
์ Context๋ก ๋ถ๋ฆฌ → ๊ฐ Context ๋ด๋ถ๋ฅผ
Aggregate(ํจ๊ป ์ทจ๊ธ๋์ด์ผ ํ๋ ๊ฐ์ฒด๋ค์ ์งํฉ)๋ก ๊ตฌ์ฑ
[์ ์ฒด ์์คํ
] [ํ๋์ Context]
โโโโโฌโโโโฌโโโโ โโโโโโโโโโโโโโโโโโโ
โ A โ B โ C โ Context โ Aggregate๋ค๋ก โ
โโโโโดโโโโดโโโโ โ ๊ตฌ์ฑ โ
โโโโโโโโโโโโโโโโโโโ
๋ฐ์ํ
'Backend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ์์ Port vs CQRS ํจํด ๋น๊ต (0) | 2026.01.03 |
|---|---|
| ํฅ์ฌ๊ณ ๋ ์ํคํ ์ฒ๋? (0) | 2026.01.03 |