소개(공식 문서)
Nest(NestJS)는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 프레임워크입니다.
프로그레시브 JavaScript를 사용하고 TypeScript 로 구축되고 완벽하게 지원하며
(그러나 여전히 개발자가 순수 JavaScript로 코딩할 수 있음)
OOP(객체 지향 프로그래밍), FP(기능 프로그래밍) 및 FRP(기능 반응 프로그래밍)의 요소를 결합합니다.
익스프레스에서 디자인적인 측면을 좀더 보완하며 TS설정을 기본적으로 해준다 정도의 특징으로 알고 넘어가면 될것같습니다.
이미지 출처
기본적으로 service와 Controller를 module로 합치고,
모듈들을 app.module에 합쳐서 사용하는 것입니다
BackEnd에서 흔히 사용하는 Controller 개념 그대로 생각하면 된다.
처음 요청이 들어오는 입구 역할을 담당하며, 비즈니스 로직을 따로 분리하기 위해 진입점을 따로 분리해둔 것이다.
쉽게 설명하자면 식당에 들어갔을 때 좌석을 안내해주는 직원을 생각하면 된다.
HTTP Request에 따라 어떠한 비즈니스 로직을 적용시킬지에 대한 설정을 하면 된다.
Provider는 NestJS의 거의 모든 데이터 처리 및 비즈니스 로직을 담당한다.
다만 역할에 따라 이름이 달라진다.
뿐만 아니라 다른 Module이 Provider를 사용할 수 있게 export 처리를 하거나
필요한 Provider가 있는 모듈을 Import해서 사용할 수 있게 만들어준다.
NestJS는 클라이언트의 요청별로 Controller와 Provider를 제작하고 이를 Module로 엮어 하나의 단위를 만든다고 할 수 있다.