책임 분리 점검표

모듈 컨트롤러 서비스

NestJS 기본 구조는 요청 흐름과 비즈니스 로직을 분리해 테스트와 재사용이 쉬운 애플리케이션 단위를 만듭니다.

@Moduleimports, controllers, providers, exports를 선언
@ControllerHTTP 경로와 메서드 핸들러를 연결
@InjectableDI 컨테이너가 주입할 서비스를 등록
Module

기능 영역의 경계

관련 컨트롤러와 프로바이더를 하나의 도메인 단위로 묶습니다.

imports로 의존 모듈 연결 exports로 외부 사용 범위 제한
Controller

요청과 응답의 입구

라우팅, 파라미터, 요청 본문을 받고 서비스 호출로 흐름을 넘깁니다.

@Get, @Post 등 경로 매핑 비즈니스 규칙은 직접 담지 않음
Service

비즈니스 로직의 중심

데이터 처리, 계산, 외부 API 호출처럼 실제 일을 수행합니다.

여러 컨트롤러에서 재사용 단위 테스트 대상으로 분리
ClientHTTP 요청
Controller입력 해석
Service규칙 실행
Provider저장소·외부 연동
Response결과 반환
컨트롤러는 얇게

인증, 검증, 응답 형식 조정 외의 핵심 규칙은 서비스로 보냅니다.

서비스는 독립적으로

HTTP 세부사항에 덜 의존할수록 재사용과 테스트가 쉬워집니다.

모듈은 경계로

exports를 최소화해 도메인 내부 구현이 밖으로 새지 않게 합니다.