Node.js
Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascrpit 런타임이다.
노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있으며, 서버를 실행하는데 제일 많이 사용한다.
Node.js의 핵심
- 구글 V8 자바스크립트 엔진
- 고성능 네트워크 서버
- 단일 쓰레드( Single Thread ), 이벤트 루프( Event Loop ) 기반
- 비동기 I/O 처리( Non-Blocking I/O )
- 개발 생산성 향상
- 방대한 모듈 제공( NPM )
단일쓰레드 이벤트 루프 기반 비동기 방식( Non-Blocking I/O )
- 하나의 쓰레드가 요청을 받으면 바로 다음 처리에 요청을 보내 놓고, 다른 작업을 처리하다가 먼저 요청한 작업이 끝나면 이벤트를 받아서 응답을 보낸다.
- 동시에 요청이 들어와도 처리가 완료될때까지 기다리지 않아도 되어서 서버 부하가 적다.
Node.js 장점
- 자바스크립트를 동일하게 사용하여 서버단 로직을 처리할 수 있다.
- 개발이 빠르고 쉬우며, 서버 설치부터 화면 띄우는 것까지 금방 할 수 있다.
- Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능
- 이벤트 기반 비동기 방식이라 서버 무리가 적다.
Node.js 단점
- 이벤트 기반 비동기방식이라 서버단 로직이 복잡하면 콜백함수의 늪에 빠질 수 있다.
- 단일 쓰레드이기 때문에 하나의 작업 자체가 많이 걸리는 웹서비스에는 어울리지 않다.
- 코드가 수행되어야 코드에 에러가 있는지 알 수 있으며, 에러 날 경우 프로세스가 다운되어 소스코드 검증이 필요하다.