애그리게이트는 규칙을 결정하고 리포지토리는 저장 계약만 맡는다

유스케이스 흐름, 도메인 판단, 저장소 구현을 같은 코드에 섞으면 변경 이유가 불분명해진다.

Application

Use case orchestration

DTO를 command로 바꾸고 트랜잭션과 호출 순서를 조정한다.

Domain

Aggregate root

상태 변경 가능 여부와 불변식을 스스로 판단한다.

Infrastructure

Repository adapter

ORM과 DB 세부 구현은 port 뒤에 숨긴다.

변경 위치책임좋은 신호나쁜 신호
주문 취소Aggregate method도메인 테스트만으로 검증Service 파일이 상태 직접 변경
저장/조회Repository adapterport가 명령 행위 이름 사용TypeORM 타입이 domain까지 노출
트랜잭션Application serviceuse case 단위 commit/rollbackaggregate가 Nest provider 호출

경계 기준 도메인 규칙은 aggregate에, 저장소 세부사항은 adapter에, 유스케이스 흐름은 application service에 둔다.