Node.js 특징 & ES6

윤득렬·2022년 4월 15일
0

Node와 함께 끄적

목록 보기
2/3

intro

Node로 프로젝트 시작 전 개념 정리하기 위한 글

Node.js 특징

1. 이벤트 기반

이벤트가 발생했을 때, 저장해둔 작업을 수행하는 방식으로 이벤트 리스너에 미리 콜백함수를 저장해두고 입력된 이벤트에 따라 해당 작업을 수행

조금은 구체적인 이야기
자바스크립트 엔진은 비동기 처리를 할 수 없다. 때문에 비동기로 처리되는 코드를 만날 경우 libuv 라이브러리를 이용해 비동기를 처리하게 된다. libuv는 이벤트 기반으로 비동기를 처리하는데 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미한다. 이것을 이벤트 리스너에 콜백 함수를 등록한다고 표현한다.
이벤트 기반 모델에서는 이벤트 루프라는 개념이 등장하고, 여러 이벤트가 동시에 발생했을 땐 이벤트 루프가 콜백 함수 호출 순서를 정한다.
즉, Node.js는 Chrom V8 엔진과 libuv library로 이루어져 있고 libuv에서 비동기를 처리한다. libuv는 이벤트 기반으로 비동기를 처리하며 여러 이벤트가 발생 했을 땐 이벤트 루프가 순서를 판단한다.

2. Non-Blocking-IO

다음 JavaScript 실행이 이전 exection들에 의해 block되지 않는 것을 의미

추가 설명
Node.js 라이브러리의 모든 API는 비동기(Async)이다. Node 기반의 서버는 API가 실행되었을 때, 데이터를 반환할 때까지 기다리지 않고 다음 API를 실행한다. 즉, 이전 작업을 완료할 때까지 멈추지 않고 다음 작업을 실행한다는 의미이다. 때문에 동시에 request가 오더라도 처리가 완료될 때까지 기다리지 않아도 되서 서버 부하가 적다.

3. Single Tread

클라이언트로부터 들어오는 요청들을 단일 스레드로 받고, 내부적으로는 다중 스레드로 작업을 수행
실제로 단일 스레드로만 해결하는 것을 아니다... 구제적인건 추후 기록하도록 할 것

ES6?

ES6란 ECMAScript의 6번째 버전을 의미.

  • const & let
  • 프로미스
  • async & await
profile
Backend server 개발자가 되고 싶은

0개의 댓글