introduccion a node.js
TRANSCRIPT
![Page 1: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/1.jpg)
Introducción a Node.js
Rodolfo Finochietti@rodolfof
![Page 2: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/2.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Evolución de Internet
Internet of Content
• Web 1.0• Web-sites• Search• eMail• HTML
Internet of Services
• Web 2.0• eCommerce /
eServices• Web Services
Internet of People
• Social Media• Mobile enablement• HTML 5• REST
Internet of Things
• “Cosas” respresentadas semanticamente en Internet
• Digital Business
![Page 3: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/3.jpg)
Successful ideas by talented people.Successful ideas by talented people.
![Page 4: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/4.jpg)
Real-Time al extremo
![Page 5: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/5.jpg)
Successful ideas by talented people.
¿Estamos preparados?
Dolores que nos cuentan… Mucha interdependencia entre funcionalidades (tight-coupling) Principalmente en sistemas “monolíticos” También se da entre servicios y base de datos
Infraestructuras difíciles de escalar Equipos con muchos focos de atención
![Page 6: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/6.jpg)
Successful ideas by talented people.
Aplicaciones Web Aplicaciones Desktop
Backend Servicios
DB
![Page 7: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/7.jpg)
El enfoque de Microservicios
![Page 8: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/8.jpg)
Successful ideas by talented people.
Microservicios Qué es una arquitectura de microservicios… No son “pequeños web services” (no es una cuestión de tamaño… solamente)
Es un estilo de arquitectura que describe una forma de diseñar aplicaciones como colecciones de servicios (“producto”) que se despliegan y evolucionan de forma independiente
![Page 9: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/9.jpg)
Successful ideas by talented people.
Microservicios Objetivos principales… Garantizar que cada producto siempre esté en funcionamiento
Entregar nuevas funcionalidades en forma constante (Continuous Delivery) Reduciendo interdependencias con componentes externos Maximizando la automatización de pruebas y procesos de despliegue
Alineamiento de la estructura organizativa a “productos” Equipos multi-disciplinarios
![Page 10: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/10.jpg)
Successful ideas by talented people.
Microservicios Características Foco en el “producto” como un servicio que debe estar en constante funcionamiento
Las funcionalidades ejecutan en diferentes procesos
DB/Modelo propio a cada producto/servicio Organización gira entorno a productos que brindan capacidades de negocios “Products, not projects”
![Page 11: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/11.jpg)
Successful ideas by talented people.
![Page 12: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/12.jpg)
Node.jsServer-side JavaScript
![Page 13: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/13.jpg)
Evolución
![Page 14: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/14.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Node.js El objetivo de Node.js es proveer un plataforma sencilla para construir software de red altamente escalable Node.js utiliza JavaScript en el servidor haciendo que la comunicaciones entre el cliente y el servidor sea en el mismo lenguaje (reduciendo la fricción y el context switching).
Los servidores tradicionalmente están basados en threads pools, Node.js en cambio esta basado en Eventos. Node.js sirve cada request en un Event Loop que puede atender muchas conexiones concurrentes.
![Page 15: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/15.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Blocking vs. Non-Blocking
![Page 16: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/16.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Blocking vs. Non-Blocking
![Page 17: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/17.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Platform Number of request per second
PHP (via Apache) 3187,27Static (via Apache) 2966,51Node.js 5569,30
Node.js vs Apache
![Page 18: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/18.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Node.js Core V8: Google C++ JavaScript Engine Libev: Event Loop LibEio: Async I/O LibUv: Abstracción para libeio, libev, etc. Standard Library 40% es JS
60% es C++
![Page 19: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/19.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Ecosistema Node.js solo procesa request’s y response’s HTTP
El resto se hace con módulos externos La idea es un núcleo pequeño y robusto enfocado en la operación de red, la ejecución de JavaScript, y la extensibilidad La idea de Microservicios llevada a la plataforma de desarrollo npm: la herramienta de distribución de paquetes
Algunas librerías útiles: Express Connect Socket.io Loopback
![Page 20: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/20.jpg)
Demo
![Page 21: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/21.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Cuando usar Node.js Node.js es recomendado pata crear servicios real-time que requieran alta concurrencia y no necesiten uso intensivo de CPU
El uso de JavaScript en todo el ciclo de desarrollo reduce la fricción, y facilita el cambio
![Page 22: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/22.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Despliegue Node.js es una herramienta de línea de comandos En entornos productivos es recomendado que correr detrás de Proxies
para aumentar la seguridad, y facilitar la operación (nginx) Es multiplataforma, pueda correr en entornos Linux y Windows
Preparada para Cloud Todos los vendedores de Cloud ofrecen configuraciones para correr
Node.js 100% compatible con Software Containers (Docker)
![Page 23: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/23.jpg)
Successful ideas by talented people.Successful ideas by talented people.
Quienes usan Node.js
https://github.com/nodejs/node-v0.x-archive/wiki/Projects,-Applications,-and-Companies-Using-Node
![Page 24: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/24.jpg)
Preguntas…
Buenos Aires, Argentina+54 (11) 4982 [email protected]
Santiago de Chile, Chile+56 (2) 2231 [email protected]
Bogotá, Colombia+57 (1) 750 [email protected]
Distrito Federal, México+52 (55) 5093 [email protected]
Redmond Washington, USA+1 (206) 427 [email protected]
Montevideo, Uruguay+59 897 974 [email protected]
![Page 25: Introduccion a Node.js](https://reader035.vdocuments.us/reader035/viewer/2022070522/58eeeeb41a28ab44598b464f/html5/thumbnails/25.jpg)
¡Gracias!
Buenos Aires, Argentina+54 (11) 4982 [email protected]
Santiago de Chile, Chile+56 (2) 2231 [email protected]
Bogotá, Colombia+57 (1) 750 [email protected]
Distrito Federal, México+52 (55) 5093 [email protected]
Redmond Washington, USA+1 (206) 427 [email protected]
Montevideo, Uruguay+59 897 974 [email protected]