전송 DTO와 domain은 서로 다른 실패를 방어한다

DTO는 client shape를 빠르게 설명하고 command는 use case 입력을 고정하며 domain과 DB는 controller를 우회한 경로와 동시성까지 지킨다.

JSON DTO
Transport shape

null·길이·범위처럼 client가 즉시 수정할 입력을 검증한다.

방어

400 field 오류

Command
Use case 계약

인증 주체와 검증된 DTO를 업무 입력으로 조립한다.

방어

허용된 application 호출

Domain
모든 경로의 불변식

batch·scheduler·test가 직접 호출해도 같은 규칙을 지킨다.

방어

유효한 domain state

Database
동시성·고유 제약

경쟁 요청 사이의 마지막 원자적 진실을 확정한다.

방어

constraint 또는 commit

핵심: DTO 검증은 사용자 경험을 빠르게 만들고 domain·DB 검증은 어떤 진입 경로에서도 상태를 안전하게 만든다.