Nodejs

1. 개요

V8 (자바스크립트 엔진) 위에서 동작하는 이벤트 처리 I/O 프레임워크이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다.

내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하다.

2. 역사

2009년 Ryan Dahl은 플리커의 파일 업로드 진행 표시줄을 보고 파일이 얼마나 업로드 되었는지 알기 위해 서버에 쿼리 전송을 해야하는 점을 보고 더 쉬운 방법을 찾다가 고안해 내었으여, 그가 일하던 Joyent라는 회사에서 개발 및 운영을 담당하고 있다.

최초 버전은 2009년 리눅스 기반으로 출시 되었고, Inangural JSConf EU conference에서 Ryan Dahl의 발표 직후 국제적인 관심을 끌기 시작했다. 패키지 매니저인 npm은 2011년에 처음 소개 되어다.

3. 비동기

node.js는 고성능의 비동기 어플리케이션 작성 플랫폼으로 구상 되었다. 브라우저의 자바스크립트 엔진이 UI 스레드를 공유할 수 밖에 없는 환경에서 락을 피하고자 시분할과 이벤트로 비동기 프로그램을 작성하는 모습을 보고 생각해 만들었다고 한다.

이때 프로그램은 리엑터 패턴에 의한 CPS(continuation-passing style)로 작성되는데 이것이 node.js에 고성능을 선사하는 기법인 동시에 비 숙련자에게 디버깅 지옥을 만드는 애증의 관계를 지니고 있다.

4. 오류처리

기본적으로 오류 핸들링을 하지 않으면 예외발생으로 프로그램이 꺼진다.

5. 다중처리

노드는 단일 프로세스에서 작동하는데 여러 main을 실행하면 다중화 된다.

EndPoint 아이피가 여러개인 경우 한개 main에 전부 물려주지말고 두개 main에 각각 나눠주면 좋다.

V8 엔진은 웹 브라우저를 만드는데 기반을 제공하는 오픈소스 응용 프로그램 프레임워크이다. 구글 크롬 브라우저와 안드로이드 브라우저에 탑재되어 있다. ECMAScript 3rd Edition 규격의 C++로 작성 되었으며, 독립적으로 실행이 가능하다. 추가적인 속도 향상을 위해 인라인 캐싱과 같은 최적화 기법을 적용하였다.


Improve this page