Node.js 의 프레임워크로 알고 있었다. 개발 공부를 하며 express에 대해서도 어느 정도 본 적이 있었는데 사람들이 구현해놓은 서버를 보면 아키텍쳐가 사람마다 다른 것을 볼 수 있다. 하지만 nest.js는 아키텍쳐를 제공해주는 프레임워크로써 django와 같은 느낌을 받았고, 배워보고자 한다.
Nest.js는 효율적이고 안정적이며 확장에 용이한 서버 어플리케이션을 구축하기 위한 진보된 Node.js 프레임워크 입니다.
Express 와 같은 서버 프레임워크로 Express 가 서버를 쉽게 만들 수 있지만 아키텍쳐 측면에서 지원하는 것은 없기에 이러한 문제를 해결하고자 Nest.js가 등장하였습니다.
NestJS는 Typescript 기반의 OOP(Object Oriented Programming), FP(Functional Programming), FRP (Functional Reactivae Programming)을 지원합니다.
기본 골격은 위의 사진과 같다. App 모듈이 메인으로 실행되고 각 기능들이 Module로 존재하여 App Module에서 사용된다.
일반적인 Backend
에서 사용하는 Controller
개념과 같은 의미로 생각하면 된다.
요청이 들어오는 입구 역할을 담당한다. 비즈니스 로직을 따로 분리하기 위한 분기점이다.
provider
는 NestJS
의 모든 데이터 처리 및 비즈니스 로직을 담당한다.
역할에 따라 이름이 달라진다.
Guards
Pipes
Service
or Handler
Exception Filters
Express
의 미들웨어와 동일Module
은 Provider
와 Controller
를 합치는 역할을 한다.
NestJs는 클라이언트의 요청별로 Controller 와 Provider를 제작하고 이를 Module로 엮어 하나의 단위를 생성한다.
안정성
기본적으로 TypeScript
을 도입함으로서 어플리케이션 개발 시 발생할 수 있는 오류들을 사전에 방지할 수 있다. 또한 모듈 별로 테스크 코드를 쉽게 작성할 수 있게 구현되어 있다.
확장성
Module
을 통해 확장이 용이하도록 설계되어 있다. module
을 통해 논리적으로 구분되어 있다. 기본적으로 MSA
개발 스타일을 제공한다.
효율성
Module
을 통한 구조화, DI(dependency Injection)
, IoC(Inversion of Control)
등의 기술을 통해 생산적인 개발이 가능하다.