2011년 5월 20일 금요일

[node.js] 신기술이 뭔가 체험해 봤다 -_-

최근들어 node.js가 화제가 되고 있다. 계속 이어지고 있다고 해야되나. 새로운 관련 모듈이나 프레임웍이 나올 때 마다 찬양 일색이다. 도데체 뭐길래 그렇게 뜨고 있는 걸까.

딱히 할 일도 없고 해서 (- _ -) 한번 설치해서 뭔가를 돌려봤다.

설치


http://nodejs.org/

여기서 Download메뉴를 통해 타르볼을 받거나 저장소 소스를 긁어서 빌드하면 되는 듯. 공식사이트가 깔끔한게 너무 마음에 든다.

맥포트에 있나 싶어 검색해 봤더니 역시나 있다.
sudo port install nodejs

돌려보기


공식 홈페이지에 가장 첫 예제코드. 전통적으로 첫 코드 답게 Hello World를 찍어주는 서버를 만드는 코드다.
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'ContentType': 'text/plain'});
    res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at 127.0.0.1:1337/');
실행도 시켜 보고...
node example.js
웹브라우저로 http://127.0.0.1:1337/ 로 접속해 보니 잘 돌아간다.
별 다른 프레임웍 없이 이 정도까지 간단하게 된다는 건 칭찬해 줄 만 하다.

그래서 뭐 대단한 거 있나?


node.js의 이름에서 .js라는 명칭은 javascript를 연상시키는 이름. 딱 맞다. 'V8 JavaScript 언어를 기반으로 만들어진 모듈 및 프레임웍 덩어리' 라는게 node.js를 설명하는 가장 간단한 용어 같다.

node.js가 뜬 이유는 웹 서버를 구축하는데 비동기(asynchronous) 구조를 가지게 하는게 가장 큰 특징이었는데, 알고보면 그다지 대단한게 아니다. 비동기 모델은 예전부터 이미 사용되고 있었다. (특히 POSIX의 select 시스템을 안다면 -_-). 세월이 흐르면서 코드 디자인 상으로 볼 때 동기(synchronous) 모델에 비해 코드가 직관적이지 않다는 단점이 있어서 오히려 멀티스레드를 이용한 동기화 모델이 크게 발달하게 되었는데... 이제는 비동기 모델을 띄워주고 있다.

node.js의 홈페이지 에서도 설명하고 있지만 비동기 모델이 가지는 장점은 코드의 가독성과는 전혀 딴판인 이야기다. 멀티스레드 혹은 멀티프로세스의 전통적인 서버 구조에 비해 비동기형 이벤트 기반의 시스템이 가지는 이점 말이다. 설명할 것도 없다. 빠르다는 것이지. 이벤트가 없으면 서버가 아예 sleep 상태가 되니 서버가 편해지겠구나. ;;

웹소켓이니 뭐니 일단 좋아보이는 기술을 사용할 수 있다는 것도 장점이긴 하겠지만 기존 request and receive 기반 구조와 차이가 있는건 아니니 아키텍쳐 면에서는 대단한 신기술은 전혀 발견할 수 없다.

그냥 JavaScript 언어 기반이라는게 뜨게 된 가장 큰 원인이 아닐까. 내 주관적으로 꼽자면, 비동기 모델을 아주 쉽고 간편하게 만들 수 있다는 게 가장 큰 의의인 것 같지만...

댓글 없음 :