Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Estrategias de escalamiento horizontal con Node.js

Jessilyneh
November 19, 2023

Estrategias de escalamiento horizontal con Node.js

Charla presentada em Pioneeras Conf Extended.

Aprenda estrategias para distribuir la carga de trabajo en varios servidores de Node.js, maximizando la capacidad para atender una gran cantidad de solicitudes. Aprenderá técnicas de equilibrio de carga, partición de datos y el uso de clústeres para lograr un mejor rendimiento. El objetivo es ayudarlo a enfrentar los desafíos de crecimiento y mejorar la experiencia de quienes usan sus aplicaciones

Jessilyneh

November 19, 2023
Tweet

More Decks by Jessilyneh

Other Decks in Technology

Transcript

  1. 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.
  2. 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
  3. 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).
  4. 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).
  5. 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).
  6. 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).
  7. Escalado vertical y escalado horizontal @jessilyneh Agregar más máquinas o

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

    nodos Agregar más potencia a los recursos existentes
  9. @jessilyneh La carga de trabajo es “menor” o más predecible,

    como sitios de comercio electrónico o blogs. Escalabilidad vertical
  10. @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.
  11. @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.
  12. @jessilyneh Escalabilidad horizontal Escenarios con un gran número de solicitudes

    simultáneas, como juegos online, aplicaciones de mensajería y redes sociales.
  13. @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
  14. @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
  15. 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
  16. “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
  17. 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/
  18. 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
  19. 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
  20. Consejos adicionales - Libros @jessilyneh Cree aplicaciones escalables con Redis

    y Node.js Josué Johanán Implementando Node.js Sandro Pasquali