목록

node.js

Home

Node.js란 무엇인가?

# 핵심 요약
1. 서버측에서 동작하는 자바스크립트 엔진
2. 이벤트 기반으로 하는 비동기식 네트워크 처리

# node.js ?

node.js란 처음 봤을때는 확장자가 js인 파일 같아서 자칫 JavaScript로 된 라이브러리라고 생각하도록 속임수(?!)를 쓰고 있으나 실상 알고보면 우리가 일반적으로 알고 있는 JavaScript와는 정의에는 조금 모순을 띄고 있는 녀석이다. JavaScript라 하면 우리는 일반적으로 클라이언트의 브라우져에서 동작하는 스크립트 언어로 알고 있을텐데 node.js란 이 녀석은 충격적이게도 이와는 상반되게 Server측에서 사용할 수 있는 JavaScript라는 것이었다.

# 배경사

예전에는 자바스크립트가 브라우져에서 성능상의 문제로 많이 사용하는 것을 배제하는 추세를 보인적이 있으나 오늘날의 컴퓨터 성능과 스크립트를 실행하는 엔진의 성능이 향상되면서 자바스크립트를 다른 분야의 언어로 활용하자는 연구가 많아졌고 획기적인 자바스크립트 성능 향상을 자랑했던 구글의 크롬 브라우져의 자바스크립트 엔진인 V8과 비슷한 연구로 만들어지고 있었던 CommonJS프로젝트와 만나면서 Node.js가 탄생하게되었다

V8엔진

CommonJS

# 특징

자바 스크립트를 기반
- 상대적으로 다른 프로그래밍 언어들에 비해 웹페이지의 요소를 제어하는 수준밖에 되지 않는다하여 한 때는 프로그래밍 언어 대접보다는 그저 웹을 다루는 스크립트로 취급받기도 한 시절도 있었지만 그 만큼 다른 언어를 배우기 위해 투자하는 노력과 시간에 비해 빠르게 쉽게 습득할 수 있다는 것도 큰 장점이다.
이벤트 기반의 비동기식 네트워크 처리
- 기존의 대다수의 서버는 접속하면 그 사용자 만큼의 쓰레드를 생성하여 작업을 처리하는 스레드 기반의 동기식 네트워크 처리였다. 이 방식의 최대 단점은 많은 사용자가 접속하여 동시에 여러 작업을 요청한다면 메모리 사용이 폭팔적으로 증가하여 많은 사용자의 처리에는 부적하다는 단점이 있었으나 node.js는 단일 스레드를 사용하여 메모리 사용을 줄이고 사용자의 요청이 있을때만(이벤트) 작업을 처리하여 응답하는 방식을 사용하여 수억명의 사용자의 접속의 처리를 받을 수 있는 특징을 지니고 있다.
유망한 장래
- node.js는 아직 신생 개발 환경이고 버전 1.0도 발표되지 않았지만 (2013년 6월 시점) 많은 개발에 활용되고 있으며 배경사에 있듯 크롬 브라우져에 탑재된 V8엔진을 사용하기 때문에 백그라운드에는 구글이라는 강력한 브랜드가 자리잡고 있기에 장래가 밝다고 전망하고 있다.