Consideraciones de negocio para alta concurrencia y caso de uso
Audiocurso de Fundamentos de Arquitectura de Alta Concurrencia
Contenido del curso
DAVID EDUARDO BAEZ SANCHEZ
Juan David Cajamarca Acuña
Nicolás Peralta Páez
juan CORSI
Diego Geovanny Bracero
Alexis Dorado Muñoz
Alexis Dorado Muñoz
Claudia Patricia Villanueva Mosquera
Jefred Bedoya
Juan David Acosta González
Pablo Fredrikson
ProfesorAlexis Dorado Muñoz
MARIA TERESA PANIAGUA RIVERA
Daniel Eduardo Rojas Pulido
Empezar
Estar cómodo **SUMERCED **con el lenguaje de desarrollo.
Todo en contenedores, preferible en **DOCKER **y un orquestador posiblemente K8s.
Métricas mediante CPU - RAM - Colas de mensajes.
¿Qué consideraciones estratégicas de negocio se deben tener en cuenta a la hora de crear una arquitectura de alta concurrencia?
Esto depende mucho del tipo del negocio y del tipo de la aplicación. Sin embargo, en la gran mayoría de los casos, los más recomendable es comenzar con un monolito. Aunque parezca una mala idea, en realidad no tiene sentido comenzar a separar nuestra aplicación en microservicios desde el principio. Una vez creado el monolito, si el equipo crece y la empresa va triunfando, es aquí el momento ideal para comenzar a separar las funciones.
En el monolito se pueden utilizar tecnologías para alta concurrencia (CDNs, contenedores, orquestadores, etc.), en donde los CDNs nos pueden ayudar a cachear elementos estáticos y en la parte de seguridad; también se puede utilizar caché de diferentes formas (para uso de sesiones, para autenticación, etc.), y si se quiere utilizar alguna función serverless, se puede implementar para realizar tareas asíncronas.
Supongamos que empezamos un negocio. Lo primero, sería crear un monolito que sería el centro de nuestra aplicación. Adelante de este monolito, ubicaríamos un CDN que se encargaría de la seguridad, del cacheo de archivos estáticos y de la terminación SSL. El CDN enviaría el tráfico a nuestro proxy que tendrá la primera capa de nuestra aplicación; este proxy se va a encargar de la autenticación; las sesiones y todos esos valores van a estar almacenados en nuestro caché (podríamos utilizar Redis para este punto). Finalmente, nuestro monolito se va a conectar a una base de datos. Luego podríamos agregar funciones serverless para funciones asíncronas como procesamiento de videos, por ejemplo; de esta forma, la función sólo estará corriendo cuando tenga trabajo por hacer, y nos ahorraríamos dinero al no tener todo el tiempo corriendo un servicio que no siempre estamos utilizando.
Lo más recomendable a la hora de crear un monolito, es utilizar contenedores y orquestarlo con alguna tecnología.
crack
Gracias
Crear una arquitectura de alta concurrencia
Gracias por tu aporte.
Consideraciones estratégicas para una arquitectura de alta concurrencia:
Las consideraciones estratégicas al diseñar una arquitectura de alta concurrencia son clave para el éxito del negocio. Aquí algunas ideas:
1. Evolución gradual:
2. Aprovechar las herramientas:
3. Ejemplo de arquitectura:
4. Contenerización y orquestación:
Puntos adicionales a considerar:
Como identificar que una aplicación tiene demasiados microservicios, mas de lo que necesitaría ?
Claudia, la complejidad de gestionar una red de servicios suele superar el beneficio de la independencia cuando la latencia de red y el overhead operativo se comen tus ahorros de tiempo.
Si para completar una simple transacción de usuario tu equipo debe coordinar cambios en cuatro repositorios distintos, ¿estás ganando agilidad o simplemente creando un rompecabezas imposible de mantener?
Alta Concurrencia: Estrategia de Negocio
Escalabilidad vs. Costo: No todo requiere escalado masivo. Prioriza la inversión según el valor real del usuario y el impacto directo en tus ingresos.
Experiencia y Consistencia: La latencia mata la conversión. Equilibra la consistencia de datos con la velocidad de respuesta necesaria para mantener al usuario.
Como se podria realizar una aplicación móvil de tipo stateless? Lo pregunto ya que en el caso en que uno haga deployment en la Play Store de Android, uno sube el app bundle y ya esta, pero como haria para separar el contenido estático en este caso?
En ese caso no hace falta que sea stateless en el telefono, ya que nunca deberias tener que escalar en ese dispositivo. La idea de las aplicaciones stateless es para aquellas que corren en servidores y de vez en cuando requieren escalamiento horizontal.
Es un desafío interesante lograr que una aplicación móvil sea stateless, especialmente al considerar la distribución a través de tiendas como Play Store. Aquí te van algunas ideas para separar el contenido estático y lograr ese objetivo:
1. Almacenamiento en la nube:
2. CDNs:
3. Empaquetado dinámico:
4. APIs para contenido dinámico:
Recomendaciones adicionales:
Gracias
Hacer el monolito primero y luego se escala a microservicios