[NestJS] 1. Nest.js에 대해 알아보자

최익준·2023년 3월 20일
1

NestJS

목록 보기
1/2

NestJS는 무엇이고 왜 사용하는 것일까?

NestJS는 TypeScript를 지원하는 효율적이고 확장 가능한 Node.js의 서버 애플리케이션 프레임워크이다. Express, Fastify와 같은 강력한 서버 프레임워크 위에 고도화된 아키텍처를 제공하며, 이를 통해 애플리케이션을 Microservice로 쉽게 분할할 수 있다.

한 마디로, 확장성이 높고 유지 보수가 쉬운 서버 애플리케이션을 쉽게 개발할 수 있다.

그렇다면 왜 NestJS를 사용할까?

기존의 Node.js 프레임워크인 Express의 큰 차이는 아키텍처 구조를 프레임워크에서 제공한다는 점이다. 개발자마다 Express를 사용하는 아키텍쳐 패턴은 다양하며, 이 때문에 프로젝트의 규모가 커지면 커질수록 협업 과정에 드는 소통 비용이 증가한다. 이는 생산성 저하와 유지보수의 어려움으로 이어지게 된다. 하지만 NestJS는 이런 아키텍처의 구조와 디자인 패턴을 프레임워크에서 제공하기 때문에 개발자들의 아키텍처를 통일하고 소통 비용을 절감할 수 있으며 확장성있고 효율적인 개발을 할 수 있다.

NestJS의 장점

내부적으로 Nest는 Express와 같은 강력한 HTTP 서버 프레임워크를 사용하며 원한다면 Fastify도 사용할 수 있도록 구성할 수 있다.

또한 전적으로 TypeScript를 지원하고, 함수형 프로그래밍, 함수 반응형 프로그래밍의 일부 요소도 사용한다.

Node.js의 경우 수많은 라이브러리와 툴이 존재하지만, 아키텍처의 주요 문제를 효과적으로 해결한 라이브러리가 없다. 쉽게 말해서, 개발자가 개발을 시작할 때 0부터 시작해야한다.

NestJS는 기업 단위의 사용에 큰 중점을 두는데, 이 프레임워크가 기업의 프로젝트에 적합하기 때문이다. 좋은 아키텍처와 구조를 가지기 때문에 개발자가 협업하면서 유지 보수하기 수월하다.

NestJS의 단점

아키텍처와 구조가 어느 정도 정해져 있다 보니 다른 기술을 사용하던 개발자에게는 시작이 고비가 될 수 있다. 하지만 공식 문서가 잘 되어있고 한글 문서도 점점 늘어나고 있기 때문에 시간이 지나면서 해결 될 문제로 보인다.

또한 미리 정해져있는 코드의 구조가 오히려 단점으로 작용한다는 의견도 있다.

NestJS 프로젝트 생성 및 실행

NestJS 프로젝트를 시작하려면 Nest CLI를 사용하여 프로젝트를 만들거나 스타터 프로젝트(보일러 플레이트)를 클론하여 만들 수 있다.

(1) Nest CLI 설치 및 프로젝트 생성

$ npm i -g @nestjs/cli
$ nest new project-name

(2) Git을 사용하여 타입스크립트 스타터 프로젝트 설치

$ git clone https://github.com/nest.js/typescript-starter.git project
$ cd project
$ npm install
$ npm run start

Nest CLI로 설치가 완료되었다면 다음 명령을 실행하여 인바운드 HTTP 요청을 수신하는 애플리케이션을 시작할 수 있다.

$ npm run start

이 명령은 src/main.ts파일에 정의된 포트에서 수신 대기하는 HTTP 서버로 앱을 시작한다. 기본은 3000번 포트에서 실행되며 http://localhost:3000/으로 접속하면 Hello World! 메시지가 표시되는 것을 확인할 수 있다.

profile
공부하는 개발자 꿈나무

0개의 댓글