티스토리 뷰

Programming/DDD

Distillation

Albothyl 2019. 8. 3. 21:40

Distillation은 혼합된 요소를 분리해서 Domain Model의 본질을 좀 더 값지고 유용한 형태로 뽑아내는 과정이다. 이 과정은 가장 중요한 Domain Model에 초점을 맞춤으로써 시스템의 전체 설계를 파악과 리펙토링, 의사결정을 돕니다.


  • Core Domain
    • Business Domain을 대표하는 업무와 관련된 Model을 찾고 요약한다.
    • 가장 가치 있고 전문화된 개념을 부각해야 한다.
    • Core Domain을 찾는 일은 반복 주기를 거치면서 발전한다.
  • Domain Vision Statement
    • Application이 조직에 가져올 기본 개념과 가치를 전달하는 문서를 작성한다.
    • Domain Model의 본질에 집중하여 짧게 작성한다.
    • 팀 내에서 방향성을 공유하게 만들어준다.
    • 팀의 의사소통 수준이 낮다면 효과가 없다.
  • Highlighted Core
    • Core Domain과 구성요소 사이의 상호작용을 기술하는 문서를 작성한다.
    • 객체의 주요 관계를 설명하려 하지 말고, 다이어그램같이 표시/표현한다.
    • 개발자가 아닌 팀원도 이해할 수 있는 문서를 작성한다.
    • 의소통을 향상하고 의사결정을 내리는데 도움이 된다.
  • Generic SubDomain
    • 각 측면의 의미를 명확하게 하는 Core Domain과 대조를 이룬다.
    • Core Domain의 부수적인 요소를 분리해서 핵심 Business를 명확히 한다.
    • Core Domain이 아닌 Domain 중 응집력 있는 하위 Domain을 식별하여 별도의 Module로 분리한다.
    • Core Domain보다 낮은 우선순위를 갖는다.
    • 오픈 소스같이 다른 솔루션을 고려해볼 수 있다.
    • 시스템에 필요한 기능이고, Model을 완전히 표현하는데 중요한 역활을 한다.
    • Core Domain보다 덜 중요할뿐 Domain을 표현한다.
  • Cohesive Mechanism
    • 문제 해결을 위한 많은 Algorithm과 Method가 문제의 표현을 불분명하게 만들 수 있다.
    • 문제 해결의 복잡성(어떻게)을 프레임워크에 위임하여 문제(무엇)를 표현하는데 집중할 수 있다.
    • Intention Revealing Interface를 사용한 유연한 설계를 통해 캡슐화할 수 있다.
    • Generic SubDomain과의 차이는 맡고 있는 책임의 본질에 있다. Cohesive Mechanism은 Domain을 나타내지 않는다. 하지만 일부 Business에 특화된 핵심 Algorithm을 보유한 경우 Core Domain의 일부로 여겨질 수 있다.

 

 

'Programming > DDD' 카테고리의 다른 글

전략의 종합  (0) 2019.08.03
Large Scale Structure : 대규모 구조  (0) 2019.08.03
Bounded Context  (0) 2019.08.03
분석 패턴  (0) 2019.08.03
유연한 설계  (0) 2019.08.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함