[책] 도메인 주도 설계(에릭에반스) -3

Post image

제 2부 모델 주도 설계의 기본 요소

  • 책임 주도 설계
  • 정교한 모델은 가장 근본적인 사항에 관심을 가질때만 비로소 복잡성을 헤쳐나갈 수 있다.

04_도메인의 격리

  • LATERED ARCHITECTURE(계층형 아키텍처)

    • 사용자 인터페이스, 데이터베이스 등의 코드가 비지니스 객체 안에 직접 작성하기도함. => 단기간에 동작하게 하기 위한 가장 쉬운 방식
    • 이런 방식은 테스트가 어렵고, 이해하기 어렵고, 유지보수가 어렵다.
    • 관심사의 분리(separation of concern) : 격리된 상태에서 있는 각 설계요소에 집중
    • 계층화의 핵심 원칙 : 한 계틍의 모든 요소는 오직 같은 계층 또는 하위 계층에 요소에만 의존한다.
    • 응집력 있는 설계가 가능, 설계를 더 쉽게 이해 가능

      • 사용자 인터페이스 계층
      • 응용계층 : 얇게 유지, 업무 규칙이나 지식이 포함되지 않으며, 도메인 객체의 협력자에게 작업 위임.
      • 도메인계층 : 업무에 대한 표현, 기술적인 세부사항은 인프라스트럭처 계층에 위임
      • 인프라스트럭처 계층 : 일반적인 기술적인 기능 제공
    • MODEL-DRIVEN-DESIGN 을 가능하게 하는 것은 도메인 계층의 분리.

    • 복잡한 프로그램을 여러개의 계층으로 나눠라
    • 상위계층과의 결합을 느슨하게 유지하라.
    • 도메인 모델과 관련된 코드는 모두 한 계층에 모으고 나머지들은 각각 분리하고 격리하라.
    • 응용 계층이 아닌 도메인 계층에서 주요 업무규칙을 책임진다.
    • 계층 간의 관계 설정

      • 각 계층은 설계 의존성을 오직 한 방향으로만 둬서 느슨하게 결합된다.
    • 아키텍처 프레임 워크

      • 어떤 형태로든 아키텍처 프레임워크와 같은 것은 필요하다.
      • 프레임워크의 목적은 도메인 모델을 표현하고, 해당 도메인 모델을 이용해 중요한 문제를 해결하는 구현을 만들어내는데 있다.
      • 정교한 프레임워크는 애플리케이션 개발자들을 속박할 수도 있다.
    • 도메인 계층은 모델이 살아가는 곳

      • 도메인 모델은 일련의 개념을 모아놓은 것.
      • 도메인 계층은 업무 룆ㄱ에 대한 설계와 구현으로 구성
      • 도메인 주도의 설계의 전제조건은 도메인 구현을 격리하는 것.
  • SMART UI(지능형 UI) 안티패턴

    • 도메인 주도의 개발은 험난한 학습곡선이 필요
    • 시간과 전문가가 없는 팀, 단순한 프로젝트, 짧은 일정 => SMART UI 방식
      • 모든 업무로직을 사용자 인터페이스에 넣어라
      • 업무 규칙을 분리된 사용자 인터페이스에 들어가게 하라.
    • 장점과 단점이 있는데, 단순한 결우 사용하라는 것, 복잡성이 증가하면 태생적 한계에 도달
    • MODEL-DRIVEN-DESIGN 을 하기로 한 팀은 처음부터 MODEL-DRIVEN-DESIGN 방식대로 설계할 필요가 있다.
  • 아키텍처에서 응집력 있는 도메인설계가 시스템의 다른 부분과 느슨하게 결합될 수 있게 도메인 관련 코드를 격리 한다면, 도메인 주도 설계를 지원할 수 있을것이다.