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
각 도메인 영역을 대표하는 객체를 기준으로 묶기
주문이라는 애그리거트라면 주문자, 주문서, 송장, 송장상품이 한 묶음으로 묶일 수 있다.
'스프링 부트' 카테고리의 다른 글
[스프링] TestContainer란? (0) | 2022.10.04 |
---|---|
[스프링] String 클래스 자동 trim 메서드 적용하기 (0) | 2022.10.02 |
[스프링] 재고 시스템으로 알아보는 동시성 문제 해결 방법 (0) | 2022.09.02 |
[스프링] UserDetailsService를 여러 개 구현하고 잘 사용하기 (0) | 2022.08.25 |
[스프링부트] 트랜잭션 격리 수준 (0) | 2022.07.13 |
댓글