¿Qué es arquitectura de alta concurrencia?

2/17
Recursos

Aportes 9

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Un sistema de alta concurrencia es cuando se habla de un numero de usuario que ya no puede manejar un solo servidor
Monolítica: Nosotros empezamos a codear nuestra aplicación, y esta aplicación corre en un solo servidor.
Microservicios: Cuando se empieza a desarrollar con muchas personas a la vez.
Metodologías para la concurrencia de un sistema.
Los microservicios se usan por:
*Poder escalar de forma independiente
*Nos permiten desarrollar mucho mas fácil
Que modelos y patrones debe conocer un desarrollador
*Uso de proveedores en la Cloud

Hasta para dar soporte o hacer actualizaciones, en un monolito la piensas, haces miles de pruebas, etc. Si le mueves a algo mas servicios pueden verse afectados, en cambio en sistemas distribuidos puedes modificar un servicio sin afectar la infraestructura donde viven los demás

Un sistema de alta concurrencia es difícil de definir, porque a variables como la vertical de negocio, revenue entre otros conceptos.

Pero una vez tengamos claridad del negocio, de los SLA, entre otras métricas, con estos ingredientes, se define un dimensionamiento correcto para la aplicación de misión crítica.

Se debe comenzar a pensar en un sistema de alta concurrencia cuando se tiene una cantidad de usuarios que ya no puede ser manejada por un solo servidor o un monolito.

Los microservicios generalmente se usan cuando se quiere comenzar a desarrollar con muchas personas a la vez.

Lo microservicios se usan por dos razones:

  • Para poder escalar de forma independiente. Ejemplo: una aplicación (monolito) que procesa videos y también autentica usuarios; el procesamiento de videos tarda varios minutos mientras que consume muchos recursos, y por otro lado la autenticación tarda milisegundos y no consume prácticamente recursos. Si se quisiera escalar la aplicación, se debe escalar el servidor, y sería un desperdicio de recursos cuando no se esté procesando videos.
  • Permiten que las aplicaciones sean desarrolladas mucho más fácilmente. Un ejemplo claro es cuando 10, 50 o 100 desarrolladores trabajan al tiempo sobre un mismo repositorio; por más que utilicen un flujo de ramificación, no deja de ser difícil de manejar.
    No siempre hay que utilizar microservicios, sólo hay que saber evaluar en qué casos es conveniente implementar este modelo.

¿Qué patrones debe conocer un desarrollador al enfrentarse a un problema de alta concurrencia?
Lo principal es entender el uso de proveedores en la nube y los servicios que ellos nos brindan. Un ejemplo muy fácil, son los Object Stores, que en el caso de AWS, el equivalente serían los S3 Buckets. Este servicio nos permite almacenar archivos y hostear contenido de una forma fácil por medio de una API, y tiene muchas características, donde una de ellas es que no hay un límite de capacidad de almacenamiento; es decir, no debemos preocuparnos por tener discos grandes en nuestros servidores ni tener que estar pendientes para ampliarlos o limpiarlos. Esto nos permite crecer indefinidamente.

Buena explicación. NO volvernos locos con los Micro Servicios

Conocer los diferentes servios que un cloud provider ofrece es importante a la hora de construir una arquitectura de alta concurrencia

está genial la música de fondo, así deberían ser todos los cursos. ayuda a concentrarse

En un sistema que se basa en microservicios tiene la posibilidad de balancear los recursos y solo incrementar los recursos en donde es necesario, lo que finalmente se traduce en un aprovechamiento del recurso y finalmente del costo.

Empezar una aplicacion como un monolito esta genial, asi puedes enfocar tus esfuerzos en el modelo de negicio y en tus clientes, estas probando el mercado, lo que se conoce como un minimum viable product (MVP), si la aplicacion es un exito estara claro que sera mas concurrida y entonces tendras que pensar en formas de poder escalarla.
Los microservicios son la manera mas natural de poder escalar, ya que nos permite escalar aquillos servios que necesitan ser escalados, independiente de los demas servicios.