Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임으로,
웹브라우저에 종속적인 자바스크립트를 외부에서 실행할 수 있는 Runtime 환경 Chrome V8 엔진을 제공하여 여러 OS 환경에서 실행할 수 있는 환경을 제공해준다.
즉, javascript라는 브라우저에 내장되어 있는 언어를 브라우저가 아닌 컴퓨터에서도 사용할 수 있도록 해주는 것!! 자바스크립트 실행기
웹페이지를 화면에 표시한다는 목적을 가진 웹브라우저와 달리 Node.js는 컴퓨터를 직접적으로 제어한다.
Node.js는 웹서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어졌다.
노드는 V8과 더불어 libuv라는 라이브러리를 사용하는데,
libuv 라이브러리는 노드의 특성인 이벤트 기반, 논 블로킹 I/O 모델을 구현하고 있다.
이벤트 루프(event loop)는 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지를 이벤트 루프가 판단한다.
노드는 이벤트가 종료될 때까지 이벤트 처리를 위한 작업을 반복 하므로 루프(loop)라고 부릅니다.
자바스크립트 코드는 동시에 실행될 수 없는데 그 이유는 노드가 싱글 스레드 기반이기 때문이다.
노드는 싱글스레드, 논 블로킹 모델로, 싱글 스레드가 혼자서 일을 처리하지만 들어온 요청 순서가 아닌 논블로킹 방식으로 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행한다!
노드는 기본적으로 싱글 스레드, 논 블로킹 모델을 채용하므로 I/O 요청이 많이 발생하면 노드를 서버로 사용하는 것이 좋다. 하지만 노드는 CPU 부하가 큰 작업에는 적합하지 않다. 우리가 작성하는 코드는 모두 스레드 하나에서 처리되기 때문에 코드가 CPU연산을 많이 요구하면 스레드 하나가 혼자서 감당하기 어렵기 때문이다.
즉, 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는데 노드는 적합하다. 예를 들어 네트워크나 데이터베이스, 디스크 작업 같은 I/O에 특화되어 있다. 실시간 채팅 애플리케이션, 주식 차트도 포함.
⭐결론, 노드의 장점⭐
❗참조 및 출처❗
Nodejs 개념 이해하기(Nodejs 란?)