도메인 주도 설계
도메인을 중심으로 하는 개발 방식 -> 도메인에 관련된 문제를 해결하는 것
복잡한 도메인을 해결하는 것을 높은 우선순위로 생각해서 서비스를 만들어 나가는 방법이다.
-> 도메인의 복잡성을 조금 더 쉽게 다룰 수 있도록 도와주는 도구
-> 복잡한 소프트웨어는 기술 자체의 복잡성 보다는 도메인 자체의 복잡성에 기인
-> 도메인을 가장 잘아는 사람(도메인 전문가)와 어떻게 협업할 것인지가 가장 중요
-> 유비쿼터스 랭귀지, 모델 주도 디자인
이곳에서 소프트웨어 개발과 모델링의 불일치가 발생할 수 있다.
-> 개발자는 도메인을 모델링을 추상화 할때 같이 참여하지 않기 때문에
도메인에 대한 어휘를 이해관계자(도메인 전문가, 개발자 등) 들이 공통적으로 의미를 이해할 수 있도록 정의 하는 것
분석과 설계를 나누지 않으며 분석/설계/구현의 모든 단계를 관통하는 하나의 모델을 유지
모델링 통해 가져올 수 있는 통찰을 코드에도 적용
모델 == 코드
도메인에 대한 구체적인 설계, 도메인을 개념적으로 표현한 것
개념들의 관계를 표현한 모델
문제 영역을 시각화
복잡한 도메인의 맥락(Context) 경계를 명확히 정의하는 과정
Bounded Context안의 도메인 모델에서 보편언어를 개발하는 방법
도메인에서 서브도메인으로 복잡성을 분리 -> 핵심, 지원 도메인 파악
컨택스트 맵핑 기술을 활용해 여러가지 Bounded Context 통합
이벤트 스토밍 기법을 활용해 Bounded Context 식별
특정한 도메인 모델이 적용되는 제한된 영역 경계 내에선 동일한 모델을 일관되게 적용
바운디드 컨텍스트 간의 관계
전략적 설계에서 더상세한 바운디드 컨텍스트 내부 모델링을 진행
Model Driven Design
패턴을 사용해 모델링 - Aggregate 패턴
계층형 아키택처를 통한 도메인 모델 분리
도메인 이벤트를 통해 도메인 보다 명확히 모델링
연관된 엔티티와 벨류 오브젝트의 묶음, 일관성과 트랜잭션, 분산의 단위
루트 레그리게이트 : 에그리게이트가 제공해야 할 핵심 도메인 기능을 보유 하고 있는 모델
도메인 전문가와 개발자가 같이 참여 하여 어떻게 전략적으로 설계를 효율적으로 할것인가에 대한 방법이다. 이벤트 스토밍은 서비스에 필요한 모든 사람들이 다같이 모여서 진행을 한다. 개발요소가 아닌 이벤트와 비즈니스 프로세스에 집중한다. 팀 구성원 전체가 서비스 이해도를 증가할 수 있고, 도메인 전문가도 이해의 폭을 다시 넓히고 새로운 통찰력을 얻을수 있다.
참고
https://incheol-jung.gitbook.io/docs/q-and-a/architecture/ddd