NestJS Layers

NestJS는 요청을 모듈, 컨트롤러, 서비스, 파이프, 가드로 나눠 처리한다

데코레이터가 많아 보여도 핵심은 책임 분리입니다. 요청 진입, 검증, 권한 확인, 비즈니스 로직을 각 계층에 맡기면 테스트와 확장이 쉬워집니다.

module

기능 단위 묶음

관련 컨트롤러와 프로바이더를 모아 애플리케이션 구조를 나눕니다.

controller

경로와 입력 수신

@Get, @Post, @Body로 HTTP 요청을 핸들러에 연결합니다.

pipe

변환과 검증

ParseIntPipe처럼 문자열 입력을 필요한 타입으로 바꾸고 잘못된 값을 막습니다.

guard

실행 전 권한 확인

CanActivate에서 토큰, 세션, 역할 조건을 확인한 뒤 핸들러 실행을 허용합니다.

provider

비즈니스 로직 실행

서비스와 리포지토리는 DI로 주입되어 데이터 처리와 외부 연동을 담당합니다.

작은 앱: Express처럼 빠르게 시작할 수 있지만, 모듈 경계를 일찍 잡아두면 성장할 때 덜 흔들립니다.

큰 앱: DI와 데코레이터를 통해 테스트용 구현과 실제 구현을 분리하기 쉽습니다.