**DDD 핵심만 빠르게 이해하기 를 더 간단하게 정리한 글입니다.**
출처: https://happycloud-lee.tistory.com/94
0. 사전 지식: 일하는 방식 변화와 애자일, 마이크로서비스, 데브옵스, 클라우드
참조:
DDD에 앞서, 현대 소프트웨어 개발에서 중요한 네 가지 패러다임(애자일, 마이크로서비스, 데브옵스, 클라우드)에 대한 기본 이해가 필요하다. 이는 시장 변화에 빠르게 대응하고, 조직과 서비스의 민첩성을 높이기 위한 근간이 된다.
1. Domain(도메인) 정의
- 사전적 의미: ‘영역’, ‘집합’을 뜻한다.
- DDD에서의 Domain: 비즈니스 도메인을 의미한다.
- 비즈니스 도메인: 유사한 업무의 집합(MPRS - 마케팅, 구매, 연구, 영업 등)이다.
- 도메인 단위 설계: 어플리케이션을 여러 비즈니스 도메인 별로 구분하여 설계 및 개발할 수 있다.
2. DDD(Domain Driven Design)의 개념
- 정의
- 비즈니스 도메인 별로 분할하여 설계하는 방법론이다.
- 현업(도메인 전문가)과 IT 사이의 긴밀한 커뮤니케이션을 강조한다.
- 핵심 목표
- Loosely Coupling(느슨한 결합): 모듈 간 의존성을 최소화
- High Cohesion(높은 응집도): 각 모듈 내의 응집성을 최대화
- 구성
- Strategic Design(전략적 설계): 개념 수준의 큰 설계, 도메인 분해(도메인 모델)
- Tactical Design(전술적 설계): 구체적인 프로그래밍 및 구현을 위한 상세 설계
3. Strategic Design(전략적 설계)
3.1 개념
- Context(맥락): 대상 사용자, 상황, 정책/규정 등 비즈니스 환경 전반을 의미한다.