Node.js
Node.js를 공부하기 전에 간단하게 Node.js에 대해 알아보았다.
About Node.js
- Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다.
- 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
- 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.
- Node.js는 비동기 이벤트 주도 JavaScript 런타임으로 확장성있는 네트워크 애플리케이션을 만들 수 있도록 설계되었다.
- 다음 예제는 다수의 연결을 동시에 처리할 수 있도록 작성되었다. 각 연결에서 콜백이 실행되는데 실행할 작업이 없다면 Node.js는 대기한다. 이는 요즘 사용하는 OS 스레드가 일반적으로 사용하는 동시성 모델과 대조적이라고 할 수 있다. 스레드 기반의 네트워크는 상대적으로 비효율적이고 사용하기가 어렵다. Lock이 없기 때문에 Node.js의 사용자는 Deadlock에 대해 고려하지 않아도 된다.
- Node.js에서는 I/O를 직접 처리하는 기능이 거의 없기 때문에 프로세스가 차단되지 않는다. 아무것도 차단하지 않기 때문에 확장 가능한 시스템은 Node.js에서 개발하기 매우 합리적이라고 할 수 있다.
Node.js를 사용하면 유리한 경우
- 입출력이 잦은 어플리케이션
- 데이터 스트리밍 어플리케이션
- 데이터를 실시간으로 다루는 어플리케이션
- JSON API 기반 어플리케이션
- 싱글페이지 어플리케이션
Node.js를 사용하면 불리한 경우
- CPU 사용률이 높은 어플리케이션에선 Node.js 사용을 권장하지 않는다.