Node.js 공부하기 (1)

Coosla·2021년 1월 13일

Node.js

목록 보기
1/4
post-thumbnail

1. Node.js

Node.js란?

크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이고 이벤트 기반 및 논블로킹 I/O모델을 사용하여 가볍고 효율적입니다.

1-1. 자바스크립트 런타임

기존의 자바스크립트 프로그램은 브라우저 위에서 빠르게 실행할 수 있었지만 브라우저 외의 환경에서는 실행 속도 문제 때문에 호응을 얻지 못했습니다. 그러나 구글 V8 자바스크립트 엔진이 출시되면서 다른 자바스크립트 엔진에 비해 속도가 매우 빨라지며 V8를 이용하여 노드 프로젝트를 시작했습니다.
Node.js는 자바스크립트 런타임입니다. 즉, 자바스크립트 언어로 만든 프로그램들을 실행할 수 있는 환경을 말합니다. Node.js는 V8 자바스크립트 엔진과 libuv라는 라이브러리를 사용합니다.

런타임이란?

특정 언어로 만든 프로그램을 실행할 수 있는 환경을 말합니다.

libuv 라이브러리

이벤트 루프를 기반으로 비동기 I/O를 지원하는 다중 플랫폼 C라이브러리이고 노드의 특성인 이벤트 기반, 논블로킹 I/O 모델을 구현하고 있습니다.

1-2. 이벤트 기반

이벤트 기반이란?

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식입니다.
이벤트 기반 시스템에서 이벤트가 발생할 때 무엇을 할지 미리 등록해두는 것을 이벤트 리스너(event listener)에 콜백(callback) 함수를 등록한다라고 표현합니다.

이벤트 루프

이벤트 발생 시 호출할 콜백 함수를 관리하고 호출된 콜백 함수의 실행 순서를 결정하는 역활을 합니다.

태스크 큐

이벤트 발생 후 호출되어야 할 콜백 함수들이 기다리는 공간입니다.

백그라운드

타이머나 I/O작업 콜백 또는 이벤트 리스너들이 대기하는 곳입니다.

1-3. 논블로킹 I/O

논블로킹이란?

이전 작업이 완료될 때까지 멈추지 않고 다음 작업을 수행합니다.
논블로킹이 중요한 이유는 Nods.js가 싱글 스레드이기 때문입니다.

2. 서버로서의 Node.js

  • 장단점

    장점단점
    멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용실글 스레드라서 CPU 코어를 하나만 사용
    I/O 작업이 많은 서버로 적합CPU 작업이 많은 서버로는 부적합
    멀티 스레드 방식보다 쉬움하나뿐인 스레드가 멈추지 않도록 관리해야함
    웹 서버가 내장서버 큐모가 커졌을 때 서버를 관리하기 어려움
    자바스크립트 사용어중간한 성능
    JSON 형식과 호환하기 쉬움
profile
프로그래밍 언어 공부 정리

0개의 댓글