#1_nest.js

유상우·2023년 3월 27일
0

Nest.js

목록 보기
2/6

1. nest.js 프로젝트 생성

1.npm cli 설치

$ npm -i -g @nestjs/cli

# i 명령어는 install의 약자
# -g 옵션은 글로벌 환경에 설치하겠다는 것


2. 프로젝트 생성
$ nest new <project name>

2. 단일 스레드에서 구동되는 논블로킹 I/O 이벤트 기반 비동기 방식

여러 작업 요청이 한꺼번에 들어올 때, 각 작업을 처리하기 위한 스레드를 만들고 할당하는 방식을 멀티스레딩이라고 합니다. 멀티스레드 방식은 여러 작업을 동시에 처리하므로 작업 처리 속도가 빠르다는 장점이 있지만, 공유 자원을 관리하는 노력이 많이 들고 동기화를 잘못 작성하면 락(lock)에서 빠져나오지 못하는 경우가 발생합니다. 스레드가 늘어날 때마다 메모리를 소모하게 되므로 메모리 관리 역시 중요합니다.

이에 비해 node.js는 하나의 스레드에서 작업합니다. 사실 앱단에서는 단일 스레드이지만 백그라운드에서는 스레드 풀을 구성해 작업을 처리합니다. 개발자 대신 플랫폼(비동기 I/O 라이브러리 'libuv')이 스레드 풀을 관리하기 때문에 개발자는 단일 스레드에서 동작하는 것처럼 이해하기 쉬운 코드를 작성할 수 있습니다. 웹 서버를 운용할 때는 CPU 코어를 분산해서 관리하므로 실제 작업은 여러 개의 코어에서 별개로 처리합니다.

node.js는 이렇게 들어온 작업을 앞의 작업이 끝날 때까지 기다리지 않고(non-blocking) 비동기로 처리합니다. 입력은 하나의 스레드에서 받지만 순서대로 처리하지 않고 먼저 처릭된 결과를 이벤트로 반환해주는 방식이 바로 node.js가 사용하는 단일 스레드 논블로킹 이벤트 기반 비동기 방식입니다.

3. node.js 장단점

장점

  • 단일 스레드 이벤트 기반 비동기 방식은 서버의 자원에 크게 부하를 가하지 않습니다. 이는 대규모 네트워크 애플리케이션에 적합합니다.
  • 멀티스레드 방식보다 고려할 사항이 적다.

단점

  • 스레드를 하나만 사용하기 때문에 하나의 스레드에 문제가 생기면 앱 전체가 오류를 일으킬 수 있다.
  • 컴파일러 언어의 처리 속도에 비해 성능이 떨어집니다.
  • 이벤트 기반 비동기 방식으로 구현하다 보면 여러 이벤트를 동시에 처리하는 경우 '콜백 지옥'에 빠지는 경우가 있습니다.

4. 타입 스크립트

타입 스크립트는 자바 스크립트 코드에 타입 시스템을 도입하여 런타임에 에러가 발생할 가능성이 있는 코드를 정적 프로그램 분석으로 찾아줍니다.
타입 스크립트는 자바 스크립트에 구문을 추가하여 만들어졌습니다. tsc 명령으로 컴파일하여 자바 스크립트 코드로 변환이 가능합니다.

profile
Potentialist

0개의 댓글