DDD Mapping

DDD와 Nest Module 매핑

DDD를 Nest에 적용할 때는 도메인 모델을 프레임워크 데코레이터에 가두지 않고 모듈 경계와 repository 계약으로 보호해야 합니다.

01

Aggregate 로드

Repository가 ORM 세부사항을 숨기고 aggregate root를 복원합니다.

load
02

규칙 실행

Entity와 Value Object가 불변 조건과 도메인 규칙을 적용합니다.

domain
03

이벤트 기록

중요한 상태 변화는 domain event로 남겨 후속 처리를 분리합니다.

event
04

저장

Repository가 aggregate 변경을 트랜잭션 안에서 영속화합니다.

save
05

응답 변환

Controller로 나가기 전에 DTO로 변환해 내부 모델 노출을 막습니다.

dto
Aggregate
일관성 경계 함께 변경되어야 하는 객체 묶음과 트랜잭션 범위를 정의합니다.
너무 크게 만들지 않기
Value Object
값 규칙 캡슐화 Money, Email, Period처럼 검증과 비교가 값 자체의 의미에 속합니다.
불변성
Repository
도메인과 저장소 분리 도메인은 ORM query builder를 직접 알지 않도록 계약을 둡니다.
테스트 대체 가능

Nest 모듈 매핑 기준

도메인 순수성 핵심 도메인 객체가 HTTP 요청이나 ORM 데코레이터에 과하게 묶이지 않게 합니다.
모듈 경계 다른 bounded context의 repository를 직접 호출하지 않고 응용 서비스 경계를 둡니다.
DTO 분리 API 응답 형태가 도메인 모델 변경을 강제로 따라가지 않게 합니다.