[책] 도메인 주도 설계(에릭에반스) -3
링크 - http://yimay.kr/t499o6dfsz
제 2부 모델 주도 설계의 기본 요소
- 책임 주도 설계
- 정교한 모델은 가장 근본적인 사항에 관심을 가질때만 비로소 복잡성을 헤쳐나갈 수 있다.
04_도메인의 격리
LATERED ARCHITECTURE(계층형 아키텍처)
- 사용자 인터페이스, 데이터베이스 등의 코드가 비지니스 객체 안에 직접 작성하기도함. => 단기간에 동작하게 하기 위한 가장 쉬운 방식
- 이런 방식은 테스트가 어렵고, 이해하기 어렵고, 유지보수가 어렵다.
- 관심사의 분리(separation of concern) : 격리된 상태에서 있는 각 설계요소에 집중
- 계층화의 핵심 원칙 : 한 계틍의 모든 요소는 오직 같은 계층 또는 하위 계층에 요소에만 의존한다.
응집력 있는 설계가 가능, 설계를 더 쉽게 이해 가능
- 사용자 인터페이스 계층
- 응용계층 : 얇게 유지, 업무 규칙이나 지식이 포함되지 않으며, 도메인 객체의 협력자에게 작업 위임.
- 도메인계층 : 업무에 대한 표현, 기술적인 세부사항은 인프라스트럭처 계층에 위임
- 인프라스트럭처 계층 : 일반적인 기술적인 기능 제공
MODEL-DRIVEN-DESIGN 을 가능하게 하는 것은 도메인 계층의 분리.
- 복잡한 프로그램을 여러개의 계층으로 나눠라
- 상위계층과의 결합을 느슨하게 유지하라.
- 도메인 모델과 관련된 코드는 모두 한 계층에 모으고 나머지들은 각각 분리하고 격리하라.
- 응용 계층이 아닌 도메인 계층에서 주요 업무규칙을 책임진다.
계층 간의 관계 설정
- 각 계층은 설계 의존성을 오직 한 방향으로만 둬서 느슨하게 결합된다.
아키텍처 프레임 워크
- 어떤 형태로든 아키텍처 프레임워크와 같은 것은 필요하다.
- 프레임워크의 목적은 도메인 모델을 표현하고, 해당 도메인 모델을 이용해 중요한 문제를 해결하는 구현을 만들어내는데 있다.
- 정교한 프레임워크는 애플리케이션 개발자들을 속박할 수도 있다.
도메인 계층은 모델이 살아가는 곳
- 도메인 모델은 일련의 개념을 모아놓은 것.
- 도메인 계층은 업무 룆ㄱ에 대한 설계와 구현으로 구성
- 도메인 주도의 설계의 전제조건은 도메인 구현을 격리하는 것.
SMART UI(지능형 UI) 안티패턴
- 도메인 주도의 개발은 험난한 학습곡선이 필요
- 시간과 전문가가 없는 팀, 단순한 프로젝트, 짧은 일정 => SMART UI 방식
- 모든 업무로직을 사용자 인터페이스에 넣어라
- 업무 규칙을 분리된 사용자 인터페이스에 들어가게 하라.
- 장점과 단점이 있는데, 단순한 결우 사용하라는 것, 복잡성이 증가하면 태생적 한계에 도달
- MODEL-DRIVEN-DESIGN 을 하기로 한 팀은 처음부터 MODEL-DRIVEN-DESIGN 방식대로 설계할 필요가 있다.
아키텍처에서 응집력 있는 도메인설계가 시스템의 다른 부분과 느슨하게 결합될 수 있게 도메인 관련 코드를 격리 한다면, 도메인 주도 설계를 지원할 수 있을것이다.