πŸ‘¨‍πŸ’» kimtongting
article thumbnail

 

 

 

도메인 쀑심 섀계(Domain-Driven Design)μ΄λž€?

λ‹¨μˆœν•˜κ²Œ μ •λ¦¬ν•˜μžλ©΄ 도메인(λΉ„μ¦ˆλ‹ˆμŠ€ λͺ©ν‘œ)을 μ€‘μ‹¬μœΌλ‘œ 잘게 μͺΌκ°œμ–΄ 섀계(λ˜λŠ” 문제 ν•΄κ²°)ν•΄ λ‚˜κ°€λŠ” 방법이닀.

ν”„λ‘œμ νŠΈ 속 λͺ¨λ“ˆκ°„μ˜ μ˜μ‘΄μ„±μ€ μ΅œμ†Œν™”ν•˜λ©° 응집성은 μ΅œλŒ€ν™” ν•˜λ©΄μ„œ 말이닀...

 

처음 DDD 에 λŒ€ν•œ κ°œλ…μ„ μ ‘ν•  λ•ŒλŠ” λ„ˆλ¬΄λ‚˜λ„ 넓은 λ²”μœ„μ— λ‚œν•΄ν•΄μ„œ κ°œλ…μ„ μ΄ν•΄ν•˜κΈ° μ–΄λ €μ› μ—ˆλ‹€. 객체지ν–₯에 λŒ€ν•œ κ°œλ…μ„ μ œλŒ€λ‘œ μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆμ—ˆκΈ° λ•Œλ¬ΈμΌκΉŒ.

 

객체 지ν–₯은 독립적인 개체(객체)듀이 μƒν˜Έμž‘μš©μ„ 톡해 λ°œμƒμ‹œν‚€λŠ” 이벀트λ₯Ό λͺ©μ μœΌλ‘œ ν•œλ‹€.

 

물건을 μ‚¬κΈ°μœ„ν•΄(Buy Domain) λ§ˆνŠΈμ— λ“€μ–΄κ°„ Aμ”¨λŠ” κ·Έκ³³μ—μ„œ μΌν•˜κ³  μžˆλŠ” Bμ”¨μ—κ²Œ 계산을 ν•œλ‹€(Sell Domain)

점주인 C λŠ” 이λ₯Ό 관리(Manage Domain)ν•œλ‹€.

벌써 μ—¬κΈ°μ„œλ§Œ 3개 μ΄μƒμ˜ 도메인이 λ°œμƒν–ˆλ‹€.

 

μš°λ¦¬λŠ” μ΄λ ‡κ²Œ λ°œμƒν•œ 도메인듀을 μ„œλΉ„μŠ€ λ³„λ‘œ 뢄리 ν•˜λŠ” 것을 DDD라 λΆ€λ₯΄κΈ°λ‘œ ν–ˆλ‹€.

μ‹€λ‘œ 좔상적이고 μ• λ§€ν•˜λ©° λ‚œν•΄ν•œ 말이 아닐 수 μ—†λ‹€. 근데 또 μ›ƒκΈ΄κ²Œ κ΄€λ ¨λœ 글을 읽닀보면 이게 λ§žλ‹€ ..γ…Žγ…Ž

 

μ΄λ ‡κ²Œ μ–΄λ €μ›Œ ν•™μŠ΅λΉ„μš©λ„ 크고, ν”„λ‘œμ νŠΈ 진행 단계와 관계없이 거쳐야 ν•  과정도 λ§Žμ€ DDDλŠ” 늘 μ˜³μ€ κ²ƒμΌκΉŒ?

 

'Implementing DDD'의 μ €μž 반 버논은 DDD λ„μž…μ΄ ν•„μš”ν•˜μ§€ μ•Šμ€ κ²½μš°μ— λŒ€ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같이 λ§ν•˜κ³  μžˆλ‹€.

λ‹Ήμ‹ μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ™„μ „νžˆ 데이터 쀑심(data-centric)이며 μˆœμˆ˜ν•œ CRUD μ†”λ£¨μ…˜μ— 정말 잘 λ§žμ•„μ„œ, λͺ¨λ“  λ™μž‘μ΄ κ°„λ‹¨ν•œ λ°μ΄ν„°λ² μ΄μŠ€ 쿼리λ₯Ό 톡해 기본적인 생성, 읽기, κ°±μ‹ , μ‚­μ œ 등을 μˆ˜ν–‰ν•  뿐이라면 DDDκ°€ ν•„μš”ν•˜μ§€ μ•Šλ‹€. λ‹Ήμ‹ μ˜ νŒ€μ€ κ·Έμ € 예쁜 λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ” νŽΈμ§‘κΈ°λ§Œ 있으면 λœλ‹€. ...... 당신이 λ‹¨μˆœν•œ λ°μ΄ν„°λ² μ΄μŠ€ 개발 도ꡬλ₯Ό μ‚¬μš©ν•΄ μ†”λ£¨μ…˜μ„ λ§Œλ“€ 수 μžˆλ‹€λ©΄, DDD에 νšŒμ‚¬μ˜ μ‹œκ°„κ³Ό λˆμ„ λ‚­λΉ„ν•˜μ§€ 말라.

1. 물건을 사기 μœ„ν•΄ ν•„μš”ν•œ 정보λ₯Ό 담은 객체와

2. 계산을 ν•˜κΈ° μœ„ν•œ 정보λ₯Ό 담은 객체

3. 관리λ₯Ό ν•˜κΈ° μœ„ν•œ 정보λ₯Ό 담은 객체

 

μœ„ 3개의 Repository λ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν•˜λŠ” 것이 λ§žμ„κΉŒ?

 

 

객체 κ°„ λ‚΄λΆ€ μƒν˜Έμž‘μš©μ„ 톡해(κ±°λ₯΄κ³  걸러) 곡톡 집합을 μ°Ύμ•„ Repository둜 λ¬Άμ—¬μ•Όλ§Œ ν•œλ‹€.

였늘 νšŒμ‚¬μ—μ„œ 집가지 κ°€λŠ” 무수히 λ§Žμ€ 방법 쀑 졜적의 ν•œ 가지 루트λ₯Ό μ°ΎλŠ” λ„€λΉ„κ²Œμ΄μ…˜κ³Ό 같이 말이닀.

 



πŸ“šλ” 읽을거리

πŸ”— DDD지ν–₯ 마이크둜 μ„œλΉ„μŠ€ λ””μžμΈ

πŸ”— ν•„μš”ν•œ λ‚΄μš©λ§Œ μΆ”λ €μ„œ DDD λ‹Ήμž₯ 써먹기

πŸ”— DDD ν•΅μ‹¬λ§Œ λΉ λ₯΄κ²Œ μ΄ν•΄ν•˜κΈ°

 

 

λ°˜μ‘ν˜•
profile

πŸ‘¨‍πŸ’» kimtongting

@kimtongting μž…λ‹ˆλ‹€

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!