๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ๊ณต๋ถ€

DDD ์„ค๊ณ„, SQL ์ค‘์‹ฌ ์„ค๊ณ„

by syLim___ 2023. 8. 3.
728x90

โœ… DDD์„ค๊ณ„

 -  Domain-Driven Design. (๋„๋ฉ”์ธ ์ค‘์‹ฌ ์„ค๊ณ„)

 

    ๐Ÿฅ ๋„๋ฉ”์ธ์ด๋ž€?

        - ํŠน์ • ์ฃผ์ œ๋‚˜ ๊ด€์‹ฌ ์˜์—ญ.

        - ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋„๋ฉ”์ธ์ด๋ž€, ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฃผ์š” ๋ชฉ์ ์ด ๋˜๋Š” ๋ฌธ์ œ ์˜์—ญ(๋น„์ฆˆ๋‹ˆ์Šค ์˜์—ญ)์ด๋‹ค.

 

 - ์ฆ‰ DDD์„ค๊ณ„๋ž€, ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์˜ ๋ณต์žก์„ฑ๊ณผ ๊ทœ๋ชจ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

 - ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ์ค‘์‹ฌ์œผ๋กœ ํ•˜์—ฌ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋‘”๋‹ค.

 - ๋„๋ฉ”์ธ ๋ชจ๋ธ์€ ์—”ํ‹ฐํ‹ฐ, ๊ฐ’ ๊ฐ์ฒด(value object), ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํŠธ(aggregate) ๋“ฑ์˜ ๊ฐœ๋…์„ ํ™œ์šฉํ•˜์—ฌ ์„ค๊ณ„ํ•œ๋‹ค.

 

 - ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.

 

 ๐Ÿฅ DDD์˜ ํ•ต์‹ฌ ๊ฐœ๋…

 

 - ์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด (๋ณดํŽธ ์–ธ์–ด)

    - ๊ฐœ๋ฐœ์ž, ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€ ์‚ฌ์ด์—์„œ ๊ณต์œ ๋˜๋Š” ๊ณตํ†ต ์–ธ์–ด

    - ๋„๋ฉ”์ธ ๋ชจ๋ธ๊ณผ ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉํ•œ ์–ธ์–ด๊ฐ€ ๋ฌด์Šจ ์˜๋ฏธ์ธ์ง€, ์˜คํ•ด ์—†์ด ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์ „์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

- ์ปจํ…์ŠคํŠธ

    - ์œ ๋น„์ฟผํ„ฐ์Šค ์–ธ์–ด๊ฐ€ ํŠน์ •ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฒ”์œ„

    - ์„œ๋กœ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ ๋‚ด๋ถ€์—์„œ๋Š” ๋™์ผํ•œ ์ด๋ฆ„์˜ ์–ธ์–ด๊ฐ€ ๋‹ค๋ฅธ ์˜๋ฏธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

 

 

โœ… SQL ์ค‘์‹ฌ ์„ค๊ณ„

 - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ์„ค๊ณ„ ๋ฐฉ์‹

 

 - ์ „ํ†ต์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ๋˜์—ˆ๋‹ค.

 - ๋ฐ์ดํ„ฐ ์ €์žฅ/๊ด€๋ฆฌ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋‘”๋‹ค.

 - ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์™€ ๋ฐ์ดํ„ฐ ๊ด€๊ณ„๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„ํ•œ๋‹ค.

 - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ๊ธฐ์ˆ ์— ์ดˆ์ ์„ ๋‘๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์™€ ํ•จ๊ป˜ ์„ค๊ณ„ํ•œ๋‹ค.

 

728x90