DDDQ 1장 도메인 주도 설계란 무엇인가?

DDDQ(Domain Driven Design Quickly) - 도메인 주도 설계란 무엇인가? 라는 책의 간단 요약 정리

소프트웨어 개발이 어려운 이유는 현실세계 문제의 복잡성에서 시작된다

도메인

  • 자동화된 비즈니스 프로세스
  • 현실세계의 문제
  • 하나의 도메인은 세상의 어떤 것
  • 그래서 복잡함 - 본질적 복잡성

본질적(필연적) 복잡성 : 소프트웨어 구현하고자 하는 기능에 대한 복잡성

우연적 복잡성 : 소프트웨어를 구현하는 행위(언어, 툴, 라이브러리 등)에 따른 복잡성

도메인 모델

  • 소프트웨어 기능을 위해서 도메인 전문가의 지식에서 선택적으로 추상화하여 엄격하게 조직화한 것
  • 다이어그램 등으로 전달하고자하는 아이디어
    • 다이어그램이나 그림은 모델을 가시적으로 표현하고 전달하는 역할일 뿐
  • 복잡성을 다루는 도구이자 추상화의 결과
  • 도메인 전문가와 개발자(개발자들 간에도) 사이의 소통의 중심
    • 지속적인 피드백이 가능하고 최신상태를 유지해야 의미가 있다.
    • 기능(요구사항) - 도메인 모델(유연한 설계) - 구현이 자연스럽게 연결. 즉, 기능과 구현의 자연스로운 통로
    • 소프트웨어 구현에 자연스럽게 녹아들어야 한다.

도메인 전문가 : 현실세계의 문제(업무)를 가장 잘 이해하는 해당분야 전문가 (ex:은행원, 항공관제사 등)

개발자 : 설계자, 개발자 등 소프트웨어를 구축하는 이

소프트웨어

  • 소프트웨어는 도메인의 핵심개념과 각 구성요소를 담고 있어야 하고 그들 간의 관계를 정확하게 실체화해야 한다.
  • 소프트웨어는 도메인을 모델링해야 한다

(도메인 모델을 통한) 좋은 설계는 개발을 가속화 하고, 동시에 개발 프로세스에서 받는 피드백이 설계를 강화한다.

도메인 지식 쌓기

일반화(Generalization)

  • 추상화의 한 기법
  • 공통적인 부분을 골라내는 것

개념 (Concept)

  • Type

도메인에 대한 개발자의 분석적인 자세는 도메인 전문가들과 토의하는 도중에 도메인의 핵심 개념(Concept) 을 발굴해 내는데 도움이 된다.

개발자와 도메인 전문가들은 도메인 모델을 함께 만들어 낸다.

도메인과 소프트웨어는 도메인 모델을 통해서 철저하게 혼합되어야 한다.

유비쿼터스 언어

공통 언어의 필요성

공통 언어가 없다면?

  • 각 전문 분야 용어와 서로 다른 언어에 따른 의사소통이 어려움
  • 번역 비용
    • 예를 들어 개발자는 A 라는 용어를 쓰는데 도메인 전문가는 이해가 안되므로 도메인 전문가에게 설명을 위한 다른 용어로 표현
    • 번역 자체 비용 뿐만 아니라 용어의 혼재까지 발생해서 복잡도가 상승함
  • 자신만의 방언

솔루션

  • 도메인 모델 기반 언어 : 모델을 표현할 때 사용하는 용어
  • 다이어그램에 적혀진 언어를 프로젝트 의사소통 시에도 소리내어 사용
  • 이 언어를 유비쿼터스 언어(보편 언어) 라 부른다.

만약 해당 언어나 모델을 도메인 전문가가 잘 이해하지 못하면 그 부분은 잘못되어 있을 가능성이 매우 높다.

유비쿼터스 언어 만들기

항공기 관제 예제의 용어와 핵심개념

  1. 비행기, 출발지, 목적지
  2. 비행기, 항로
  3. 비행기, 항로, 고정지점, 위도, 고도
  4. 비행기, 항로, 고정지점, 위도, 고도, 비행계획, 속도
  5. 비행, 비행계획, 항로, 고정지점, 2차원 좌표

결론 : 개발자, 도메인 전무가로 구성된 설계팀은 자신들의 행동을 통합하고, 모델 작성과 작성된 모델의 코드화를 도와줄 언어가 필요하다

MJ

MJ
Backend 개발자 사람입니다. 어플리케이션의 복잡성을 다루는 DDD에 관심이 많습니다. 어제보다 더 나은 개발자가 되려고 항상 노력합니다.

spring boot 2.4.x 에서 openfeign + hystrix 통합하기

spring-boot 2.4.x spring-cloud 2020.x 의존성 상황에서 feign.hystrix.enabled=true가 안됨`feign.circuitbreaker.enabled=true` 로 바꿔보지만 openfeign과 hystr...… Continue reading

IDDD 14장. 애플리케이션

Published on June 19, 2018