도메인 주도 설계 이란
비즈니스 도메인 기반 설계
DDD란
도메인 주도 설계(DDD)는 비즈니스 도메인 모델링과 개발자와 도메인 전문가 간의 긴밀한 협업에 초점을 맞춘 소프트웨어 개발 접근법입니다.
전략적 설계
| 개념 | 설명 | |------|------| | 바운디드 컨텍스트 | 유비쿼터스 언어를 가진 모델 경계 | | 유비쿼터스 언어 | 팀과 비즈니스의 공유 언어 | | 컨텍스트 맵 | 컨텍스트 간 관계 맵 | | 서브도메인 | 서브도메인(코어/지원/일반) |
전술적 설계
| 패턴 | 목적 | |------|------| | 엔티티 | 정체성을 가진 객체 | | 값 객체 | 불변 값 객체 | | 애그리게이트 | 관련 엔티티 그룹 | | 애그리게이트 루트 | 애그리게이트 진입점 | | 리포지토리 | 애그리게이트 접근 | | 도메인 서비스 | 엔티티 외부 비즈니스 로직 | | 도메인 이벤트 | 도메인 내 이벤트 | | 팩토리 | 복잡한 객체 생성 |
서브도메인 유형
- 코어 도메인 — 경쟁 우위
- 지원 서브도메인 — 코어 지원
- 일반 서브도메인 — 표준 솔루션
통합 패턴
| 패턴 | 설명 | |------|------| | 공유 커널 | 컨텍스트 간 공유 코어 | | 고객-공급자 | 고객-공급자 관계 | | 순응자 | 업스트림 모델 준수 | | 부패 방지 레이어 | 외부 모델로부터 보호 | | 오픈 호스트 서비스 | 컨텍스트의 공개 API |
DDD 적용 시기
- 복잡한 비즈니스 로직
- 장기 프로젝트
- 도메인 전문가 접근 가능
- 설계 투자 준비된 팀