1) Node.js란?
JavaScript runtime build on Chrome V8 engine
open-source
cross-platform
2) 노드를 배우면 좋은점!
JS의 범용성 -> JS로 클라이언트와 서버를 구현한다면 context switching 쉽다, 생산성 ↑
강력한 커뮤니티가 존재 -> npm을 통해 수많은 library 사용 가능
많은 큰 기업들이 노드 사용 중 -> production quality가 입증됨
쉽고 단순하지만, 강력하고 유연함 -> 배우기 쉬움, 높은 생산성, 비교적 간결한 코드, 빠르게 프로토타입을 만들 수 있음
3) 노드의 특징 4가지
JS runtime 환경
Single Thread
Non-Blocking I/O
Event-Driven
4) 노드를 들여다 보자!
메인 싱글 스레드가 존재
노드가 제공하는 api를 통해 I/O, 네트워크 요청 처리
이벤트가 발생할 때 처리해야 하는 것을 call back 형태로 전달해주면 노드 내부에서 병렬적으로 처리함
노드 내부에서는 여러 모듈, 라이브러리가 존재하기 때문에 비동기적으로 병렬처리가 가능함
=> 어플리케이션과 콜백 함수에 작성된 코드는 가벼운 일들만 처리해야한다!! Don't block the event loop
노드js는 I/O 처리에 탁월, CPU에서는 적합하지 않음 -> but, 12 이상부터는 worker threads를 생성할 수 있는 api 사용할 수 있다