전송 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 검증은 어떤 진입 경로에서도 상태를 안전하게 만든다.