1. Node.JS

Eos·2022년 5월 20일
0

1.1 노드란

노드는 자바스크립트 런타임으로 자바스크립트 엔진인 V8로 빌드됐다.

  • 노드는 서버가 아니다. 서버의 역할을 수행할 수 있고 자바스크립트로 작성된 소스 코드를 실행하는 런타임이다.
    런타임이란 쉽게 말해 실행기를 뜻한다.
  • 노드는 멀티 스레드 방식을 사용할 수 있지만 주로 싱글 스레드를 사용한다. 싱글 스레드의 방식을 치명적인 단점을 보완하기 위해 논블로킹 방식을 채택했다.

1.2 스레드와 논블로킹이란

프로세스 - 운영체제 내에서 할당하는 작업의 단위
스레드 - 프로세스 내에서 실행되는 작업의 단위

싱글 스레드란

  • 프로세스 내에서 실행되는 단위가 한 개이다. 즉, 프로세스라는 식당의 직원의 수가 한 명이다. CPU 내의 여러 코어들 중 단 한 개만 사용한다는 뜻이고 코어가 32개라 했을 때 1개는 엄청 뜨거운 반면 나머지 31개는 차가운 상태를 유지한다는 것이다.
  • 싱글스레드는 멀티스레드보다 효율성이 낮다. 하지만 멀티 스레드는 코딩 난이도가 높은 반면 싱글스레드는 상대적으로 매우 낮다. 멀티 스레드가 되는 다른 언어를 사용하는 대신 노드를 사용하는 가장 큰 이유이다. *

논블로킹이란

일부 코드를 백그라운드(다른 프로세스)에서 실행하는 방식이다.

  • 멀티스레드가 한 식당에서 여러 명의 직원을 고용하여 손님의 주문을 처리한다면 싱글스레드의 논 블로킹 방식은 여러 식당에서 한 명의 직원 고용하여 손님의 주문을 처리하는 방식이다.

1.3 서버로서의 노드

서버: 네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
클라이언트: 서버에게 요청을 보내는 주체(브라우저, 데스크탑 프로그램, 모바일 앱, 한 서버에서 서버로)

노드의 장단점

장점단점
싱글 스레드 방식에 비해 컴퓨터 자원을 적게 사용함싱글 스레드라서 코어를 하나만 사용함
멀티 스레드 방식보다 쉬움하나뿐인 스레드가 쉬지 않도록 해야함
자바스크립트를 사용함어중간한 성능
웹서버가 내장되어있음서버 규모가 커졌을 때 관리하기 어려움
JSON 형식과 호환하기 쉬움 

서버 외의 노드

노드는 자바스크립트 런타임이기 때문에 용도가 서버에만 국한 되지 않는다.
웹, 모바일, 데스크탑 애플케이션에서도 사용

  • 웹 프레임워크 - Angular, React, Vue, Meteor 등
  • 모바일 웹 framework - React Native 등
  • 데스크탑 개발 도구: Electron(Atom, Slack, VScode, Discord 등 제작)
profile
Node 백앤드 개발자입니다

0개의 댓글