Nest.Js 란 ?
Hello, nest!
A progressive Node.js framework for building efficient, reliable and scalable server-side applications.
효율적이고 안정적이며 확장 가능한 서버측 애플리케이션을 구축하기 위한 진보적인 Node.js 프레임워크입니다.
Nest 관련 공식문서에 들어가면 바로 보이는 문구입니다.
Nest.js는 Node.js의 프레임워크라는걸 알수있는데요
제 경우는 점점 많은 사람들이 Nest.js를 사용하는걸까? 라는 의문이 제일 크게 들었습니다.
그리고 실제로 회사에서 Nest.js를 사용하고 있었기 때문에 공부를 진행하게 되었습니다.
Nest.JS 란?
소개
Nest는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 프레임워크입니다.
프로그레시브 JavaScript를 사용하고 TypeScript로 구축되어 있습니다.(그래도 개발자는 순수 JavaScript로 코딩할 수 있습니다.)
OOP(Object Oriented Programming), FP(Functional Programming) 및 FRP(Functional Reactive Programming)
요소를 결합합니다.
내부적으로 Nest는 Express(기본값)와 같은 강력한 HTTP 서버 프레임워크를 사용하며 선택적으로 Fastify도 사용하도록 구성할 수 있습니다.
Nest는 이러한 일반적인 Node.js 프레임워크(Express/Fastify) 이상의 추상화 수준을 제공하지만 API를 개발자에게 직접 노출하기도 합니다. 이를 통해 개발자는 기본 플랫폼에서 사용할 수 있는 수많은 타사 모듈을 자유롭게 사용할 수 있습니다.
철학
최근 몇 년 동안 Node.js 덕분에 JavaScript는 프론트엔드 및 백엔드 애플리케이션 모두에서 웹의 "공통어"가 되었습니다.
이것은 개발자 생산성을 향상시키고 빠르고 테스트 가능하며 확장 가능한 프런트엔드 애플리케이션을 생성할 수 있는
Angular, React 및 Vue와 같은 멋진 프로젝트를 탄생 시켰습니다.
그러나 Node(및 서버측 JavaScript)를 위한 우수한 라이브러리, 도우미 및 도구가 많이 존재하지만 그 중 어느 것도 아키텍처 의 주요 문제를 효과적으로 해결하지 못합니다 .
Nest는 개발자와 팀이 테스트 가능하고 확장 가능하며 느슨하게 결합되고 쉽게 유지 관리할 수 있는 애플리케이션을 만들 수 있는 즉시 사용 가능한 애플리케이션 아키텍처를 제공합니다. 아키텍처는 Angular에서 크게 영감을 받았습니다.
위 내용은 공식문서 소개에 나오는 Nest의 소개와 철학부분입니다.
간단하게 정리하자면
- 최근 Nodejs로 인해 JavaScript를 이용한 풀스택 (프론트엔트 + 백엔드 ) 개발이 활발해졌습니다.
- JavaScript라는 한가지 언어로 개발을 하기 때문에 생산성을 향상시키고 빠른 개발이 가능해졌습니다.
- Node.js의 높은 자유도로 인해 Architecture의 구성이 어렵고 효과적이지 못했습니다.
- 이를 해결하기 위해 Angular의 아키텍처 사상을 기반으로 Nest가 만들어졌습니다.
- Nest는 Typescript 기반의 OOP, FP, FRP를 지원합니다.

정리된 내용을 보셨을때 그냥 Node로 마저 개발하면 안되나..? 라고 생각하시는 분이 있으실거 같아서
간단한 예시를 들자면
레고 100만개를 우리한테 주고서 로봇을 만들어줘 ! 라는 상황인 경우에
Node.js는 처음부터 로봇을 만들어야 되는 반면
Nest는 로봇의 틀이 이미 만들어져 있는 차이..? 라고 생각하면 될 것 같습니다
규칙에 맞춰서 코드를 작성해야 되는 부분이 있기때문에
Node에 비해 자유도는 떨어지지만
Nest는 Java의 Spring과 같이 규칙을 제공하기 때문에
이로 인해 개발자들이 아키텍처의 구성에 대해 고민해야 할 부분이 많이 줄어듭니다 !
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 Programming), FP (Functional Programming), and FRP (Functional Reactive Progr
nestjs.com