본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Backend

NestJS

작성 2026. 10. 13.추가
목차2개 항목

NestJS는 TypeScript를 기본으로 지원하는 Node.js 서버 애플리케이션 프레임워크다. 내부적으로는 Express(기본) 또는 Fastify를 HTTP 엔진으로 쓰면서, 그 위에 Module · Controller · Provider(DI) 라는 구조와 데코레이터 문법을 제공해 확장 가능하고 유지보수하기 쉬운 서버를 만들게 돕는다. Spring처럼 객체지향·DI 중심이라 Java 개발자에게 익숙하고, Express 개념(미들웨어·라우터·서비스 분리)을 알면 금방 적응할 수 있다.

인프런 「탄탄한 백엔드 NestJS, 기초부터 심화까지」 강의 필기를 바탕으로 재구성한 노트 묶음이다.

2026년 10월 기준 최신은 NestJS 12다. 코어 패키지가 ESM으로 배포되고 Node.js 20.19+ 또는 22.12+가 필요하다(CLI는 22.22+·24.15+·26+). 기존 CommonJS 앱도 Node의 require(esm) 덕분에 대부분 그대로 동작한다. Module·Controller·Provider·DI와 요청 생명주기 같은 핵심 API는 초기 버전부터 거의 같다. (마이그레이션 가이드)

HTTP 엔진은 @nestjs/platform-fastify 어댑터로 Fastify로 바꿀 수 있다. 이때 express-basic-auth처럼 Express 전용 미들웨어는 Fastify용으로 대체해야 한다.

요청 생명주기 한눈에 보기

요청이 컨트롤러에 도달하기 전후로 여러 "끼어들 수 있는 지점"이 있다. 각 노트는 이 순서 중 한 단계를 다룬다.

flowchart TB
  req["Request"]
  mw["Middleware<br/>(전역 → 모듈)"]
  guard["Guard<br/>(전역 → 컨트롤러 → 라우트)"]
  ib["Interceptor before<br/>(전역 → 컨트롤러 → 라우트)"]
  pipe["Pipe<br/>(전역 → 컨트롤러 → 라우트 → 파라미터)"]
  ctrl["Controller handler"]
  svc["Service"]
  ia["Interceptor after<br/>(라우트 → 컨트롤러 → 전역)"]
  ef["Exception Filter<br/>(라우트 → 컨트롤러 → 전역, 예외가 났을 때)"]
  res["Response"]
  req --> mw --> guard -->|"인증·인가"| ib --> pipe -->|"변환·검증"| ctrl --> svc --> ia --> ef --> res

노트 목록

구분노트
기본 구조프로젝트 구조, Controller, Module과 Provider(DI)
요청 파이프라인Middleware와 Interceptor(AOP), Exception Filter와 Pipe
데이터 계층설정과 환경 변수, Mongoose 스키마, DTO와 Validation, Repository 패턴
기능 구현JWT·Passport 인증, Swagger 문서화, 파일 업로드(Multer)

먼저 Express 노트로 미들웨어·라우터·서비스 분리를 익혀 두면 비교하며 읽기 좋다.

이 주제의 항목 · 12

댓글

GitHub 계정으로 댓글을 남길 수 있어요.