Core Trio

모듈, 컨트롤러, 서비스

세 구성 요소의 책임을 섞지 않으면 기능이 늘어나도 라우팅, 로직, 의존성 연결 위치가 흐려지지 않습니다.

모듈 책임

imports / providers / exports

기능 단위를 선언하고 다른 모듈에 공개할 프로바이더만 export로 열어 결합을 줄입니다.

컨트롤러 책임

라우트 경계

요청 파라미터, 본문, 쿼리를 받아 서비스에 넘기고 HTTP 응답 형태를 결정합니다.

서비스 책임

업무 규칙

검증 이후의 규칙, 저장소 호출, 외부 연동을 모아 컨트롤러가 얇게 유지되도록 합니다.

연결 책임

Dependency Injection

constructor 주입으로 필요한 객체를 받기 때문에 테스트에서는 대체 객체를 끼워 넣을 수 있습니다.