Home

[DDD] 도메인 주도 설계 철저 입문 Chapter_1. 도메인 주도 설계란?

도메인 주도 설계 철저 입문

도메인 주도 설계 철저 입문

나루세 마사노부 지음 / 심효섭 옮김

위키북스

도메인 주도 설계란?

  • 에릭 에반스가 자신의 책 도메인 주도 설계에서 최초로 제안한 개념.
  • 도메인 지식에 초점을 맞춘 설계 기법을 말한다.

도메인?

  • 도메인은 영역 이라는 뜻을 가지고 있으며 개발 영역에서는 프로그램이 쓰이는 대상 분야라는 의미로 쓰인다.
  • 도메인은 만드는 시스템에 따라서 포함되는 개념이 달라진다.

    • 회계 시스템이라면 금전, 장부와 같은 것이 도메인이 된다.
    • 물류 시스템이라면 창고, 화물, 운송수단과 같은 것이 도메인이 된다.
  • 시스템은 반드시 사용자가 존재하며 시스템마다 각각 해결하고자 하는 목적이 존재하게된다. 이를 위해서는 사용자의 관점이나 생각등을 이해해야 한느데, 이는 곧 이용자의 도메인을 접해야 한다는 것을 의미한다.
  • 도메인 주도 개발은 소프트 웨어가 사용될 분야(도메인)의 지식에 초점을 맞추고 개발을 하는 것이다.

도메인 모델링이란 무엇인가?

  • 모델은 현실에 일어나는 사건 혹은 개념을 추상화한 개념이다. 여기서 추상화란 여러 사물 혹은 개념에서 공통적인 것을 뽑아 파악하는 것으로, 현실의 모든것을 반영하는 것은 아니다. 상황에 따라 무엇을 보리고 취할지는 도메인에 따라서 결정된다.
  • 사건 혹은 개념을 추상화하는 작업을 모델링이라고 하며, 모델링의 결과를 모델이라고 한다. 도메인 주도 설계에서는 도메인 개념을 모델링한 모델을 도메인 모델이라고 한다.
  • 개발자는 개발 지식은 있지만 도메인 지식은 없고, 기획자(사용자)는 도메인 지식은 있지만 개발 지식은 없다. 서로 협력해서 도메인 모델을 만들어야 하는 것이다.

지식을 코드로 나타내는 도메인 객체

  • 도메인 모델은 어디까지나 개념을 추상화한 지식이다. 이를 동작하는 형태로 만든것이 도메인 객체이다.
  • 도메인 객체가 도메인 모델을 충실히 반영하고 있다면 도메인의 변화를 코드로 쉽게 옮길 수 있을 것이다.
  • 도메인 개념과 객체까지를 정리하면 다음 처럼 표시 할 수 있을 것이다.

    • 도메인 개념 <-> 도메인 모델 <-> 도메인 객체
    • 각각의 개념, 모델, 객체는 서로 상호 작용하며 반복적으로 개발로 실현된다.
  • 도메인에 대한 어중간한 이해는 도리어 구현을 방해한다. 도메인을 완전히 이해하고, 추상화하는 방법을 학습해야 한다.

이 책에서 설명하는 패턴

이 책에서 다루는 도메인 주도 설계 패턴의 큰 그림을 그리면 다음과 같다. ( 개별 항목에 대해서는 이후 학습을 통해서 정리할 예정이다.)

  • 지식을 표현하기 위한 패턴

    • 값 객체
    • 엔티티
    • 도메인 서비스
  • 애플리케이션을 구성한느 패턴

    • 리포지토리
    • 애플리케이션 서비스
    • 팩토리
  • 지식 표현을 위한 고급 패턴

    • 애그리게이트
    • 명세
Loading script...