Architecture payoff

NestJS의 역할 분리는 코드 배치가 아니라 변경 비용 관리다

Module, Controller, Provider를 나누면 기능 위치가 예측 가능해지고, 테스트와 운영 정책을 같은 경계에 반복 적용할 수 있습니다.

자유로운 Node.js 코드가 Nest 구조로 바뀔 때 생기는 효과

라우팅 분리

요청 처리가 얇아진다

Controller는 경로, 파라미터, 응답 형식에 집중하고 긴 로직을 서비스로 넘깁니다.

DI 기반

의존성을 바꿔 끼운다

Provider를 직접 생성하지 않고 주입받기 때문에 테스트용 구현으로 교체하기 쉽습니다.

모듈 경계

기능 단위로 커진다

AuthModule, UsersModule처럼 관련 파일을 묶어 팀원이 찾는 시간을 줄입니다.

운영 정책

계층별 규칙을 반복한다

로깅, 예외 처리, 재시도 정책을 요청 경계와 서비스 경계에 맞춰 적용합니다.

구조가 유지보수 판단으로 바뀌는 지점

새 엔드포인트 Controller에 요청 경로를 추가하고 입력 형식을 분리합니다. 업무 규칙은 Provider로 옮겨 다른 요청에서도 재사용합니다.
테스트 작성 Controller는 요청과 응답 모양을 확인하는 데 집중합니다. Provider는 DB와 외부 API를 대체해 순수한 규칙을 검증합니다.
장애 대응 요청 계층에서는 상태 코드와 예외 형식을 통일합니다. 서비스 계층에서는 재시도, timeout, 외부 의존성 실패를 다룹니다.
요청 경계 업무 규칙 의존성 주입 운영 정책
학습 해석

NestJS를 고르는 이유는 데코레이터 문법 자체가 아니라, 서버가 커져도 요청, 로직, 조립 책임이 같은 위치에 머물도록 강제하는 기본값입니다.