nodejs ¿porque usarlo?

13
NODE.JS Por Rodolfo Vera

Upload: rodo-vera

Post on 17-Jul-2016

16 views

Category:

Documents


1 download

DESCRIPTION

NodeJs ¿porque usarlo? Ventajas, Desventajas, Comparación

TRANSCRIPT

Page 1: NodeJs ¿porque usarlo?

NODE.JS

Por Rodolfo Vera

Page 2: NodeJs ¿porque usarlo?

Justificación• Node.js es la tecnología mas reciente en

Silicon Valley. • Actualmente utilizada por Microsoft,

VMWare, Ebay, Yahoo, y muchas otras empresas de tecnología.

• Se escucha sobre Node.js:– aplicaciones “en tiempo real” o “altamente

escalables”. – es Javascript para el lado del servidor (por

qué?, para qué?)– en qué momento usarlo ni cómo hacerlo

Page 3: NodeJs ¿porque usarlo?

Problema• La web se ha vuelto más interactiva. Los

usuarios de todo el mundo quieren interactuar con otros usuarios, y quieren hacerlo en tiempo real.

• Por ejemplo, chatear, jugar, actualizar redes sociales, son actividades que requieren de una comunicación en tiempo real entre usuarios, cliente y servidores a través de la web.

• Y algo más importante, esta comunicación en tiempo real debe ocurrir a gran escala, soportando cientos, miles, y hasta millones de usuarios.

Page 4: NodeJs ¿porque usarlo?

Solución• Lo que necesitamos es una comunicación en

tiempo real entre clientes y servidores.• HTTP no fue construido para un gran número de

clientes tratando de conectarse simultáneamente a un servidor, lo cual puede ser lento e ineficiente.

• Para habilitar la comunicación en tiempo real escalable, los servidores deben tener la capacidad de enviar datos a los clientes, en lugar del pesado modelo de petición-respuesta de HTTP.

• También necesitamos estar seguros que el envío de datos trabaje de una forma escalable, mantenible, y usable desde una perspectiva de desarrollo de software

Page 5: NodeJs ¿porque usarlo?

Alternativa de Solución: Node.js

• ¿Qué és?– es un entorno Javascript del lado del

servidor, basado en eventos. Node ejecuta javascript utilizando el motor V81, 

– Esto permite a Node proporcionarr un entorno de ejecución del lado del servidor que compila y ejecuta javascript rápidamente

– Es código abierto, y se ejecuta en Mac OS X, Windows y Linux

1 desarrollado por Google para uso de su navegador Chrome

Page 6: NodeJs ¿porque usarlo?

Node usa JS• JS actualmente es un lenguaje de programación

totalmente, tan capaz como cualquier otro lenguaje tradicional como C++, Ruby o Java.

• Además JS tiene la ventaja de poseer un excelente modelo de eventos, ideal para la programación asíncrona.

• Javascript también es un lenguaje omnipresente, conocido por millones de desarrolladores. Esto reduce la curva de aprendizaje de Node.js, ya que la mayoría de los desarrolladores no tendrán que aprender un nuevo lenguaje para empezar a construir aplicaciones usando Node.js.

Page 7: NodeJs ¿porque usarlo?

Problema de conexión (memoria) con programación Asíncrona Actual• El enfoque tradicional para generar código

asíncrono es engorroso y crea un espacio en memoria no trivial para un gran número de clientes(cada cliente genera un hilo, y el uso de memoria de cada uno se suma).

• Para evitar esta ineficiencia, así como la dificultad conocida de las aplicaciones basadas en hilos, (programming threaded applications), se opta por node.js por lo siguiente:

Page 8: NodeJs ¿porque usarlo?

Solución con Node.js

Page 9: NodeJs ¿porque usarlo?

Módulos ExternosPor ejemplo:• Socket.io (envío y recepción de

sockets, TCP)• Express (gestiona el servidor mas

simple)• Jade (Mejorar sintáxis de HTML)• MongoDB (Base de Datos orientada a

documentos(no registros))• Node-static (Servidores para archivos

estáticos)

Page 10: NodeJs ¿porque usarlo?

Servidor: Apache o Node.js?Lo mas importante de entender es que ninguno es mejor que otro, depende del caso en el que se quiera usar- Apache generalemente usa PHP, lo cual es muy fácil para

principiantes y está construído para la Web. Node js no fué construído originalemnte para ella.

• Apache y PHP son antiguos y estables. Hay mucho soporte. Node Js es relativamente nuevo y no está diseñado específicamente para desarrollo de aplicaciones Web. Web apps basadas en http son un uso de Node.js

• Famosos cms(Sistema Gestor de Contenidos) (Wordpress, Drupal, Joomla etc.) y Frameworks de desarrollo (Yii, Laravel, Code Ignitor, Cake PHP) están construídos en PHP. Muy útiles para el desarrollo y organización de código. Node Js tiene Express, socket, jade, etc. Pero son nuevos y no hay mucho soporte.

Page 11: NodeJs ¿porque usarlo?

Servidor: Apache o Node.js?• Apache está basado en hilos, es decir, cada petición es

manejada por hilos o procesos separados (dependiendo de la configuración), lo cuál significa que si el proceso espera por la entrada/salida, todo el hilo es bloqueado. Node JS tiene I/O asincronas. Cada instancia nodejs se ejecuta en un hilo y debido a su naturaleza asíncrona, puede manejar muchas mas peticiones que Apache.

• Apache está basado en hilos, así que si un problema ocurre, sólo el hilo en particular será el que caiga (“crash”) y no los demás. Node Js maneja múltiples peticiones usando un sólo hilo, entonces… =/ .

• Apache  no bloquea peticiones cuando tiene una petición de CPU intensivo. NodeJs bloquea está petición intensiva CPU hasta que termine. Usualmente se delega esta responsabilidad a otro proceso en Nodejs.

Page 12: NodeJs ¿porque usarlo?

Servidor: Apache o Node.js?• PHP no soporta web sockets nativamente.

Hay que implementar librerías, pero un número decente de conexiones web sockets en tiempo real, se comerá todos los recursos del servidor.  

• NodeJs es el candidato perfecto para la comunicación en tiempo real cominado con Socket.IO  para obtener un buen servidor escalable junto con una comunicación de regreso (servidor->envía) . De peso liviano y puede incrementarse por que todo corre en un sólo hilo.

Page 13: NodeJs ¿porque usarlo?

Bibliografía• http://nodejs.org/• “¿Porque Node.js?”,

http://mocionsoft.com/blog/porque-usamos-node-js/

• “Node.js Vs Apache”, http://www.quora.com/What-are-the-pros-and-cons-of-Node-js-versus-Apache-web-server