😀취업을 위한 스텍들을 알아보면서 NestJS프레임워크를 지원자격으로 하는 회사가 많다는 것을 느꼈다. 마냥 Node.js와 express만 으로 검색을 했을 때 보다 내가 좀 더 다양한 스택을 가지고 있으면 폭넓은 지원을 할 수 있을 것 같아 이번에 Typescript와 NestJS를 이용해 백서버를 구축해보는 연습을 해보려고 한다.
그렇다면 당연히 NestJS에 대해서도 알아봐야 겠다.
모두가 알다싶이 그 많은 프레임워크 중에 하나이다. 하지만 각 프레임워크는 각자만의 특징과 기반, 사용언어가 다르기 때문에 이번에 NestJS의 축약된 정보를 알아보자
NestJS는 TypeScript주 언어로 사용하는 Node.js기반의 어플리케이션 개발을 위한 프레임워크이다.
주로 사용하는 언어는 TypeScript지만 JavaScript로도 사용이 가능하다.
NestJS는 AngularJS프레임 워크에서 영감을 받아 Express기반에 AngularJS의 장점을 섞어서 만들어 졌다.
기존에 Node.js에서 사용하던 Express프레임워크와 가장 큰 차이점은 JAVA의 Spring과 같은 규칙을 제공한다는 점이 아닐까 싶다.
Node.js의 생태계를 보완하고자 만들어졌다. Node.js는 빠르고 확장성이 뛰어나지만, 개발자가 직접 서버를 구현해야하는 번거로움이 있다. NestJS는 이러한 문제를 해결하고자, 익숙한 AngularJS 스타일의 개발 방법과 높은 수준의 추상화를 제공하며, 서버 개발 생산성을 향상시키고자 만들어졌다고 한다.
NestJS는 AngularJS에서 영감을 받았다고 한다. AngularJS는 TypeScript를 사용하여 개발할 수 있는 프레임워크로, 강력한 의존성 주입 시스템과 모듈러 구조를 제공한다. 이를 바탕으로 NestJS도 TypeScript와 의존성 주입 시스템, 모듈러 구조를 제공하고 있다.
TypeScript 기반
TypeScript를 사용하므로써 컴파일 시간에 타입 오류를 확인할 수 있고, 코드의 가독성과 유지보수성을 높일 수 있다.
모듈러 구조
NestJS는 모듈러 구조로 되어있어 필요한 기능만 추가하여 사용할 수 있다. 이를 통해 애플리케이션의 규모를 확장하거나, 기존 기능을 대체하거나 업그레이드할 수 있다.
의존성 주입
NestJS에서는 의존성 주입(Dependency Injection)을 사용하여 클래스 간의 의존성을 해결할 수 있다. 이를 통해 코드의 재사용성과 가독성, 테스트 용이성을 높일 수 있다.
미들웨어
NestJS는 Express.js를 기반으로 하기 때문에, Express.js에서 사용할 수 있는 다양한 미들웨어를 사용할 수 있다.
유연한 아키텍처
NestJS는 MVC, MVVM 등 다양한 아키텍처 패턴을 지원한다. 또한, 다양한 데이터베이스와 함께 사용할 수 있는 ORM(Object Relational Mapping)을 지원하며, WebSocket, gRPC, GraphQL 등 다양한 프로토콜을 지원한다.
테스트 용이성
NestJS에서는 테스트를 위한 다양한 도구와 라이브러리를 제공한다. 테스트 코드 작성 및 실행, 테스트 커버리지 확인 등을 지원한다.
Nest는 Java의 Spring과 같이 규칙을 제공한다.
이로 인해 개발자들이 아키텍처의 구성에 대해 고민해야 할 부분이 많이 줄어든다.
기본적으로 제공하는 라우팅, 보안등의 기능이 많이 탑재되어 있어 편리하다.
외부모듈을 통한 확장이 얼마든지 가능하다.
Java+Spring 사용자라면 아키텍처 구조가 비슷해서 쉽게 배울 수 있다.
Angular 사용자라면 기본적인 사용법이 동일하므로 쉽게 배울 수 있다.
Express.js와 비교하여, NestJS는 코드의 추상화 수준이 높기 때문에 초기 학습 비용이 높을 수 있다.
NestJS는 Node.js 기반의 서버 애플리케이션 개발을 위해 만들어진 프레임워크이므로, 브라우저에서 실행되는 JavaScript 코드 개발에는 적합하지 않다.
NestJS는 Express.js를 기반으로 만들어졌기 때문에, Express.js와 비교하여 상대적으로 무겁고 느릴 수 있다.
장점과 만대로 Java+Spring이나 Angular 사용자가 아니라면 초기 학습 비용이 늘어날 수 있다.
참고자료(출처)
티스토리 코드기어 개발강좌 [Nodejs 프레임워크]NestJS - 01.NestJS란?
Nest JS 공식 사이트 문서