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