패키지 경계는 공유 계약과 런타임 책임을 분리해 결정한다
shared에는 양쪽이 합의해야 하는 타입만 두고, 실제 구현과 입력 검증은 책임 계층 안에 배치한다.
client와 server가 모두 알아야 하는 모양만 둔다.
변경이 잦은 로직은 각 패키지 내부에 둔다.
API 경계에서 런타임 값으로 확인한다.
| 구분 | 의미 | 판단 |
|---|---|---|
| shared에 둘 것 | 요청/응답 DTO | 양쪽 계약이 바뀌면 함께 수정되어야 함 |
| 넣지 말 것 | 화면 상태, DB 접근, 배포 설정 | 한 계층 전용 책임 |
| 테스트 | 계약 테스트와 계층 테스트 분리 | 공유 타입과 런타임 검증의 간극 확인 |
핵심 shared가 커질수록 결합도도 커지므로 공유는 계약으로 제한하고 구현은 각 패키지 안에서 닫아 둔다.