스프링 부트
[개발방법론] DDD란 무엇인가?
illlilillil
2022. 9. 10. 15:20
DDD는 Domain Driven Design의 약자
비즈니스 도메인 별로 나누어 개발하는 방식이다.
핵심 목표
도메인을 서비스별로 분리하자.
모듈 간 의존성은 최소화하고, 응집성은 최대화하기
여러 도메인이 역할에 따라 서로 상호장용하며 설계하는 것이다.
Bounded Context에 따라 객체의 역할은 바뀐다.
크게 3가지 레이어로 구분한다.
1. Application Layer - API를 제공하는 계층
2. Domain Layer - Entity, VO를 활용해 도메인 로직이 중점적으로 진행되는 계층
3. Infrastructure Layer - 외부 라이브러리, DB 등을 담당하는 계층이다.
DTO는 데이터를 전달하는 역할을 한다.
VO는 데이터를 가지고, 자신만의 로직을 가진다.
Entity는 데이터, 로직이 있으며, ID를 가지고 있다.
Aggregate
각 도메인 영역을 대표하는 객체를 기준으로 묶기
주문이라는 애그리거트라면 주문자, 주문서, 송장, 송장상품이 한 묶음으로 묶일 수 있다.