Aggregate Boundary

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

애플리케이션 서비스가 흐름을 조율하더라도 취소 가능 여부, 상태 전이, 불변식은 애그리게이트 안에서 결정되어야 한다.

Application Use case

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

Domain Aggregate root

상태 전이를 검증하고 성공한 변경만 domain event로 남긴다.

Infrastructure Repository adapter

저장소 세부 구현을 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에 둔다.