[DDD] 디스틸레이션

skayjays·2021년 11월 24일
0

DDD

목록 보기
12/16

정의

  • 혼합된 요소를 분리해서 본질을 좀더 값지고 유용한 형태로 뽑아내는 과정이다.

전략

  • 팀원들이 시스템의 전체 설계와 해당 설계가 어떻게 함께 조화될지 파악하게끔 돕는다.
  • UBIQUITOUS LANGUAGE의 일부가 될 수 있게 관리 가능한 크기의 핵심 모델을 식별해서 의사소통을 촉진한다.
  • 리팩터링을 이끈다.
  • 가장 중요한 모델 영역의 업무에 초첨을 맞춘다.
  • 아웃소싱, 기성 컴포넌트의 활용, 할당에 관한 의사결정을 돕는다.

CORE DOMAIN

필요성

  • 규모가 큰 시스템을 설계할 때는 시스템에 기여하는 구성요소가 무수히 많다.
  • 모두 복잡하고 성공에 절대적이어서 진정한 업무 자산에 해당하는 도메인의 본질적인 측면이 가려지거나 방치 될 수 있다.
  • 이해하기 힘든 시스템은 변경하기도 어렵다.

해결

  • 모델을 요약하라.
  • CORE DOMAIN을 찾아 그것을 지원하는 다수의 모델과 코드로부터 쉽게 구별할 수 있는 수단을 제공하라.
  • 가장 가치 있고 전문화된 개념을 부각시켜라.
  • CORE를 작게 만들어라.
  • CORE DOMAIN에 가장 재능 있는 인력을 할당하고 그에 따라 인력을 채용하라.
  • 시스템의 비전을 수행하기에 충분한 심층 모델을 찾고 유연한 설계를 개발할 수 있게 CORE에 노력을 쏟아라.
  • 다른 부분에 대한 투자는 해당 부분이 어떻게 정수가 추출된 CORE를 보조할 수 있느냐로 정당화 하라.

정리

  • 소프트웨어를 개발하다 보면 초기에 단순함에 시간이 지남에 따라 복잡도가 증가 하게 된다. 이런 복잡도는 도메인이 복잡해진다기 보다 중요한 부분과 그렇지 않은 부분에 대한 지속적인 도메인 분석을 하지 않은 채 확장만 이루어지면서 생기는 경우가 많다.
    그러므로 디스틸레이션을 활용해서 CORE에 집중할 수 있도록 리팩토링을 반복해 나간다면 규모가 큰 프로젝트에서 품질 좋은 소프트웨어를 개발해 나갈 수 있을 것 같다.
profile
기초를 탄탄하게

0개의 댓글