Slide 1

Slide 1 text

ESTRATEGIAS DE ESCALAMIENTO HORIZONTAL CON NODE.JS JÉSSICA FÉLIX (@JESSILYNEH)

Slide 2

Slide 2 text

Introducción a la escalabilidad @jessilyneh Es la capacidad de manejar una parte cada vez mayor del trabajo de manera uniforme o de estar preparado para crecer.

Slide 3

Slide 3 text

Introducción a la escalabilidad @jessilyneh Es la capacidad de manejar una parte cada vez mayor del trabajo de manera uniforme o de estar preparado para crecer. flexible tolerante a fallos Desempeño consistente baja latencia de respuesta

Slide 4

Slide 4 text

El cubo de escala @jessilyneh Este cubo se describe en el libro de Martin Abbott y Michael Fisher, The Art of Scalability (Addison-Wesley, 2015).

Slide 5

Slide 5 text

El cubo de escala @jessilyneh Este cubo se describe en el libro de Martin Abbott y Michael Fisher, The Art of Scalability (Addison-Wesley, 2015).

Slide 6

Slide 6 text

El cubo de escala @jessilyneh Este cubo se describe en el libro de Martin Abbott y Michael Fisher, The Art of Scalability (Addison-Wesley, 2015).

Slide 7

Slide 7 text

El cubo de escala @jessilyneh Este cubo se describe en el libro de Martin Abbott y Michael Fisher, The Art of Scalability (Addison-Wesley, 2015).

Slide 8

Slide 8 text

Escalado vertical y escalado horizontal @jessilyneh Agregar más máquinas o nodos Agregar más potencia a los recursos existentes

Slide 9

Slide 9 text

Escalado vertical y escalado horizontal @jessilyneh Agregar más máquinas o nodos Agregar más potencia a los recursos existentes

Slide 10

Slide 10 text

@jessilyneh La carga de trabajo es “menor” o más predecible, como sitios de comercio electrónico o blogs. Escalabilidad vertical

Slide 11

Slide 11 text

@jessilyneh Escalabilidad vertical Hay un límite en la cantidad de recursos que se pueden agregar a una sola máquina. La carga de trabajo es “menor” o más predecible, como sitios de comercio electrónico o blogs.

Slide 12

Slide 12 text

@jessilyneh Escalabilidad vertical Hay un límite en la cantidad de recursos que se pueden agregar a una sola máquina. Si la máquina falla, es posible que todo el sistema no esté disponible. La carga de trabajo es “menor” o más predecible, como sitios de comercio electrónico o blogs.

Slide 13

Slide 13 text

@jessilyneh Escalabilidad horizontal Escenarios con un gran número de solicitudes simultáneas, como juegos online, aplicaciones de mensajería y redes sociales.

Slide 14

Slide 14 text

@jessilyneh Escalabilidad horizontal Escenarios con un gran número de solicitudes simultáneas, como juegos online, aplicaciones de mensajería y redes sociales. La coherencia de los datos puede ser un desafío

Slide 15

Slide 15 text

@jessilyneh Escalabilidad horizontal Escenarios con un gran número de solicitudes simultáneas, como juegos online, aplicaciones de mensajería y redes sociales. La coherencia de los datos puede ser un desafío Puede aumentar la latencia y la sobrecarga de la red

Slide 16

Slide 16 text

Requisitos de escalabilidad Arquitectura que permite la adición de recursos. Módulos independientes y débilmente acoplados. Procesos flexibles para hacer frente a la variación de carga Escalabilidad geográfica Tolerancia a fallos, recuperación rápida, mantenimiento de la integridad estructural y seguridad de los datos. @jessilyneh

Slide 17

Slide 17 text

Patrones arquitectónicos de software: @jessilyneh Event-driven Microservicios Modular N-layers

Slide 18

Slide 18 text

“El alto rendimiento y la escalabilidad pueden no ser requisitos de calidad prioritarios para muchos de los sistemas que construimos. Pero a veces, impulsado por acontecimientos externos inesperados como el éxito, la ampliación se vuelve necesaria. Esto se convierte en un punto de inflexión en el que las decisiones de diseño que tenían sentido bajo cargas más ligeras se convierten automáticamente en deuda técnica”. @jessilyneh Ian Gordon, Seis reglas generales para escalar arquitecturas de software-2020

Slide 19

Slide 19 text

¿Por qué utilizar Node.js para aplicaciones escalables? @jessilyneh

Slide 20

Slide 20 text

Sin bloqueo @jessilyneh https://www.educative.io/answers/what-is-the-event-driven-non-blocking-io-model-in-node-js

Slide 21

Slide 21 text

Event-driven (arquitectura basada en eventos) @jessilyneh https://www.educative.io/answers/what-is-the-event-driven-non-blocking-io-model-in-node-js https://medium.com/swlh/non-blocking-event-driven-model-of-node-js-explained-using-real-world-analogies-4561cc4a7e52

Slide 22

Slide 22 text

single-threaded event loop architecture @jessilyneh https://medium.com/preezma/node-js-event-loop-architecture-go-deeper-node-core-c96b4cec7aa4

Slide 23

Slide 23 text

Worker threads @jessilyneh Un proceso Múltiples threads Un event loop por thread Una instancia de JS Engine por thread Una instancia de Node.js por thread https://nodesource.com/blog/worker-threads-nodejs/

Slide 24

Slide 24 text

Suponiendo que la aplicación sigue el patrón arquitectónico más apropiado para los requisitos de escalabilidad, ¡vamos a las estrategias! @jessilyneh Cloning Clustering Decomposing Spliting Broadcasting Messages Load balancing Caching Database Optimization

Slide 25

Slide 25 text

Cloning @jessilyneh www.pioneras.co Load Balancer Instancia 1 Instancia 2 Instancia 3 Cliente

Slide 26

Slide 26 text

Fork( ) @jessilyneh Ejemplo tomado de “Advanced Node.js: Scaling Applications”, de Alex Banks

Slide 27

Slide 27 text

Clustering @jessilyneh https://www.infoq.com/br/articles/nodejs-utilizando-modulo-de-cluster/

Slide 28

Slide 28 text

Data Partitioning @jessilyneh https://federicomete.medium.com/database-partitioning-2c00da4ffd0b

Slide 29

Slide 29 text

Benchmark @jessilyneh “Trate de resistir la tentación de aumentar la CPU de su servicio. En su lugar, aumente el número de instancias. Esto mantendrá el costo de su aplicación bajo control y también aumentará su resiliencia.”. https://github.com/HarryEMartland/node-scaling-experiment

Slide 30

Slide 30 text

Consejos adicionales - Libros @jessilyneh Cree aplicaciones escalables con Redis y Node.js Josué Johanán Implementando Node.js Sandro Pasquali

Slide 31

Slide 31 text

Gracias <3 in/jessilyneh/ @jessilyneh