Juan David Cajamarca Acuña
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.
Guillermo Jimenez
execelente resumen y explicación.
Alexis Dorado Muñoz
¡Excelente análisis! Me gusta cómo explicas las ventajas de los microservicios con ejemplos concretos, como el del procesamiento de videos versus la autenticación. También es clave la mención a los proveedores cloud y cómo facilitan el manejo de la alta concurrencia. Quizás podrías complementar tu aporte mencionando algunas estrategias o patrones de diseño para la concurrencia, como el uso de colas o el patrón publisher-subscriber.