Aggregate 경계

애그리게이트는 규칙을 지키고 리포지토리는 저장만 맡는다

NestJS에서 DDD를 적용할 때 도메인 객체가 비즈니스 결정을 하고, 인프라 구현은 인터페이스 뒤로 숨겨야 경계가 선명해진다.

1 Controller DTO를 받고 유스케이스로 전달
2 App Service 트랜잭션과 호출 순서 조율
3 Aggregate 규칙 검증 후 상태 변경
4 Repository 도메인 관점의 저장 계약
5 Infra TypeORM, 외부 API 구현
application

흐름 조율

여러 도메인 객체 호출 순서, 트랜잭션, DTO 변환을 맡는다.

domain

비즈니스 규칙

주문 취소 가능 여부처럼 모델 안에서 지켜야 할 규칙을 캡슐화한다.

infrastructure

기술 세부사항

DB 엔티티 매핑, 외부 요청, 메시징 구현을 도메인 밖에 둔다.

경계 규칙 도메인 계층은 Nest 데코레이터나 ORM 세부 구현보다 유비쿼터스 언어와 불변식을 먼저 표현해야 한다.