Notepad

도메인 주도 설계 : DDD(Domain-Driven Design)

  • 내용 추가 중입니다.

도메인

  • 소프트웨어로 해결하고자 하는 문제 영역(비즈니스 영역)
  • 소프트웨어를 개발할 때의 초점은 기술이 아니라 주로 비즈니스에 있어야함

도메인 주도 설계

  • Eric Evans가 2004년에 출판한 Domain-Driven Design 책에서 소개한 설계 개념
  • 실제 코드로 구현 가능한 현실성 있는 도메인 모델 분석과 그것을 추상화하는 설계
  • 도메인 모델의 적용 범위를 구현까지 확장하여 도메인 지식을 구현 코드에 반영

도메인 모델

  • Model
    • 대상 도메인에 대한 추상적 표현으로 소프트웨어로 만들기 위해서 필요
  • Domain Model
    • 도메인 개념을 추상화 한 것
    • 도메인을 이해하기 위한 개념 모델
    • 개발을 위해서는 구현 모델 필요
  • Domain Object
    • 도메인 모델을 소프트웨어에서 동작할 수 있도록 나타낸 것

DDD 설계 도구 2가지

  • Strategic Design : 개념 설계
  • Tactical Design : 구체적 설계

Strategic Design

  • 도메인 전문가와 소프트웨어 전문가 등 전체 프로젝트 팀과 함께 Bounded Context와 Ubiquitous Language, Context Map을 정의하는 것
  • Event storming으로 공유하고, 비즈니스 목적별로 서비스들을 그룹핑
  • Bounded Context
    • Biz Domain의 사용자, 프로세스, 정책/규정 등을 고유한 비즈니스 목적별로 그룹핑한것
    • 모델의 경계를 결정하며 한 개의 Bounded Context는 논리적으로 한 개의 모델을 가짐
  • Ubiquitous Language
    • 도메인 전문가와 개발자 사이의 의사소통의 어려움을 해결하고자 동일한 의미로 이해하는 언어
    • 비즈니스 도메인에 따라 동음이의어가 많기 때문에 정확한 커뮤니케이션을 위해 공통언어를 정의하고 사용해야함
  • Context Map
    • Bounded Context간의 관계를 나타낸 도식화한 Diagram

Tactical Design

  • 개발을 위한 구체적인 설계도
  • 모델링 영역
  • Model Driven Design
    • Strategic Design에서 설계한 각 Sub Domain별 Domain Model(Context Map)을 중심으로 설계하는것

도메인 주도 설계의 장점

  • 기술을 향상
  • 유연성을 제공
  • 인터페이스보다 도메인을 선호
  • Ubiquitous Language를 통해 팀 간 커뮤니케이션 격차 감소

도메인 주도 설계의 단점

  • 강력한 도메인 전문성을 갖춘 전문가가 필요
  • 팀이 반복적인 관행을 따르도록 권장 필요

참고

'dev > 아키텍처' 카테고리의 다른 글

마이크로서비스 패턴(5)  (0) 2022.03.24
마이크로서비스 패턴(4)  (0) 2022.03.10
마이크로서비스 패턴(3)  (0) 2022.03.03
마이크로서비스 패턴(2)  (0) 2022.02.17
마이크로서비스 패턴(1)  (0) 2022.02.10
profile

Notepad

@Apio

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!