Node.js 란?
Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. Node.js는 이벤트 기반,
논 블로킹 I/O 모델을 사용해 가볍고 효율적이고 JavaScript를 브라우저가 아닌 컴퓨터에서 브라우저 없이
실행하게 도와주는 환경을 의미한다.
Node.js에 특성으로는 논 블로킹 I/O, 싱글 스레드, 이벤트 루프가 있다.
기존의 블로킹 I/O는 프로그램 내부에서 함수를 호출하면 호출된 함수가 작업을 마칠 때까지 대기하는 방식이었지만,
논 블로킹 I/O는 함수가 실행되는 중에도 다른 작업을 동시에 진행할 수 있는 장점이 있다.
싱글 스레드는 스레드 하나를 사용하여 동시에 한가지의 작업만을 처리하는 것으로 1개의 프로그램에서 여러개의
스레드를 사용할 수 있다면 연산할 수 있는 시간을 단축 시킬수 있지만 그럼에도 Node.js가 싱글 스레드를 사용하는
이유에는 연결 요청마다 스레드를 생성하는 체계에 비해 스레드 생성 부하 및 스레드 유지에 대한 부담이 없어 같은 컴퓨팅
리소스라도 조금 더 효율적으로 사용이 가능하기 때문이다.
이벤트 루프란 Javascript가 가지고 있던 싱글 스레드의 약점을 극복하기 위해 효율적으로 작업을 처리할 수 있는 특성으로
Node.js가 여러 비동기 작업을 관리하기 위한 구현체다.