도메인 주도 설계(Domain-Driven Design)
도메인 주도 설계(Domain-Driven Design)
- SW 설계 기법의 하나
- 복잡한 도메인의 설계는 모델 기준으로 해야 함
- 데이터와 애플리케이션을 설계할 때 업무 도메인 별로 분리하여 설계
- 시스템을 구현하기 위해 특정 기술이 아니라 도메인과 그 로직에 초점을 두어야 함
- 시스템 요구를 기술하기 위해 도메인 전문가가 도메인 모델을 제공
- 사용자, 개발자가 참고할 수 있는 공통 언어를 형성해야 함
- 다층 아키텍처의 객체지향 시스템에서 도메인층을 기술하는 것에 중점을 둠
도메인 용어
- 도메인 : SW로 해결하고자 하는 문제의 영역, 즉 만들고자 하는 서비스를 잘게 쪼개놓은 단위
- 유비쿼터스 언어 : 도메인 전문가와 개발자가 같은 말을 하고 같은 표현 방식을 써야함을 의미합니다.
- Bounded Context : 논리적으로 경계를 설정하는 부분입니다. context라는 건 결국 독립적으로 동작할 수 있는 기능이라 한다면 그 덩이들의 경계를 뜻합니다. 여러 도메인으로 구성된 프로젝트에서 그 도메인을 구분할 수 있게 구분해 놓은 선입니다.
- Entity : 도메인 모델을 설계 시 각 개의 ID를 가지는 Model들입니다.
- Value : 엔티티랑 비슷하지만 ID가 필요없는 하위 Model들입니다.
- Aggregate : 엔티티들의 집합으로 엔티티들의 일관성(영속성)을 유지하기 위해 관리되는 단위입니다.