Fundamentos de Arquitectura de Alta Concurrencia
Clase 2 de 17 • Audiocurso de Fundamentos de Arquitectura de Alta Concurrencia
Resumen
¿Qué es arquitectura de alta concurrencia?
La arquitectura de alta concurrencia es un concepto esencial para quienes desarrollan aplicaciones que necesitan soportar una gran cantidad de usuarios simultáneamente. Esencialmente, una arquitectura de alta concurrencia se pone en práctica cuando un servidor no puede, por sí solo, manejar la carga de una aplicación y su número de usuarios. Por ejemplo, si un servidor estándar de 16 a 32 GB de RAM no puede satisfacer la demanda, es hora de considerar esta arquitectura. Cabe destacar que el término "grande" es relativo: lo que resulta masivo para una aplicación sencilla podría ser básico para gigantes como Netflix.
¿Cuándo deberías implementar una arquitectura de alta concurrencia?
La implementación de una arquitectura de alta concurrencia se hace necesaria cuando el volumen de usuarios o procesos excede la capacidad de un servidor único o de un sistema monolítico. El desarrollo de una aplicación generalmente comienza en un entorno monolítico, donde todas las funciones están centralizadas en un solo repositorio o servidor. Sin embargo, a medida que la aplicación crece o el equipo de desarrollo escala, la adopción de microservicios puede ser una alternativa eficaz para facilitar el manejo de un gran número de usuarios o desarrolladores.
¿Qué metodologías existen para aumentar la concurrencia en un sistema?
Los microservicios son una de las metodologías clave para mejorar la capacidad de concurrencia de un sistema. Aplicarlos permite escalar diferentes partes de la aplicación de forma independiente, lo cual optimiza recursos y evita el desperdicio de procesamiento. Hay dos razones principales para implementar microservicios:
-
Escalabilidad independiente: Poder aumentar sólo la parte de la aplicación que demanda más recursos, como el procesamiento de videos, sin afectar otras áreas menos demandantes, como la autenticación, resulta en un ahorro significativo de recursos.
-
Facilidad en el desarrollo colaborativo: Separar los componentes de un sistema en microservicios puede simplificar el trabajo de grandes equipos de desarrolladores, permitiendo modificaciones en el código sin colisionar con el trabajo de otros.
¿Qué modelos y patrones debe conocer un desarrollador?
Conocer los servicios y herramientas que ofrecen los proveedores de nube es fundamental para enfrentar problemas de alta concurrencia. Un ejemplo común es el uso de object stores, como los buckets de S3, que permiten almacenar archivos de manera prácticamente ilimitada y escalable, facilitando el manejo de grandes volúmenes de datos sin depender de discos físicos. Además, estas herramientas permiten una implementación más ágil y un acceso más rápido a los datos, lo cual es crucial para el rendimiento del sistema.
Con estos conocimientos y herramientas, los desarrolladores estarán mejor armados para enfrentar los desafíos de alta concurrencia, garantizando que las aplicaciones funcionen de manera eficiente incluso en las condiciones más exigentes.