Tag browsing: scalability

node.js 101

August 10th, 2010

node.js es el enésimo intento de llevar JavaScript del lado del servidor, pero al parecer esta vez a base de mucho hype y una arquitectura bien diseñada, la idea esta traccionando y haciendo que el numero de seguidores crezca día a día.

Como dije antes esta idea no es nueva, ya desde 1996 Netscape trataba de meter JavaScript en el server side con su producto LiveWire, el tiempo paso y muchos proyectos intentaron en vano captar la atención, luego llego CommonJS, la cual es una especificación que trata de crear un API estándar para el manejo de las funcionas mas comunes y necesarias para poder correr JavaScript fuera del ámbito del browser, CommonJS puso nuevamente en el radar la idea de usar JavaScript en el server side y empezaron a florecer gran cantidad de implementaciones compatibles con ella, una de estas es node.js.

node.js como reza su lema “Evented I/O for V8 JavaScript” se apoya en un arquitectura orientada a eventos y en el motor V8, para lograr una alta escalabilidad y una gran velocidad de ejecución, node.js abandona el modelo tradicional usado por los servidores web en los cuales por cada request se crea un thread/process y pasa a un modelo de event loop en donde se puede acceder a todo usando eventos y callbacks, esta idea tampoco es nueva, en Ruby tenemos a EventMachine y en Python a Twisted haciendo algo parecido desde hace un tiempo y de los cuales node.js a tomado debida nota para tomar lo mejor de ellos, en node.js todas las operaciones de I/O se ejecutan asincronicamente, lo que permite al servidor seguir aceptando requests mientras las operaciones de I/O se completan, lo cual posibilita crear aplicaciones rápidas y escalables muy fácilmente.

node.js corre sobre cualquier OS *nix, su instalación es muy sencilla y tanto en el sitio oficial como en el repositorio de github donde se aloja el proyecto hay información al respecto.

Antes de terminar pasemos al “hello world” de rigor.

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Worldn');
}).listen(3003);

En la primera linea se carga el modulo http, luego creamos el server http el cual queda a la espera de las requests en el port 3000, cuando una request llega, este responde enviando las http headers, un status code 200 y el mensaje “Hello World”, para luego finalizar la conexión.

node.js - Hello World

Para finalizar les dejo el vídeo de la presentación que dio Ryan Dahl (su creador) hace unos meses en las oficinas de Google, la cual es un buen punto de partida para interiorizarse mas en la arquitectura y filosofía de node.js.

Development , , No response