[NestJS] NestJS란?

# nodeJS# nestJS
[NestJS] NestJS란?

NestJS란?

NestJS는 TypeScript 기반의 Node.js 백엔드 프레임워크다.
내부적으로 Express 위에서 동작하며, Fastify로 교체도 가능하다.

가장 큰 특징은 구조를 프레임워크가 강제한다는 점이다. Express가 폴더 구조, 레이어 분리, 파일 이름까지 전부 개발자 재량이라면, NestJS는 코드를 Module / Controller / Service 세 가지 역할로 나누도록 처음부터 설계되어 있다.

왜 이런 설계를 선택했는지는 → [NestJS] NestJS의 철학에 정리되어 있다.


핵심 구조 세 가지

Module은 도메인 단위로 코드를 묶는 컨테이너다. 유저 관련 기능은 UsersModule, 인증은 AuthModule처럼 나뉜다.

Controller는 HTTP 요청을 받아 어디로 넘길지 결정한다. 비즈니스 로직은 여기에 두지 않는다.

Service는 실제 비즈니스 로직이 들어가는 곳이다. DB 조회, 계산, 외부 API 호출 등이 포함된다.


의존성 주입 (DI)

NestJS는 의존성 주입을 기본값으로 내장한다. UsersService를 컨트롤러 안에서 직접 new로 생성하지 않고, NestJS의 IoC 컨테이너가 알아서 주입해준다.

실질적인 이점은 테스트다. 실제 DB 없이 Mock 객체를 주입하면 서비스 로직만 단독으로 테스트할 수 있다.


Express와 비교

ExpressNestJS
구조개발자가 직접 설계프레임워크가 제공
DI없음컨테이너 내장
코드 스타일팀마다 다름프레임워크가 강제

혼자 빠르게 만드는 프로토타입이라면 Express가 낫지만.
코드베이스가 커질수록 NestJS의 구조적 이점이 두드러진다.

하지만 NestJS의 Controller / Service 패턴은 Spring Boot에서도 동일하게 쓰인다.
Spring (JAVA) 백엔드 경험이 있다면 오히려 Express보다 NestJS가 더 익숙하게 느껴질 수 있다.