
등장 배경 :
WEB의 발전에 의해 등장했다.
단방향 통신의 WEB1.0 + 사용자와 상호작용하는 WEB2.0
이에 따라 복잡한 JS를 실행하기 위해 고성능의 JS 실행기가 필요함.
-> 크롬을 위한 V8 엔진 개발
-> V8을 활용하여 JS를 어느 환경에서도 동작시킬 수 있도록 하는것이 node.js

node.js의 주요 3가지 특징
싱글 쓰레드 - 비동기 - 이벤트 기반
즉, 싱글 쓰레드이기 떄문에 비동기 동작이 필요하고, 비동기 동작을 구현하기 위해 이벤트 기반 동작 방식을 사용함.
- 쓰레드 : 명령을 실행하는 단위

싱글 스레드 장단점
쓰레드가 늘어나지 않기 때문에 리소스 관리 효율적
그러나 쓰레드 기반의 작업들의 효율이 떨어짐 ex) cpu 연산 작업
따라서 node.js 비동기 동작으로 쓰레드 기반의 작업을 최소화

이벤트 기반이란?
비동기 동작의 완료를 처리하는 방법
비동기 방식은 특정 동작을 실행한 후, 해당 동작을 전혀 신경쓰지않음
대신 해당 동작 완료될 경우 실행할 함수를 미리 등록
비동기 동작이 완료되면 미리 등록된 함수 실행