끄적이는 개발노트
NestJS 소개 본문
이번 포스트에서는 NestJS를 다뤄본다.
NestJS - A progressive Node.js framework
NestJS is a framework for building efficient, scalable Node.js web applications. It uses modern JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reactive Progra
nestjs.com
소개
NestJS는 Node.js 위에서 움직이는 새로 떠오르는 프레임워크이다.
공식문서에서는 NestJS를 다음과 같이 정의한다.
Nest(NestJS)는 효율적이고 확장 가능한 Node.js 서버측 애플리케이션을 구축하기 위한 프레임워크이다.
특징
구조
기존의 Node.js는 장점이자 단점이 너무나도 자유로웠다는 점이다. 그러한 Node.js에 규칙과 구조를 통해 백엔드 구축을 굉장히 쉽게 만들어주는 것이 NestJS이다.
마찬가지로 Express 위에서 움직이고, 선택적으로 Fastify를 사용할 수 있다.
실제로, Node.js를 통해 프로젝트를 개발할 때, 느꼈던 자유로움에서 오는 막막함을 해결해주는 부분들이 굉장히 많았다.
TypeScript
타입스크립트가 도입되며 개발자의 의도에 명확한 코드로 기술하게끔 유도한다. 변수의 타입이나 함수에서 에러가 발생할 경우, 컴파일 단계에서 에러를 발생시키므로, 코드의 가독성을 높여주고 디버깅을 쉽게 해준다.
DI(Dependency Injection)
의존성 주입은 하나의 객체가 다른 객체에 의존성을 주입하는 역제어의 한 패턴이다. 객체 간의 의존관계가 고정되지 않기 때문에 종속성이 감소되고, 재사용성이 증가하는 효과를 가져온다.
다음 포스트에서 기본 제공 코드를 통해 조금 더 이해하는 시간을 가진다.
장점
NestJS는 위에서 언급했듯이 아주 좋은 아키텍처와 구조를 가지고 있기 때문에 규모가 있는 프로젝트의 생산성을 올려준다. 따라서, 기업에서 사용하기에 용이한 프레임워크이다.
대표적인 장점으로 효율성, 안정성, 확장성을 들 수 있다.
효율성
NestJS는 기본적인 아키텍처와 구조를 잡아주기 때문에 프로젝트의 생산성을 굉장히 높여준다. 또한, 모듈을 통한 구성이기 때문에 개발을 하는데 있어 용이하다.
안정성
TypeScript를 기반으로 돌아가기 때문에 그동안 JavaScript 개발에서 발생할 수 있던 오류들을 방지하고 체계적으로 관리할 수 있다. 또한, 모듈별로 테스트 코드를 작성할 수 있어, 유닛 테스트를 통한 코드 테스트를 진행할 수 있어 안정적이다.
확장성
프로젝트를 진행하면 알게 되는 점으로, root 모듈 하나에 그 외의 기능들을 담당하는 모듈들의 조합으로 이루어져 있다. 따라서, 기능이 추가된다면 모듈만 코딩하여 추가하면 되기 때문에 확장성이 높다.
결론
본인 역시 마찬가지로 NestJS를 접한지 얼마되지 않아, 깊고 자세한 설명을 하기에는 다소 부족한 부분이 있다. 하지만, 간단한 프로젝트를 진행하면서도 NestJS의 장점이 상당히 크게 느껴질 정도로 좋은 프레임워크임에는 틀림없으며, 규모가 큰 프로젝트를 생산하는데 있어 적합하기 때문에 Node.js로도 큰 프로젝트가 가능하지 않을까 싶은 기대감이 들었다.
다음 포스트부터 프로젝트 내용을 정리하면서 NestJS의 기본 사용법을 알아본다.
'JavaScript > NestJS' 카테고리의 다른 글
NestJS 연습 프로젝트(Movie) - DTO와 유효성검사 (0) | 2021.10.01 |
---|---|
NestJS 연습 프로젝트(Movie) - 전체코드(CRUD) (0) | 2021.10.01 |
NestJS 연습 프로젝트(Movie) - Service 기본 사용법 (0) | 2021.10.01 |
NestJS 연습 프로젝트(Movie) - Controller 기본 사용법 (0) | 2021.09.30 |
NestJS 설치 및 구조이해 (0) | 2021.09.30 |