Node.js, javascript en servidor
Desde hace unos meses, estamos viendo el rápido crecimiento de javascript en muchísimos entornos de desarrollo. Se nos agolpan en la cabeza un montón de conceptos nuevos sin saber qué hacer con ellos y node.js es uno de ellos.
Todo el mundo habla maravillas de él pero … ¿Será tan bueno como dicen? ¿Tendré que empezar a usarlo en mis desarrollos? ¿Qué es exactamente?
Qué es node.js
Es un entorno de desarrollo Javascript del lado del servidor, node.js utiliza una arquitectura asíncrona basada en eventos con el objetivo de construir aplicacones de red rápidas y escalables.
Node ejecuta javascript utilizando el motor V8, desarrollado por Google para uso de su navegador Chrome. Aprovechando el motor V8, node.js es capaz de proporcionar un entorno de ejecución del lado del servidor que compila y ejecuta javascript de forma muy rápida.
Empezamos con el primer problema …. ¿javascript a nivel de servidor?
Estamos acostumbrados a ver Javascript siempre en el lado del cliente como parte del navegador para dar más dinamismo a las webs y mejorar su aspecto.
Node.js nos propone usar javascript en el lado del servidor, aprovechándose de su modelo orientado a eventos.
¿Qué problemas soluciona node.js?
Node.js nos resuelve problemas de escalabilidad y acceso en tiempo real.
Pongamos un ejemplo que nos puede pasar a cada uno de nosotros.
Imaginaos un proyecto web desarrollado en Java y desplegado en Apache Tomcat. Por cada usuario que acceda a la web, se generará un nuevo hilo de conexión con su consumo de memoria correspondiente. Con 8GB de Ram podriamos atender a unos 4000 usuarios a la vez. Si necesitamos dar soporte a más usuarios, tendremos que desembolsar más inversión en servidores.
Node.js mejora la concurrencia de acceso a servidor mediante su Bucle de Eventos. Cada usuario que intente conectarse a nuestra web, no generará un nuevo hilo, sino que disparará un nuevo evento dentro del Bucle de Eventos (Event Loop)
Se realiza una conexión — ¡evento!
Se reciben datos a través de la conexión — ¡evento!
Se dejan de recibir datos por la conexión — ¡evento!
Podemos ver las ventajas de usar node.js en un ejemplo real como Linkedin. Migraron el backend a Node.js consiguiendo reducir de 30 servidores a tan solo 3 servidores.
Proyectos reales usando Node.js
Node.js está creciendo a un ritmo increible y ya se empiezan a ver proyectos reales
- Sincronizacion de moviles en un concierto de rock: En este video podeis ver cómo se han sincronizado los moviles de todos los asistentes con la musica de un concierto (https://www.youtube.com/watch?v=5W7vdec_U-U)
- Noduino : Aplicación web que permite interactuar con Arduino (http://semu.github.io/noduino)
- Logio: Monitor de logs en el navegador en tiempo real (http://logio.org)
- Hyro: Editor Html5 en tiempo real (http://jawerty.github.io/Hyro/)
Si quereis trastear vosotros mismos con node.js, este es el link de descarga
Descarga node.js: http://nodejs.org/
PORQUE HABLAS DEL CONSUMO DE RECURSOS COMO SI JAVA FUERA EL UNICO CULPABLE QUE CONSUME . TE RECUERDO QUE HAY OTRAS SOLUCIONES Y LENGUAJES, NO COMPARES CON JAVA YA QUE JAVA ES EL UNICO QUE A DADO SOLUCION A ESTO CON CLUSTER LIBRES.