Noticia

Node.js (Nuevo Entorno de Programación).

¿Que es Node.js?

Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web. Fue creado por Ryan Dahl en 2009 y su evolución está apadrinada por la empresa Joyent es una compañía de software y servicios se especializa en la virtualización de aplicaciones y computación en nube , que además tiene contratado a Dahl en plantilla.

Node.js es similar en su propósito a Twisted o Tornado de Python, Perl Object Environment de Perl, React de PHP, libevent o libev de C, EventMachine de Ruby, vibe.d de D y de Java existe Apache MINA, Netty, Akka, Vert.x, Grizzly o Xsocket. Al contrario que la mayoría del código JavaScript, no se ejecuta en un navegador, sino en el servidor. Node.js implementa algunas especificaciones de CommonJS.Node.js incluye un entorno REPL para depuración interactiva.

Versión de un hola mundo de un Servidor HTTP escrito en Node.js:

 

¿Por qué utilizar Node.js?

En primer lugar, para el rendimiento y la escalabilidad. Node es rápido. Eso es un requisito muy importante cuando eres un start-up tratando de hacer que la próxima gran cosa y quiere asegurarse de que puede escalar rápidamente, para hacer frente a una afluencia de usuarios a tu sitio.

Node es también perfecta para ofrecer una API REST – un servicio web que tiene unos parámetros de entrada y pasa un poco de datos de nuevo – la manipulación de datos sencillo y sin una gran cantidad de cálculos.

Node puede manejar miles de estos al mismo tiempo en que PHP acaba de derrumbarse. Beneficios de rendimiento y escalabilidad a un lado, hay una buena probabilidad de que usted ya sabe algo de JavaScript, por lo que ¿por qué molestarse en aprender un nuevo lenguaje como PHP? Y entonces – está la emoción de aprender algo nuevo y relativamente desconocido. Usted sabe cuando algo nuevo llega y entonces llega a ser tan omnipresente que no se arrepiente de su aprendizaje anterior, siempre jugando catchup? No haga  eso esta vez. Node  va a ser grande.

¿Para que sirve Node.js?

Como ha visto hasta ahora, Node está extremadamente bien diseñado para situaciones en que usted esté esperando una gran cantidad de tráfico y donde la lógica del lado del servidor y el procesamiento requeridos, no sean necesariamente grandes antes de responder al cliente. Aquí hay algunos buenos ejemplos en donde Node haría un gran trabajo:


 

  • Una API RESTful

    Un servicio Web que proporcione una API RESTful toma algunos parámetros, los interpreta, arma una respuesta y descarga esa respuesta (usualmente una cantidad relativamente pequeña de texto) de vuelta al usuario. Esta es una situación ideal para Node, porque puede construirse para que maneje decenas de miles de conexiones. Tampoco requiere una gran cantidad de lógica y básicamente sólo busca valores de una base de datos y los reúne como una respuesta. Como la respuesta es una pequeña cantidad de texto y la solicitud entrante es una pequeña cantidad de texto, el volumen de tráfico no es alto, y una máquina probablemente puede manejar las demandas de API de incluso la API de la más ocupada de las empresas.

  • Fila de Twitter

    Piense en una compañía como Twitter que recibe tweets y los escribe en una base de datos. Literalmente hay miles de tweets llegando cada segundo y la base de datos posiblemente no puede seguir el ritmo del número de escrituras necesarias durante los horarios pico de uso. Node se convierte en una pieza clave de la solución a este problema. Como hemos visto, Node puede manejar decenas de miles de tweets entrantes. Luego puede escribirlos rápida/fácilmente en un mecanismo de cola en memoria (memcached, por ejemplo), desde donde otro proceso separado puede escribirlos en la base de datos. El rol de Node en esto es reunir rápidamente el tweet y pasar esta información hacia otro proceso responsable de escribirlo. Imagine otro diseño — un servidor PHP normal que intente manejar escrituras en la base de datos misma — cada tweet podría causar una pequeña demora mientras se escribe en la base de datos, dado que el llamado de base de datos estaría bloqueando. Una máquina con este diseño sólo podría manejar 2.000 tweets entrantes por segundo, debido a la latencia de base de datos. A un millón de tweets por segundo, usted estaría hablando de 500 servidores. Node, en cambio, maneja cada conexión y no causa bloqueo, permitiéndole capturar tantos tweets como se le puedan arrojar. Una máquina nodo capaz de manejar 50.000 tweets por segundo, y usted estaría hablando de sólo 20 servidores.

  • Estadísticas de videojuegos

    Si usted alguna vez jugó un juego como Call of Duty on-line, algunas cosas le habrán llamado la atención inmediatamente cuando observó las estadísticas del juego, principalmente el hecho de que deben estar rastreando toneladas de información sobre el juego para poder producir tal nivel de estadísticas. Luego, multiplique esto por los millones de personas que lo juegan en cualquier momento, y tendrá una idea de la inmensa cantidad de información que se genera con bastante rapidez. Node es una buena solución para este escenario, porque puede capturar los datos que están generando los juegos, hacer un mínimo de consolidación con ellos y luego ponerlos en una fila para escribirlos en una base de datos. Parecería algo tonto dedicar todo un servidor a rastrear cuántas balas disparan las personas en los juegos, lo cual podría ser el límite útil si usted utilizara un servidor como Apache, pero parecería menos tonto si en lugar de ello usted pudiera dedicar un solo servidor a rastrear casi todas las estadísticas de un juego, como usted puede llegar a hacerlo con un servidor que ejecute Node.

¿Quién usa Node.js?

Existen varios ejemplos de sitios y empresas que ya están usando Node en sitios en producción y algunos casos de éxito que son realmente representativos. Quizás el más comentando sea el de LinkedIn, la plataforma de contacto entre profesionales a modo de red social. Al pasar a NodeJS, LindkedIn ha reducido sensiblemente el número de servidores que tenían en funcionamiento para dar servicio a sus usuarios, específicamente de 30 servidores a 3.

Lo que sí queda claro es que NodeJS tiene un footprint de memoria menor. Es decir, los procesos de NodeJs ocupan niveles de memoria sensiblemente menores que los de otros lenguajes, por lo que los requisitos de servidor para atender al mismo número de usuarios son menores. Por aproximar algo, podríamos llegar a tener 1.000 usuarios conectados a la vez y el proceso de NodeJS ocuparía solamente 5 MB de memoria. Al final, todo esto se traduce en que empresas grandes pueden tener un ahorro importante en costes de infraestructura.

Otros ejemplos, además de LinkedIn son eBay, Microsoft, empresas dedicadas a hosting como Nodester o Nodejitsu, redes sociales como Geekli.st, y muchos más. Podemos obtener más referencias acerca de casos de uso y empresas que implementan NodeJS en el enlace nodeknockout.com que es un hackaton donde se realizaron aplicaciones en Node.

Representantes de Google, Yahoo y Mozilla indican como utilizan Node.js en cada empresa. Todos dieron a conocer que usan Express como framework para el desarrollo de sus aplicaciones o servicios.

Yahoo

En el año 2010 Yahoo inicia el desarrollo de aplicaciones con Node.js, Bruno Fernandez vicepresidente de plataformas indica que estuvieron buscando la forma de ejecutar JavaScript en el servidor y hace referencia a su tecnología YQL, pero cuando encontraron a Node dice que “Nuestros desarrolladores lo usaban para la carga de archivos”. Con esto en mente dedicaron invertir más tiempo con esta tecnología y la usaron por mas de 12 meses en nuevos proyectos.

Al final Yahoo libera Cocktails un proyecto con el objetivo de eliminar los escenarios multilenguaje lo cual complica a los desarrolladores. Implementan Cocktail y Mojito los cuales utilizan JavaScript y Node ejecutandose en el lado del cliente y el servidor.

Google

Al preguntar como Google usa Node muchas de las ocasiones se obtiene la misma respuesta. Son muy reservados al hablar de este tema pero poco a poco develan que están muy interesados e involucran a Node en proyectos como Dart, un nuevo lenguaje estructurado para programación Web.

Google ha desarrollado muchas aplicaciones que usan JavaScript, un claro ejemplo es Gmail con 450000 lines de código en JavaScript. De aqui que Google busca un nuevo lenguaje para aplicaciones Web.

Mozilla

Mark Mayo uno de los principales ingenieros en Mozilla indica que llevan utilizándolo por un buen tiempo. “Concretamente nos decidimos por Node debido a dos razones: El bajo consumo de memoria, y la segunda razón es las capacidades de criptografía con JavaScript”. Mayo detalla que se debe dejar de nombrar a Node como una nueva tecnología e inmadura, Node ya se encuentra en un punto estable.

Existe un punto donde el “Debug” es invisible y no se puede saber lo que Node hace todo el tiempo lo cual es algo importante y se debe trabajar en ello. En cuanto al equipo dentro de Mozilla que trabaja con Node se encuentra reuniendo todos los repositorios de JavaScript para que no se requieran dependencias externas.

Sobre Node.js

Diseñador: Ryan Lienhart Dahl

Lanzamiento inicial: 27 de mayo de 2009

Última versión estable: 0.12.2
31 de marzo de 2015

Última versión en pruebas: 0.11.15
20 de enero de 2015

Sistema operativos: Windows, Mac OS X, Linux, Solaris, FreeBSD, OpenBSD, webOS

Licencia: Licencia MIT

Estado actual: Activo

Más tecnologías y frameworks basados en Node.js

No todo termina con NodeJS, en la actualidad existen diversos proyectos interesantes que basan su funcionamiento en Node y que nos dan una idea de la madurez que está adquiriendo esta plataforma. Es el caso de proyectos como:

Meteor JS: Un framework Open Source para crear aplicaciones web rápidamente, basado en programación con "Javascript puro" que se ejecuta sobre el motor de Node.JS.

Grunt: Un conjunto de herramientas que te ayudan como desarrollador web Javascript. Minifica archivos, los verifica, los organiza, etc. Todo basado en línea de comandos.

Yeoman: Otra herramienta, esta vez basada en Grunt, que todavía ofrece más utilidades que ayudan a simplificar diversas tareas en la creación de proyectos, basados en muchas otras librerías y frameworks habituales como Bootstrap, BackboneJS...

Estos son algunos ejemplos, entre muchos otros que hay en Internet. Son programas basados en Node que nos facilitan labores de desarrollo de aplicaciones web.

Comunidad Node.js

Actualmente hay comunidad desarrolladores de Node.js que se comunican a través de grupos de discusión, (nodejs y nodejs-dev y el canal IRC #node.js en freenode). La comunidad se reúne en NodeConf, una convención de desarrolladores centrada en Node.js.

Fuentes de Informacion

Node.js Hispano
http://www.nodehispano.com/2012/05/como-google-mozilla-y-yahoo-utilizan-node-js-nodejs/

Introducción a NodeJS
http://www.desarrolloweb.com/articulos/intro-nodejs.html

StrongLoop
https://strongloop.com/strongblog/node-js-is-faster-than-java/

El Libro para Principiantes en Node.js
http://www.nodebeginner.org/index-es.html

Node.js
http://es.wikipedia.org/wiki/Node.js

Soloelectronicos - Proyectos y circuitos actuales que todos podemos implementar
http://soloelectronicos.com/2014/05/27/que-es-y-para-que-sirve-node-js/

Comparte esta nota