brunch

You can make anything
by writing

C.S.Lewis

[DDD Start] 1장 도메인 모델 시작

들어가는 글: 저는 안드로이드 앱 개발자입니다. 그런데 이것만 하다보니까 조금 답답한 느낌도 들고 새로운 것도 공부해보고 싶어서 https://www.facebook.com/groups/SpringCorea/ 에서 하는 스터디에 가입했습니다. 첫 모임을 가보니 25명도 되네요. SW블로그 라는 매거진에는 제가 SW를 공부하면서 기술적인 내용을 틈틈히 적어보겠습니다. 


[DDD Start]는 스터디때 하기전에 챕터별로 공부한 내용을 적어보려고 합니다. 


0. DDD Start?


최범균 님의 신간입니다. 동일 주제로 예전에 슬라이드 쉐어에도 공개된 것이 있네요. 

http://www.slideshare.net/madvirus/ddd-final 



DDD는 도메인 주도 설계입니다. 자세한 내용은 앞으로 공부하면서 배워나가야겠지요. 

DDD Start는 에릭 에반스의 저서인 "도메인 주도 개발"을 쉽게 쓴 책이라고 합니다. 

총 11장으로 되어 있습니다. 


>>> 아래 내용은 스터디할 때 얘기할 내용을 미리 적어놓은 공부 노트로 자세하지 않을 수도 있음을 양해 바랍니다. 


1장 도메인 모델 시작 


도메인(domain) 

이것이 책만 읽어보면 아직은 잘 모르겠다. 솔직히 잘 와닿는 단어가 아니다. 아마도 책을 끝까지 공부해봐야 와닿지 않을까? 그리고 무엇보다도 도메인이라는 용어의 정의가 수학처럼 딱 떨어지는 것이 아니고 설계자 혹은 분석가에 따라서 그 범위와 체계가 매우 달라질 것 같다. 


예를 들어 

1) 교보문고 웹 사이트의 domain은? 

2) yes24 웹 사이트의 domain은? 

3) 인터파크 도서 사이트의 domain은? 과연 같을까? 다르다면 어떻게 다를까? 


도메인 모델

도메인이라는 단어도 흔들리는데 도메인 모델?? 더 햇갈릴수도 있다. 


하지만 '모델'이라는 단어는 다시 한번 생각해보자. 

모델은 현실세계를 목표하는 시스템으로 축약하여 체계적으로 재구성하는 것이다. 

우리말로는 모형이라고 한다. 


> 설계 vs 모델 은 어떻게 다른가? 


> 객체기반의 모델 설계(4p)는 너무 자세하지 않은가? 정보시스템 설계의 lifecycle로 봤을 때 말이다. 

- 상위설계 vs 상세설계.... 와 모델 설계와의 차이점은? 


> 도메인 모델을 사용하면 여러 관계자들이 동일한 모습으로 도메인을 이해하고 도메인 지식을 공유하는 데 도움이 된다(4p) ... 중요한 얘기나 한 장의 도면으로 만족시키기는 매우 매우 어렵다. 


> 개념 모델 vs 구현 모델 


도메인 모델 패턴 


> 아키텍처의 구성(7p) 

- 표현 (presentation).. 누구나 아는 UI 계층  

- 응용 (application) .. ?????? 나머지? 

- 도메인(domain) ..비즈니스 로직 .. 이것도 명확하지는 않다. 

- 인프라스트럭쳐(infrastructure)... 모델/data? 하고는 다른 것인가? 


> 도메인 규칙(11p) .. 요구사항하고 같은 것으로 생각됨 


엔티티와 밸류

> 엔티티(entity)는 식별자를 가짐, lifecycle을 가짐. 대표 선수? 

 예) Order 

> 밸류(value)는 엔티티의 하위 속성 , 코드의 의미 파악을 좋도록, 불변(immutable) 

  예) Address, Money, OrderLine 


기타 


"set 메소드는 도메인의 핵심 개념이나 의도를 코드에서 사라지게 한다(31p)" .. 케바케 


"도메인에서 사용하는 용어를 코드에 반영하지 않으면 그 코드는 개발자에게 코드의 의미를 해석해야 하는 부담을 준다(34p)" .. 옳은 말씀 


여기까지입니다. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari