DTO를 command로 바꾸고 트랜잭션과 호출 순서를 조율한다.
애그리게이트는 규칙을 지키고, 리포지토리는 저장 계약만 맡는다
애플리케이션 서비스가 흐름을 조율하더라도 취소 가능 여부, 상태 전이, 불변식은 애그리게이트 안에서 결정되어야 한다.
상태 전이를 검증하고 성공한 변경만 domain event로 남긴다.
저장소 세부 구현을 port 뒤에 숨기고 도메인 객체를 복원한다.
| 판정할 로직 | 놓을 위치 | 좋은 신호 | 나쁜 신호 |
|---|---|---|---|
| 주문 취소 가능 여부상태와 기간 규칙 | Aggregate method | 도메인 테스트만으로 검증 가능 | Service if문이 상태를 직접 바꿈 |
| 저장/조회 방식DB, ORM, 외부 API | Repository adapter | port 계약은 업무 행위 이름을 사용 | Prisma/TypeORM 타입이 domain에 노출 |
| 트랜잭션 경계여러 저장소 호출 순서 | Application service | use case 단위로 commit/rollback | aggregate가 Nest provider를 직접 호출 |
경계 기준: 도메인 규칙은 aggregate에, 저장소 세부사항은 adapter에, 유스케이스 흐름은 application service에 둔다.