본문 바로가기
스프링 부트

[개발방법론] DDD란 무엇인가?

by illlilillil 2022. 9. 10.

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

각 도메인 영역을 대표하는 객체를 기준으로 묶기

주문이라는 애그리거트라면 주문자, 주문서, 송장, 송장상품이 한 묶음으로 묶일 수 있다.

 

댓글