프로젝트 지도

패키지 경계는 타입 계약과 런타임 책임 검토

shared에는 양쪽이 합의해야 하는 타입만 두고, 실제 구현과 검증은 책임 계층에 배치한다.

배치 결정

경계

양쪽이 쓰는 계약 여부

요청/응답 DTO와 ApiResult<T> 같은 제네릭 래퍼는 shared에 둔다.

한 계층 전용 로직 여부

화면 상태, 데이터 접근, 배포 설정은 client/server 내부로 제한한다.

외부 입력을 받는 여부

API 경계에서 먼저 검증해 unknown을 안전한 도메인 타입으로 좁힌다.

domain shared validate layer test
실전 기준

shared가 커질수록 결합도도 커진다. 공유는 계약으로 제한하고, 변경이 잦은 구현은 각 패키지 안에서 닫아 둔다.