๐์๋ก
๋งค๋ฒ DDD๋ผ๋ ๋จ์ด๋ฅผ ์ด๋ ดํ์ด ๋ค์์์ง๋ง, ๊ณต๋ถํด ๋ณธ ์ ์ ์์์ต๋๋ค. ์ด๋ฒ ๋ด๋ฐฐ์บ ๋ถํธ์บ ํ์์ ์ข์ ๊ธฐํ๋ก ๋ฉํ ๋๊ป์ DDD ํน๊ฐ์ ์งํํด ์ฃผ์ จ๊ณ , ๋๋ถ์ ๋ง์ ๊ฒ์ ๋ฐฐ์ฐ๊ณ ๋๋ ์ ์์์ต๋๋ค.
์ด๋ฒ ๊ธ์์๋ ํด๋น ํน๊ฐ์์ ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ ํฉ๋๋ค. ์๋์ฐ ๋ฉํ ๋, ๊ฐ์ฌํฉ๋๋ค. ๐ฅฒ
๐ Domain์ด๋?
๋จผ์ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ด๋ ์ ์ฌํ ์ ๋ฌด์ ์งํฉ์ ์๋ฏธํฉ๋๋ค.(DDD์์์ Domain์ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ ์๋ฏธํฉ๋๋ค)
๐ DDD๋?
DDD(Domain-Driven Design), ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ ๋๋ฉ์ธ ํจํด์ ์ค์ฌ์ ๋๊ณ ์ค๊ณํ๋ ๋ฐฉ์์ ๋งํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ์ ์งํํ๋ค๋ฉด ERD๋ฅผ ์์ฑํ๊ณ , Entity๋ฅผ ๊ฐ๋ฐํฉ๋๋ค.
์ ์ ๋ ์ฌ๋ฌ๊ฐ์ ์ฃผ๋ฌธ์ ํ ์์์ผ๋๊น 1:N, ์ฃผ๋ฌธ ํ๋๋น ๋ฆฌ๋ทฐ ํ๊ฐ๋ฅผ ์์ฑํ ์ ์์ผ๋๊น 1:1, …..
์ด๋ ๊ฒ ์์ฑํ๋ค Entity์ ์ ์งํ๊ฒ ๋ชจ๋ ์ฐ๊ด๊ด๊ณ๋ฅผ FK๋ก ๋งบ์์ต๋๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ์งํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
โ ๏ธ FK๋ฅผ ๋งบ์ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ์
1๏ธโฃ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ ์ง๋ณด์๊ฐ ์ด๋ ค์
์์ ์๋น์ค์์๋ FK๋ก ๋ชจ๋ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค. ํ์ง๋ง ์๋น์ค ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ๋๋ฉ์ธ์ด ๋ง์์ง์๋ก ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๊ฐ ๋ณต์กํด์ง๋ฉด์ ํน์ ํ ์ด๋ธ์ ๋ณ๊ฒฝํ ๋ ์ฐ๊ด๋ ๋ค๋ฅธ ํ ์ด๋ธ๋ค๋ ์์ ํด์ผ ํด์ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง๋๋ค.
2๏ธโฃ ์ฑ๋ฅ ์ ํ (N+1 ๋ฌธ์ ๋ฐ์)
FK๊ฐ ๋ง์์ง๋ฉด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ JOIN์ ์์ฃผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ํนํ, OneToMany(1:N) ๊ด๊ณ์์ ๋ฐ์ํ๋ N+1 ๋ฌธ์ ๋ ์ฌ๊ฐํ ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ ์ ๋ณด๋ฅผ ์กฐํํ๋ฉด์ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๋, ํ ๋ฒ์ ์กฐํ๊ฐ N๊ฐ์ ์ถ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ์์ํค๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ต๋๋ค.
3๏ธโฃ ๋๋ฉ์ธ ๋ก์ง๋ณด๋ค ์ฐ๊ด๊ด๊ณ ์ ์ง์ ๋ ๋ง์ ์๊ฐ ์๋น
์๋๋ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋๋ฉ์ธ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ฐ ์ง์คํด์ผํ์ง๋ง, FK๋ก ๋ชจ๋ ๊ด๊ณ๋ฅผ ์ฐ๊ฒฐํ๋ฉด ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด, ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฑ์ผ๋ก ์ธํด ์์์น ๋ชปํ ์ค๋ฅ๊ฐ ๊ณ์ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๋ญ ํ๋ ์์ ํ๋ฉด ๋ฐฑ๋ง๊ฐ ์์ ํด์ผํ ์๋..
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ด์ ๋ก DDD๊ฐ ๋ ์ค๋ฅด๊ฒ ๋๊ฒ ๊ฐ์ต๋๋ค.
์ ๊ฐ ์ด๋ฒ์ ํ๋ก์ ํธ๋ก ์งํํ ์จ๋ผ์ธ ์์ ์ฃผ๋ฌธ ์๋น์ค๋ฅผ ์๋ก DDD์ ๋ํด ๊ฐ๋ตํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋ช๊ฐ์ง ์ฃผ์ ๋๋ฉ์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฃผ๋ฌธ
- ์ฃผ๋ฌธ ์์ดํ
- ์ํ
- ์ ์
- ๊ฐ๊ฒ
- ๊ฐ๊ฒ ์ฃผ์
ํด๋น ๋๋ฉ์ธ์์ ์ข ์ ์ ์ธ ๊ด๊ณ๋ฅผ ์ฐพ์๋ด ์๋ค. ์ด๋ ์ข ์์ ์ธ ๊ด๊ณ๋ ์์์ฑ ์ ์ด๊ฐ ๊ฐ๋ฅํ ์กด์ฌ. ๋ค๋ฅธ ์๋ฏธ๋ก๋ ๊ฐ์ Lifecycle์ ๊ฐ์ง๋ ์กด์ฌํ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ผ๋ถ๋ง์ ์์ฑํ๊ฒ ์ต๋๋ค.
- ์ฃผ๋ฌธ, ์ฃผ๋ฌธ ์์ดํ
- ์ํ
- ๊ฐ๊ฒ, ๊ฐ๊ฒ ์ฃผ์
- ์ ์
์ ์ ๊ฐ ์ญ์ ๋๋ค๊ณ ์ฃผ๋ฌธ์ ์ํฅ์ ๋ฏธ์น๋ฉด ์๋ฉ๋๋ค. ์ํ์ด ์๊ธด ๋ค์ ์ฃผ๋ฌธ ์์ดํ ์ด ์๊ธธ ์ ์์ต๋๋ค. ์ด๋ป๊ฒ ๋๋๋์ง ํท๊ฐ๋ฆฐ๋ค๋ฉด ํด๋น ์์๋ฅผ ์๊ฐํด๋ณด์๋ฉด์ ์์์ฑ ์ ์ด(Cascade)๊ฐ ๊ฐ๋ฅํ ๋๋ฉ์ธ, ์๋ช ์ฃผ๊ธฐ๊ฐ ๊ฐ์ ๋๋ฉ์ธ์ ์๊ฐํด๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋จผ์ ์ด๋ ๊ฒ ๊ตฌ์กฐ๋ฅผ ์ง๊ณ Entity๋ฅผ ์ค๊ณํ๋ค๋ฉด ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ์งค ์ ์์ต๋๋ค.
- ํ์
- ์ฃผ๋ฌธ
- ๋งค์ฅ
- ๊ฒฐ์
์ฌ๊ธฐ์ ๋ช๊ฐ์ง ์ธ๋ถํ ํ์ฌ ํ์ ๋๋ฉ์ธ๋ค์ ํฌํํ๊ฒ ์ต๋๋ค.
'CS > Architecture' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MSA์์ ๋งํ๋ '๋์จํ ๊ฒฐํฉ'์ด๋? (1) | 2025.03.06 |
---|
๋๊ธ