DDD์ ํต์ฌ์ ๋๋ฉ์ธ์ ๊น์ด ์ดํดํ๊ณ , ์ด๋ฅผ ์ค์ฌ์ผ๋ก ์ค๊ณ์ ๊ฐ๋ฐ์ ์งํํจ์ผ๋ก์จ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๋ฐ ์์ต๋๋ค.
์ํํธ์จ์ด๊ฐ ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ์์ญ.
์: ์ ์ ์๊ฑฐ๋ ์์คํ ์ ๋๋ฉ์ธ์ "์ํ ์ฃผ๋ฌธ๊ณผ ๊ฒฐ์ "์ ๋๋ค.
ํ์(๋น์ฆ๋์ค ์ ๋ฌธ๊ฐ, ๊ฐ๋ฐ์)์ด ๊ณต์ ํ๋ ๊ณตํต์ ์ธ์ด.
๋๋ฉ์ธ์ ๊ฐ๋ ๊ณผ ์ฉ์ด๋ฅผ ์ผ์น์์ผ ์ปค๋ฎค๋์ผ์ด์ ์ค๋ฅ๋ฅผ ์ค์ด๋ ์ญํ ์ ํฉ๋๋ค.
๋๋ฉ์ธ ๋ชจ๋ธ์ด ๋ช ํํ๊ฒ ์ ์๋๊ณ ์ ์ฉ๋๋ ๊ฒฝ๊ณ.
์: "์ฃผ๋ฌธ"๊ณผ "๊ฒฐ์ "๋ ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ๋ฐ์ด๋๋ ์ปจํ ์คํธ๋ก ๋๋ ์ ์์ต๋๋ค.
๋๋ฉ์ธ์ ์ถ์ํํ ์ค๊ณ ๋ชจ๋ธ๋ก, ๊ฐ์ฒด์ ๊ด๊ณ๋ฅผ ํตํด ๋น์ฆ๋์ค ๋ก์ง์ ํํํฉ๋๋ค.
๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ์ธ ์ํฐํฐ(Entity)์ ๊ฐ ๊ฐ์ฒด(Value Object)์ ์งํฉ์ผ๋ก, ํธ๋์ญ์ ๊ฒฝ๊ณ๋ฅผ ์ ์ํฉ๋๋ค.
๋๋ฉ์ธ ์ ๋ฌธ๊ฐ์์ ํ์ ์ ํตํด ์๊ตฌ์ฌํญ์ ๋ถ์ํ๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ์ ์ํฉ๋๋ค.
์: ๊ณ ๊ฐ, ์ฃผ๋ฌธ, ๊ฒฐ์ ์ ๊ฐ์ ์ฃผ์ ๊ฐ๋ ์ ๋์ถ.
ํ ๊ฐ์ ์ผ๊ด๋ ์ฉ์ด๋ฅผ ์ ์ํ์ฌ ๋๋ฉ์ธ ์ธ์ด๋ก ์ปค๋ฎค๋์ผ์ด์ ํฉ๋๋ค.
๋๋ฉ์ธ ์ ์ฒด๋ฅผ ์ธ๋ถํํ์ฌ ๊ฐ ์ปจํ ์คํธ์ ๊ฒฝ๊ณ๋ฅผ ์ ์ํ๊ณ ๋ ๋ฆฝ์ฑ์ ์ ์งํฉ๋๋ค.
์: "๋ฐฐ์ก ๊ด๋ฆฌ"์ "์ํ ์นดํ๋ก๊ทธ"๋ฅผ ๋ณ๋ ์ปจํ ์คํธ๋ก ๊ด๋ฆฌ.
์ํฐํฐ(Entity), ๊ฐ ๊ฐ์ฒด(Value Object), ์ ๊ทธ๋ฆฌ๊ฒ์ดํธ(Aggregate)๋ฅผ ์ ์ํ์ฌ ์ฝ๋์ ๋ฐ์ํฉ๋๋ค.
์: "Order"๋ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ์ํฐํฐ๋ก ์ค๊ณ.
์ฅ์ :
ํ๊ณ:
DDD๋ ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ ๋ค๋ฃจ๋ ์ํํธ์จ์ด ์ค๊ณ์ ๋งค์ฐ ์ ์ฉํ ์ ๊ทผ๋ฒ์ ๋๋ค. ํนํ ์ฅ๊ธฐ์ ์ธ ์ ์ง๋ณด์์ฑ๊ณผ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ ๋ฐ์์ ํ์ํ ๊ฐ์ ์ ๊ฐ์ง๋๋ค. ํ์ง๋ง DDD๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉํ๋ ค๋ฉด ๋๋ฉ์ธ ์ ๋ฌธ๊ฐ์์ ๊ธด๋ฐํ ํ์ ๊ณผ ์ค๊ณ ์ด๊ธฐ ๋จ๊ณ์์ ์ถฉ๋ถํ ์๊ฐ์ ํฌ์ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
์ฐธ๊ณ ์๋ฃ
msa ๋ชจ๋ธ๋ง: ๏ปฟengineering-skcc.github.io/microservice%20modeling/Event-Storming/
๋งํฌ: ๏ปฟwww.msaez.io/#/