๐Domain์ด๋?
๋๋ฉ์ธ์ด๋ ์ฌ์ ์ ์๋ฏธ๋ก '์์ญ', '์งํฉ' ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ฆ๋์ค Domain์ ์ ์ฌํ ์
๋ฌด์ ์งํฉ์ด๋ค.
๐DDD๋?
DDD(Domain-Driven Design) ๋๋ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ๋๋ฉ์ธ ํจํด์ ์ค์ฌ์ ๋๊ณ ์ค๊ณํ๋ ๋ฐฉ์์ ์ผ์ปซ๋๋ค.
์ดํดํ๊ธฐ ์ข๊ฒ ์๋ฅผ ๋ค์ด ๋ณด์๋ฉด, ๋ง์ฝ ์ด์ปค๋จธ์ค ์๋น์ค์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๋๋ ์ ์๋ค.
- ๊ฒฐ์
- ์ฃผ๋ฌธ
- ๋ฐฐ์ก
- ๊ณ ๊ฐ๊ด๋ฆฌ
- ์ธ์ฆ
์ด์ฒ๋ผ DDD๋ ํฐ ๊ท๋ชจ์ ์๋น์ค๋ฅผ ์์ ๋น์ง๋์ค ๋จ์๋ก ์ชผ๊ฐ์ด ๊ฐ ๋๋ฉ์ธ ๊ฐ์ ์์ง๋๋ฅผ ๋์ด๊ณ ์๋ก ๋ค๋ฅธ ๋๋ฉ์ธ๋ผ๋ฆฌ ๋์จํ ์์กด๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
๐DDD? MSA?
์ด๋ ๊ฒ๋ง ๋ณด๋ฉด ๊ฐ๊ฐ ๋
๋ฆฝ์ ์ธ ์๋น์ค๋ฅผ ์ฐ๊ฒฐํ ๊ตฌ์กฐ์ธ MSA์ ๊ฐ๋
๊ณผ ๊ต์ฅํ ์ ์ฌํด๋ณด์ธ๋ค.
โ
MSA๋ฅผ ํ์์ํจ DDD
์์ํ๋๋๋ก MSA๋ DDD๋ก๋ถํฐ ์๋ค๊ณ ํ๋ค. DDD์ ํต์ฌ ์์์ธ Loose Coupling(๋์จํ ๊ฒฐํฉ)๊ณผ High Cohesion(๋์ ์์ง)์ MSA๋ฅผ ์ค๊ณํ ๋ ๊ผญ ๊ธฐ์ตํด์ผ ํ ์ค๊ณ ์์น์ด๋ค.
DDD๋ MSA์ ์๋น์ค๋ฅผ ์๋ณํ ์ ์๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ ๋ฟ ์๋น์ค์ ์ฌ๋ฐ๋ฅธ ์๋ณ์ ๋ณด์ฅํ์ง๋ ์๋๋ค. ์ฆ, DDD๋ฅผ ์ฌ์ฉํ๋ค๊ณ MSA๋ฅผ ์๋ฒฝํ๊ฒ ์ ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋ค.

๐DDDํน์ง
- ๋๋ฉ์ธ ๊ทธ ์์ฒด์ ๋๋ฉ์ธ ๋ก์ง์ ์ด์ ์ ๋ง์ถ๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ค์ฌ์ ์ ๊ทผ๋ฒ์ ํํผํด์ ์์ํ ๋๋ฉ์ธ์ ๋ชจ๋ธ๊ณผ ๋ก์ง์ ์ง์คํ๋ ๊ฒ์ ๋งํ๋ค.
- ๋ณดํธ์ ์ธ(ubiquitous) ์ธ์ด์ ์ฌ์ฉ์ด๋ค. ๋๋ฉ์ธ ์ ๋ฌธ๊ฐ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์
๋ฌธ์ ๋ฅผ ์์ ๊ณ ์ํธ๊ฐ ์ดํดํ ์ ์๊ณ ๋ชจ๋ ๋ฌธ์์ ์ฝ๋์ ์ด๋ฅด๊ธฐ๊น์ง ๋์ผํ ํํ๊ณผ ๋จ์ด๋ก ๊ตฌ์ฑ๋ ๋จ์ผํ๋ ์ธ์ด์ฒด๊ณ๋ฅผ ๊ตฌ์ถํด๋๊ฐ๋ ๊ณผ์ ์ ๋งํ๋ค. ์ด๋ก์ ๋ถ์ ์์
๊ณผ ์ค๊ณ ๊ทธ๋ฆฌ๊ณ ๊ตฌํ์ ์ด๋ฅด๊ธฐ๊น์ง ํต์ผ๋ ๋ฐฉ์์ผ๋ก ์ปค๋ฎค๋์ผ์ด์
์ด ๊ฐ๋ฅํด์ง๋ค.
- ์ํํธ์จ์ด ์ํฐํฐ์ ๋๋ฉ์ธ ์ปจ์
ํธ๋ฅผ ๊ฐ๋ฅํ ๊ฐ์ฅ ๊ฐ๊น์ด ์ผ์น์ํค๋ ๊ฒ์ด๋ค. ๋ถ์ ๋ชจ๋ธ๊ณผ ์ค๊ณ๊ฐ ๋ค๋ฅด๊ณ ๊ทธ๊ฒ๊ณผ ์ฝ๋๊ฐ ๋ค๋ฅธ ๊ตฌ์กฐ๊ฐ ์๋๋ผ ๋๋ฉ์ธ ๋ชจ๋ธ๋ถํฐ ์ฝ๋๊น์ง ํญ์ ํจ๊ป ์์ง์ด๋ ๊ตฌ์กฐ์ ๋ชจ๋ธ์ ์งํฅํ๋ ๊ฒ์ด DDD์ ํต์ฌ์๋ฆฌ์ด๋ค.
- DDD๋ Spring Data JDBC๋ผ๋ ๊ธฐ์ ๊ณผ ๋ฐ์ ํ ์ฐ๊ด์ด ์์ด Spring Data JDBC๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ DDD์ ๋ํ ๊ฐ๋
์ ์ดํดํ๊ณ ์์ด์ผ ํ๋ค.
๐ ๋ฐ์ดํฐ ์ฃผ๋ ์ค๊ณ๋?
๋ฐ์ดํฐ ์ฃผ๋ ์ค๊ณ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ ธ์ผ ํ ๋ฐ์ดํฐ์ ์ด์ ์ ๋๊ณ ์ค๊ณ๋ฅผ ํ๋ ๋ฐฉ์์ ์ผ์ปซ๋๋ค.
๋ฐ์ดํฐ ์ฃผ๋ ์ค๊ณ ์์๋ ๊ฐ์ฒด ์์ ์ด ํฌํจํ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๋ฐ ํ์ํ ํ๋์ ์ ์ํ๋ค.
๐ ์ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ฅผ ์ฌ์ฉํด์ผ ํ๋๊ฐ?
- ๋๋ฉ์ธ ๋ชจ๋ธ์ ์ ์ฉ ๋ฒ์๋ฅผ ๊ตฌํ๊น์ง ํ์ฅํ์ฌ ๋๋ฉ์ธ ์ง์์ ๊ตฌํ ์ฝ๋์ ๋ฐ์
- ๊ณตํต์ ์ธ์ด(์ ๋น์ฟผํฐ์ค ์ธ์ด)๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฉ์ธ๊ณผ ๊ตฌํ์ ์ถฉ๋ถํ ๋ง์กฑํ๋ ๋ชจ๋ธ์ ๋ง๋ ๋ค.
- ์ค์ ์ฝ๋๋ก ๊ตฌํ ๊ฐ๋ฅํ ํ์ค์ฑ ์๋ ๋๋ฉ์ธ ๋ชจ๋ธ ๋ถ์๊ณผ ๊ทธ๊ฒ์ ์ถ์ํํ๋ ์ค๊ณ
- "์ค๊ณ๋ฅผ ํ๋ผ, ๊ทธ ๋ค์์ ๊ตฌ์ถํ๋ผ"๊ฐ ์๋๋ค.