Node.js는 크롭 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. Node.js는 이벤트 기반, 논블로킹 I/O모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다.
node.js의 특성
자바스크립트 런타임
노드는 자바스크립트 런타임이다. 런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. 따라서 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 해준다. 2008년 구글이 V8엔진을 사용하여 크롬을 출시하였다. 당시 V8엔진은 다른 자바스크립트 엔진과 달리 매우 빨랐고, 오픈 소스로 코드도 공개되었다. 속도문제가 해결되자 라이언 달은 2009년 V8엔진 기반의 노드 프로젝트를 시작했다. 노드는 V8과 더불어 libuv라는 라이브러리를 사용한다. V8과 libuv는 C와 C++로 구현되어 있다. libuv라이브러리는 노드의 특성인 이벤트 기반, 논블로킹 I/O모델을 구현한다. 노드는 스스로를 이벤트 기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적이라고 표현했다.
이벤트 기반
이벤트 기반(evnet-driven)은 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식이다. 이벤트로는 클릭 네트워크 요청 등이 있을 수 있다. 이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두어야 한다. "이벤트 리스너에 콜백 함수를 등록한다" 고 표현한다.
https://velog.io/@nittre/블로킹-Vs.-논블로킹-동기-Vs.-비동기
node.js의 장단점
장점
단점
안정성과 보안성의 측면의 문제도 이미 충분히 검증되었다. 규모가 큰 곳으로는, NASA, Air BnB, woober, Netflix, linked in 등에서 사용되고있다. 페이팔, 월마트, 이베이 같이 결제시스템을 사용하는 대기업들도 노드로 서비스를 운영한다.