- 데이터 중심이 아닌 도메인의 모델과 로직에 집중
- Ubiquitous Language, 단일화된 커뮤니케이션 방식
- Software Entity와 Domain간 개념 일치
TDD : 반복적인 설계 수정과 테스트 자동화. BDD : 비즈니스의 협업 중시로 이루어지면서 테스트 자동화. DDD : 비즈니스와의 협업을 중시하면서 반복적인 설계 수정.
- 범위를 구분해놓은 하위 도메인 개념
- Bounded Context 간에 관계를 나타냄
- 데이터 변경 단위
- life cycle이 같은 도메인들은 한곳에 모아둔 집합
- MSA에서 오는 단점 (높은 개발 난이도와 숙련도가 필요)
- Architecture 구현에 생성되는 생각보다 많은 코드
- 각 도메인에 대한 높은 이해도가 필요
- 보펀젹인 언어 사용에 따른 빠른 커뮤니케이션
- 도메인간 관계가 복잡한 경우 큰 틀에서 정리가 가능
- 도메인 분리에 따른 유지보수에 대한 편의성
- 새로운 기능 및 요구 사항에 대한 유연성
- Encapsulation
- Loose coupling, High cohesion
- Domain Logic 분리로 Business Logic에 집중
- 코드 가독성