NestJS에 대해 알아보자
- NestJS
- Node.js
- Express
- Spring
💡 NestJS란 무엇일까?

NestJS는Node.js를 기반으로 한서버 애플리케이션 개발 프레임워크이다.
NestJS는 Express(기본설정) , Fastify 를 선택하여 사용할 수 있다.
또한, 위에서 설명한 프레임워크의 API를 직접적으로 사용할 수 있어 Express 혹은 Fastify 개발자라면 서버 애플리케이션 개발에 있어 큰 자유도를 가질 수 있다.
NestJS 는 Spring 의 Controller , Service 등의 개념과 유사하며, 다양한 Decorator(Spring의 Annotation) 가 사용된다는 점이 있다.
마지막으로 Jest 라는 테스트 환경이 자동 제공되며 NestJS 에서 제공하는 CLI 를 통해 파일을 생성하면 테스트를 위한 spec 파일이 자동 생성된다.
❗ 만약, 간단한 프로젝트를 진행하는 경우
NestJS를 사용하게 될 시성능 오버헤드가 발생할 수 있다. 따라서 프로젝트 특성을 잘 파악해가면서 적용하는 것이 중요하다.
🔥 NestJS의 주요 특징
TypeScript 지원:NestJS는 기본적으로TypeScript를 사용하며, 타입 안정성과 코드 유지보수성을 증가시킨다.객체 지향 프로그래밍(OOP)와함수형 프로그래밍(FP)요소를 결합하여 개발자에게 유연성 제공정형화된 아키텍쳐: 자유롭고 개발자에게 최소한의 요소만 지원하는Express와 달리NestJS는 정형화된 아키텍처를 가지고 있어 개발자에게 구조적인 지침을 제공한다.Jest테스트 환경 자동 제공 : 테스트를 위한spec파일이 자동으로 생성된다.마이크로서비스 아키텍처 지원: 확장성과 유연성을 강화시켜준다.
→ NestJS 는 Express 와 Fastify 프레임워크를 내부적으로 사용하며 Spring 과 비슷한 구조를 지니고 있다.
→ 💡 NestJS는 유지보수성이 뛰어나며 확장 가능한 대규모 애플리케이션을 구축할 때 유용하다.
💡 NestJS의 아키텍처
→ NestJS 의 아키텍처는 모듈 기반이다.
- 애플리케이션을 여러 개의 모듈로 나누어 개발하고, 각 모듈이 독립적으로 작동하도록 하는 구조
- 각 모듈은
컨트롤러,서비스,레퍼지토리등의 요소로 구성된다.
→ NestJS 는 미들웨어(Middleware) , 인터셉터(Interceptor) , Guard, Pipe, Exception Filter 와 같은 고급 기능을 제공하여 애플리케이션의 품질과 유지보수성을 향상시킨다.
💡NestJS와 Express의 차이는?
🐵 NestJS
- TypeScript 지원 :
Nest.js는 TypeScript를 기반으로 하며, 타입 안정성과 유지보수성을 상승시킨다. - 모듈 기반 아키텍처 : 대규모 애플리케이션 개발에 적합하며, 코드의 재사용성과 유지보수성이 높다.
Angular와 유사한 구조 : 앵귤러 개발자들이 쉽게 접근할 수 있다. (?)GraphQL지원 : Nest.js에는GraphQL이 내장되어있어 이를 지원한다.
🐒 Express
- 간결성과 유연성 :
Express는 작은 규모의 프로젝트나 빠른 개발 속도를 원하는 경우에 적합하다. 미들웨어 아키텍처:Express는 다양한 기능들을 쉽게 추가할 수 있어 확장성을 극대화한다.Node.js기본 모듈과 호환 : 다양한 서드 파티 라이브러리와 통합이 용이하다.
NestJS는 대규모 애플리케이션, TypeScript 환경, 구조적인 코드를 선호하는 경우 적합하며,Express는 작은 규모의 프로젝트나 빠른 개발을 원하는 경우 용이하다.