ํฐ์คํ ๋ฆฌ ๋ทฐ
[Design Pattern] DDD(๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ)๋?
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 2022. 10. 26. 17:36DDD(Domain-Driven Design)๋?
๋ง์ดํฌ๋ก์๋น์ค์ ์ค๊ณ ๋ฐฉ๋ฒ๋ก ์ธ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ ๋๋ฉ์ธ ํจํด์ ์ค์ฌ์ ๋๊ณ ์ค๊ณํ๋ ๋ฐฉ์์ ๋งํฉ๋๋ค. ์ฆ, ๋๋ฉ์ธ์ ์ค์ฌ์ผ๋ก ์ค๊ณํด ๋๊ฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- DDD๋ ๋น์ฆ๋์ค ๋๋ฉ์ธ๋ณ๋ก ๋๋์ด ์ค๊ณํ๋ ๋ฐฉ์
- ๋จ์ํ ๊ธฐ์ ์ ์ธ ์ฌํญ๋ง ๊ณ ๋ คํ์ง ์๊ณ ์ค์ ๋๋ฉ์ธ์ธ ์๊ตฌ ์ฌํญ์ ์ค์ฌ
- ์ปค๋ฎค๋์ผ์ด์ ์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํ ์ค๊ณ
๋๋ฉ์ธ์ด๋?
์ค์ ์ธ๊ณ์์ ์ฌ๊ฑด์ด ๋ฐ์ํ๋ ์งํฉ์ผ๋ก DDD์์ ๋งํ๋ ๋๋ฉ์ธ์ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ผํ๋ชฐ์์ ์ด์ฉ์๋ค์ธ ๊ณ ๊ฐ ๋๋ฉ์ธ, ์๋๋ค์ด ์ฃผ๋ฌธํ๋ ๋๋ฉ์ธ ๋ฑ์ด ์์ ์ ์์ต๋๋ค. ์ฆ, ๋น์ฆ๋์ค ๋๋ฉ์ธ์ ์ ์ฌํ ์ ๋ฌด์ ์งํฉ์ ๋๋ค.
์ด์ฒ๋ผ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์์ DDD๋ ์ด๋ฌํ ๋น์ฆ๋์ฆ ๋๋ฉ์ธ์ ๋ํ ๊น์ ์ดํด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค์ ๋ํ ์ดํด๋๋ฅผ ๋์ฌ ๋ณต์กํ ๋น์ฆ๋์ค ์ํฉ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค.
DDD์ ์ ์ฉ ๊ณผ์
DDD์ ํต์ฌ ๋ชฉํ๋ "Loolsy coupling", "High cohesion"์ ๋๋ค. ์ฆ, ์ดํ๋ฆฌ์ผ์ด์ ๋๋ ๊ทธ ์์ ๋ชจ๋๊ฐ์ ์์กด์ฑ์ ์ต์ํํ๊ณ ์์ง์ฑ์ ์ต๋ํํ๋ ๊ฒ์ ๋๋ค. ๋ํ DDD๋ Strategic Design๊ณผ Tactical Design์ผ๋ก ๋๋ ์ ์์ต๋๋ค.
- Strategic Design: ๊ฐ๋ ์ค๊ณ (์ ๋ต์ ์ค๊ณ)
- Tactical Design: ํ๋ก๊ทธ๋๋ฐ ํ๊ธฐ ์ํ ๊ตฌ์ฒด์ ์ค๊ณ (์ ์ ์ ์ค๊ณ)
๊ณผ์ ์ ๊ฐ๋จํ ์ ๋ฆฌํ์๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋๋ฉ์ธ/์๋ธ๋๋ฉ์ธ/Bounded Context๋ฅผ ๊ตฌ๋ถํ๊ณ ์ ์
- ์ด๋ฅผ ๋ฐํ์ผ๋ก Aggregate/Entity/Value Object/Repository ๋ฑ์ ๊ตฌํ
- ์ด์ ์ ํฉํ ์ํคํ ์ฒ๋ฅผ ๊ฒฐ์ ํ๊ณ ๊ฐ๋ฐ
์ด๋ฌํ DDD๋ ํ ๊ตฌ์ฑ์์์ด ๋ชจ๋ ์ด์ ๋ํ ์ง์๋ค์ด ํ์ต๋์ด ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋์ ํ๋ ๊ณผ์ ์ด ์ฝ์ง ์์ต๋๋ค.
Strategic Design
๋๋ฉ์ธ ์ ๋ฌธ๊ฐ ๋ฐ ๊ธฐ์ ํ์ด ํจ๊ป ๋ชจ์ฌ ์ ๋น์ฟผํฐ์ค ์ธ์ด๋ฅผ ํตํด ๋๋ฉ์ธ ์ง์์ ๊ณต์ ๋ฐ ์ดํดํ๊ณ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ๋ ๊ณผ ๊ฒฝ๊ณ๋ฅผ ์๋ณํด bounded-context๋ก ์ ์ํ๊ณ ๊ฒฝ๊ณ์ ๊ด๊ณ๋ฅผ context map์ผ๋ก ์ ์ํฉ๋๋ค.
- model: ๋๋ฉ์ธ์ ํน์ ์์์ ๋ฌ์ฌํ๋ ์ถ์ํ ์์คํ
- entity: ํ ์ด๋ธ ๋ชจ๋ธ, ๊ณ ์ ์๋ณ์๋ฅผ ๊ฐ์ง
- value object: ๋ฐ์ดํฐ ํํ ๋ชจ๋ธ ์๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ ๋ถ๋ณ ํ์
- domain model: ์ค์ ์ธ๊ณ๋ฅผ ๋ฐ์ํ๋ ๊ตฌ์ฒด์ ์ธ ์ค๊ณ
- ์ ๋น์ฟผํฐ์ค ์ธ์ด: ๋๋ฉ์ธ ๋ชจ๋ธ์ ๋๋ฌ์ผ ์ธ์ด ๊ตฌ์กฐ๋ก ํ ์ ์ฒด๊ฐ ๊ฐ๊ฐ์ ์ ๋ฌด ํํธ์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ดํ
- context: ์๋ฏธ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋จ์ด๋ ๋ฌธ์ฅ์ด ๋ํ๋๋ ์ค์ ์ผ๋ก ์ํฉ์ด ๋ฒ์ด์ง๋ ์ฃผ๋ณ ํ๊ฒฝ
- bounded-context: context์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ค๋ช ์ผ๋ก ํน์ ๋ชจ๋ธ์ด ์ ์๋๊ณ ์ ์ฉ๋ ์ ์๋ ์์ญ
- context map: ๊ฐ bounded-context๋ค ์ฌ์ด์ ๊ด๊ณ
Tactical Design
Strategic Design์์ ๋์ถ๋ bounded-context์ ๋๋ฉ์ธ์ ์ด์ฉํ์ฌ Aggregate ํจํด, Entity์ Value Object, Repository ๋ฑ์ ๊ตฌ์ฑํ๊ณ ๊ตฌํํฉ๋๋ค.
- Aggregate: ์ฐ๊ด๋ ๋น์ฆ๋์ค ๋ชฉ์ ์ํ์ ์ํ ์ํฐํฐ์ ๋ฒจ๋ฅ ์คํ์ ํธ์ ๋ฌถ์
์ด๋ฌํ ๊ณผ์ ์ ํตํด์ ์ค์ ์๋น์ค๋ฅผ ๊ตฌํํ๊ฒ ๋ฉ๋๋ค.
[์ฐธ๊ณ ]
https://happycloud-lee.tistory.com/94
DDD ํต์ฌ๋ง ๋น ๋ฅด๊ฒ ์ดํดํ๊ธฐ
๋ง์ดํฌ๋ก์๋น์ค์ ์ค๊ณ ๋ฐฉ๋ฒ๋ก ์ธ DDD(Domain Driven Design)์ ๋ํด ์ ๊ฐ ๊ฐ์ง ์ง์๊ณผ ๊ทธ๊ฐ์ ๊ฒฝํ์ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ฆฌํ์์ต๋๋ค. ์ด ๊ธ์ ์ฝ๊ธฐ ์ ์ ๋จผ์ ์ผํ๋ ๋ฐฉ์ ๋ณํ๋ฅผ ์ด๋๊ณ ์๋ ์ ์์ผ, ๋ง์ด
happycloud-lee.tistory.com
https://huisam.tistory.com/entry/DDD
DDD(Domain Driven Design) - ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋? ๋ง์ดํฌ๋ก์๋น์ค์ ๊ด์ ์์
๊ฐ์ฒด์งํฅ์์๋ถํฐ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด์งํฅ์ ๋จผ์ ์ดํดํ ํ์๊ฐ ์์ต๋๋ค ๊ฐ์ฒด์งํฅ์์์ ํต์ฌ์ ๋ญ๊น์? ๊ฐ์ฒด์งํฅ์์์ ํต์ฌ์ ์ค์ธ๊ณ์ ๊ฐ์ฒด(๋ฌผ๊ฑด, ์ฌ๋, ์ฃผ๋ฌธ ....
huisam.tistory.com
https://appleg1226.tistory.com/m/40
(1) DDD๋ ๋ฌด์์ธ๊ฐ - ๋ฐ์ดํฐ ์ค์ฌ ๊ฐ๋ฐ๊ณผ ๋๋ฉ์ธ ์ค์ฌ ๊ฐ๋ฐ
์ฐธ๊ณ ๋ก ์คํฐ๋๋ ๋ค์์ ์ฑ ์ ํตํด์ ์งํํ๋ค. DDD ๊ฐ๋จ ์๊ฐ ์ฐ์ DDD(Domain-Driven Design)์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์๊ฐ๋ฅผ ํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. DDD๋ ๋จ์ํ ์ฝ๋ฉ/์ํคํ ์ฒ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ด ์๋๋ค. ์ฆ ํจํด
appleg1226.tistory.com
https://kadensungbincho.tistory.com/73
DDD๋? ((Business) Domain-Driven (Software) Design)
์ต๊ทผ ์ธ์ฃผ๋ก ์ด์ ๋๋ ์๋น์ค๋ฅผ ๋ด์ฌํํ๋ ์์ ์ ๋ด๋นํ๊ฒ ๋๋ฉด์, ํน์ ๋๋ฉ์ธ์ ๋ชฉ์ ์ ์ํด ๊ตฌํ๋ ์์ค์ฝ๋๋ฅผ ์ดํดํ๋ ๋ฐ์๋ ์์ ํ '๊ธฐ์ ์ '์ธ ์ฌํญ๋ง ์กด์ฌํ์ง ์๋๋ค๋ ์ฌ์ค์ ์
kadensungbincho.tistory.com
https://blog.bespinglobal.com/post/domain-driven-design-1%EB%B6%80-strategic-design/
Domain Driven Design - 1๋ถ (Strategic Design) - ๋ฒ ์คํ๊ธ๋ก๋ฒ ํ ํฌ๋ธ๋ก๊ทธ
Domain Driven Design ๋๋ฉ์ธ ์ฃผ๋ ๋์์ธ์ด๋ ๋๋ฉ์ธ์ด ์ค์ฌ์ด ๋๋ ๊ฐ๋ฐ ๋ฐฉ์์ ๋งํ๋ฉฐ, ์๊ตฌ ์ฌํญ์ ๋ชจ์ผ๋ ๊ฒ๋ถํฐ low_level ๋์์ธ๊น์ง ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ผ์ดํ์ฌ์ดํด ์ ์ฒด๋ฅผ ํฌํจํ๋ ๋ฐฉ๋ฒ๋ก ์ด
blog.bespinglobal.com
'CS > Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] SOLID๋? (3) | 2023.05.23 |
---|---|
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ด๋? (0) | 2022.10.01 |
[Design Pattern] TDD(ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ) (0) | 2022.07.04 |
[ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์] OOP์ FP (0) | 2022.07.03 |
[Design Pattern] GoF(Gang of Four) ๋์์ธ ํจํด ์ข ๋ฅ (0) | 2022.06.28 |
- Total
- Today
- Yesterday
- Baekjoon
- ๋์์ธ ํจํด
- ๋ฐฑ์ค node.js
- ๋ฐฑ์ค
- ํ๋กํ ์ฝ
- ์ด๋ถํ์
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- ์ด์์ฒด์
- git
- map
- TDD
- fp
- ์๊ณ ๋ฆฌ์ฆ
- JavaScript
- ๋คํธ์ํฌ
- ๋ฐฑ์ค javascript
- ์ ์ญ ๋ณ์
- ์ฝ๋ฉํ ์คํธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋กํผํฐ
- ๋ ์์ปฌ ํ๊ฒฝ
- ์นด์นด์ค ์ธํด
- ํ๋ก๊ทธ๋๋จธ์ค
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- http
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ์๋ฐ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ํฌํฌ์ธํฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |