NestJS란?

2023년 10월 02일

쉽게 확장 가능하고 안정적으로 운영할 수 있는 아키텍처가 Node.js에서 필요하다? 그럼 Nest를 쓰면 된다.

개발할 때 사실 매번 새로운 아이디어가 필요한 것이 아니라, 이미 많은 이들이 겪은 문제들에 대해서는 이미 좋은 아이디어가 있고 그 practice에 맞게 잘 구현해나가면 된다. Node.js 씬에서 좋은 practice를 잘 정리하고 쌓고 구조화한 게 Nest다. 그래서 Nest가 쓰인다.

작은 프로젝트를 간단한 프레임워크로 구성하고 이후에 복잡도가 올라가면서 이건 어떻게 붙이지 저건 어떻게 붙이지 고민해본 사람이라면, Nest가 제공하는 아키텍처, 기능의 효능감을 잘 느낄 수 있을 거다.

NestJS 란?

NestJS에 대한 간략한 설명

  • Node.js 백엔드 프레임워크
  • 타입스크립트를 지원한다.
  • 다양한 라이브러리, 프레임워크를 포함한 규모가 큰 프레임워크다.
    • http는 express, fastify를 사용할 수 있고
    • 테스트에서는 jest를 제공하고
    • 여러 라이브러리, 프레임워크를 포함해서 Nest의 방식으로 제공한다.

Express와의 비교

Express 프레임워크와 일대일로 비교하는 것으로 적합하지 않을 수 있다. NestJS가 Express를 포함하고 있는 더 거대한 프레임워크라고 생각하면 좋다.

Nest는 Express가 제공하지 못하는 아키텍처, 의존성 주입, 테스트, 에러, 통합기능을 제공한다.

NestJS의 장점

  1. 구조 안정성

Node.js 진영에서 백엔드의 구조적 문제를 가장 잘 해결하는 게 NestJS다.

Nest 프레임워크가 제공하는 구조가 있다. 모듈을 기반으로 앱을 구성하게 한다. 그리고 각 모듈은 컨트롤러 그리고 서비스를 비롯한 프로바이더 등으로 구성되어 있다.

Nest 자체가 제공하는 구조 덕분에 개발자가 앱을 쉽게 수정-확장할 수 있고, 안정적으로 유지 보수를 할 수 있다.

  1. 통합 기능 제공

테스트, Cron Job, http, websocket, db connection 등 을 구현한다면 Nest가 제공하는 방식에 따라 쉽게 적용할 수 있다. 라이브러리를 어떻게 결합해야할지 크게 고민할 필요가 없다.

Validation을 구현하고 싶어? → 이렇게
Authorization을 구현하고 싶다면 → 이렇게 해 Cron Job 필요해? → 이렇게

Nest가 제안하는 방식에 따라 필요한 기능들을 쉽게 구현할 수 있다.

더 다양한 기능에 대해서는 NestJS - 문서를 참고하자.

  1. 의존성 주입

NestJS는 의존성 주입을 쉽게 구현할 수 있는 기능을 제공한다. Nest 프레임워크의 IOC 컨테이너가 의존성을 관리해준다.

의존성 주입 덕분에 클래스가 덜 결합되는 방식으로 구현할 수 있고, 테스트의 작업 이 수월해진다.

(‘의존성 주입’에 대해서는 따로 포스팅을 쓰는 것으로)

관련글

  • 의존성 주입 (NestJS) : 작성 예정

TAGS
NEST.JS