1. NestJS 란?
NodeJS 에 기반을 둔 웹 API Framework. 그럼 NodeJS 란? API 란?
2. NodeJS 의 특징과 NestJS
단일 쓰레드에서 구동되는 non-blocking I/O 이벤트 기반 비동기 방식
여러 개의 작업 요청이 한번에 들어올 때 각 작업을 처리하기 위한 쓰레드를 만들고 할당하는 방식을 멀티 쓰레드 방식이라고 한다.
멀티 쓰레드 방식은 여러 작업을 동시에 처리하므로 작업 처리 속도가 빠른 장점이 있지만, 공유 자원을 관리하려는 노력이 많이 들고, 잘못 작성된 동기화로 인해 락에서 빠져나오지 못하는 경우가 발생하기 쉽다. 쓰레드가 늘어날 때 마다 메모리를 소모하므로 메모리 관리 또한 필요하다.
NodeJS에서는 하나의 쓰레드에서 작업을 처리한다. Application 단 에서는 단일 쓰레드이지만, 백그라운드에서는 쓰레드 풀을 구성하여 작업을 처리한다. 개발자가 직접 쓰레드 풀을 관리하지 않고, NodeJS 에 포함된 libuv 가 이 역할을 하기 때문에 개발자는 단일 쓰레드에서 동하는 것처럼 이해하기 쉬운 코드를 작성할 수 있다.
NodeJS 에서는 이렇게 요청된 작업을 앞의 작업을 끝날때까지 기다리지 않고(non-blocking) 비동기로 처리한다. 입력은 하나의 쓰레드에서 받지만 순서대로 처리하지 않고 먼저 처리된 결과를 이벤트로 반환해주는 방식이 NodeJS 가 사용하는 단일 쓰레드 Non-blocking 이벤트 기반 비동기 방식이다.
NestJS는 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공하고 있다. 그러면서도 필요한 라이브러리를 쉽게 설치하여 기능을 확장할 수 있는 Node.js 장점 또한 그대로 가지고 있다.
3) API
API 개념
Application Programming Interface.
Application : 고유한 기능을 가진 모든 소프트웨어
Interface : 두 애플리케이션 간의 서비스 계약
Interface 는 Request 와 Response 를 사용하여 두 Application 이 서로 통신하는 방법을 정의한다.
API 작동 방식
API 아키텍처는 일반적으로 Client 와 Server 측면에서 설명됩니다.
- Client : Request 을 보내는 Application
- Server : Response 을 보내는 Application
작동 방식
- Client 가 Server 에 Request 을 데이터로 전송한다.
- Server 가 이 Client 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 Client 에 반환한다.
REST API
Representational State Transfer.
REST는 Client가 Server 데이터에 액세스하는 데 사용할 수 있는 GET, PUT, DELETE 등의 함수 집합을 정의한다.
Client와 Server는 HTTP를 사용하여 데이터를 교환한다.
'NestJS' 카테고리의 다른 글
Controller, Service, Module (0) | 2022.07.01 |
---|