도메인 경계는 폴더명이 아니라 규칙이 새는 지점으로 나눈다

DDD에서 중요한 것은 module 이름이 아니라, 어떤 말과 규칙이 어느 책임으로 새고 있는지 찾는 일이다.

Interface

Controller / DTO

HTTP, 인증, 입력 형식을 command로 바꾼다.

Application

Use case / Port

흐름과 트랜잭션을 조정하고 도메인 규칙 판단은 넘긴다.

Domain

Aggregate / Event

상태 전이, 불변식, 업무 언어를 직접 가진다.

Infrastructure

Repository Adapter

Prisma, TypeORM, 외부 API 구현을 contract 뒤에 숨긴다.

영역새는 신호정리 대상
언어
ubiquitous language
command, event 이름이 업무 말을 잃음bounded context를 나누고 용어 통일
규칙
aggregate invariant
aggregate method가 외부 타입에 의존규칙을 domain method로 event로 이동
의존성
repository contract
domain 테스트가 DB adapter 없이 어려움port와 mapper로 외부 shape 차단

나쁜 징후 controller DTO, Prisma model, 외부 API 응답이 aggregate까지 들어오면 domain layer는 이름뿐이고 변경 비용은 그대로 남는다.