What is node.js?

Inah-_-·2021년 6월 7일
1

Node.js

목록 보기
1/2
post-thumbnail

☘️ Node.js란?

Node.js는 웹서버가 아니다. 간단하게 말하자면,

비동기(Asynchronous) 이벤트-기반(event-driven) JavaScript 런타임 환경이다.


비동기(Asynchronous)

프로그램의 다른 기능 또는 함수들이 서로 방해(Blocking)하지 않고 동시에
처리되는 것을 말한다.
예를 들어 '나'라는 객체가 고양이 밥과 물을 채워준다고 할 때,

동기적으로 처리 한다면

  • 밥을 채워주고
  • 밥을 다 채워준 후 물을 채워준다.

이 작업을 비동기로 처리하면

  • 밥을 채우면서 물도 같이 채워준다.

물을 주기위해 밥을 채울 때 까지 기다리지 않아도 된다는 의미이다.


비동기 이벤트-기반(Event-Driven)

node.js 환경에서 이벤트는 하나의 요청과 같다.
여기서의 요청은 HTTP Request와 같다고 볼 수 있다.
즉, node 입장에서 이벤트는 Front-end(클라이언트)에서 받는 요청이다.

node가 비동기적으로 이벤트를 처리한다는 것은 앞선 클라이언트의 요청이
끝나기 전에 다음 클라이언트의 요청을 받을 수 있다는 의미
이다.

싱글 스레드(Single-Thread)

출처 : https://www.c-sharpcorner.com/

클라이언트(user)가 앱에 접속할 때, 권한에 따라 인증을 받아야 한다.
인증을 할 때에 데이터 베이스에 저장되어 있는 유저의 정보를 조회 해야하고,
이 클라이언트(user)가 올린 게시물을 조회해야 한다고 가정 했을 때,
이 유저의 정보, 게시글에 담긴 사진, 댓글 정보 등 여러개의 게시물을 조회해야 한다.
이것을 Heavy Load라고 한다. node는 이렇게 컴퓨터의 자원이 많이 들고
시간이 오래 걸리는 일을 Internal C++ Thread Pool에서 처리
한다.

따라서 node의 Single-Thread는 여러 요청을 한 시점에 처리할 수 있는 것이다.


JavaScript 런타임 환경 (Chrome V8 엔진)

JavaScript 런타임 환경
JavaScript로 짜여진 소스코드를 CPU가 이해할 수 있는 bytecode
변환시키고 프로그램의 메모리를 관리하는 시스템이다.

이런 환경을 가능하게 해주는 것이 Chrome V8 엔진이다.
이 Chrome V8 엔진은 google의 Chrome Web Browser에서 작동하는 엔진으로,
이 엔진이 브라우저 없이 작동할 수 있도록 만든 환경이 node이다.


정리

  • 비동기 : 기다리지 않고 이벤트 처리
  • 이벤트-기반 : 싱글-스레드
  • Javascript 런타임 환경 : C++ Chrome V8 엔진
profile
Backend Developer

0개의 댓글