Domain

  1. 사전적의미는 '영역', '집합' 이다
  2. 비즈니스 Domain은 유사한 업무의 집합

DDD에서 말하는 Domain -> 비즈니스 Domain


DDD란

비즈니스 Domain별로 나누어 설계하는 방식

기존 설계가 비즈니스 Domain에 대한 이해가 부족한 상태에서 설계 및 개발되었다는 반성에서 출발했다.

기존의 현업에서 IT로의 **단방향 소통구조를 탈피**하여 현업과 IT의 쌍방향 커뮤니케이션을 매우 중요하게 생각한다.

DDD 핵심 목표

모듈간의 의존성을 최소화하고 응집성은 최대화한다

DDD 특징

  1. 도메인 자체와 도메인 로직에 초점을 맞추고 **데이터 중심의 접근법을 탈피**해서 도메인의 모델과 로직에 집중

  2. 보편적인 언어(유비쿼터스 언어) 사용 도메인 전문가와 소프트웨어 개발자 간의 커뮤니케이션 문제를 없애고

    상호가 이해할 수 있고 모든 문서와 코드에 이르기까지 동일한 표현, 단어로 구성된 단일화된 언어체계 구축
    

-> **분석 작업과 설계 그리고 구현에 이르기까지 통일된 방식으로 커뮤니케이션이 가능해진다**

  1. 소프트웨어 엔티티와 도메인 컨셉트를 가능한 가장 가까이 일치시킴

    분석 모델과 설계가 다르고 코드가 다른 구조가 아니라

    도메인 모델부터 코드까지 함께 움직이는 구조의 모델을 지향하는 것이 핵심 원리

MSA에서 DDD를 찾는 이유