CLab: Herramienta de optimización basada en modelos de simulación y pruebas de rendimiento para entornos Cloud

CLab: Herramienta de optimización basada en modelos de simulación y pruebas de rendimiento para entornos Cloud

Suena el despertador. Lo paras. Poco a poco se activan todos los sentidos. Y entonces piensas. Piensas en aquella aplicación web tan guapa que hiciste el día anterior y que seguidamente desplegaste al entorno Cloud. Mientras te tomas el café accedes al gestor del Cloud para ver como va todo, y te encuentras que en ni siquiera un día llevas acumulados más de 100 euros para pagar. Cómo puede ser? Si cuándo… Ah, claro, que cuando lo configuré todo le di todo a “siguiente” porque solo quería ver si funcionaba… Que complicado todo esto del Cloud… Ojalá existiera alguna herramienta que me dijera los recursos mínimos que necesito y poder pagar el mínimo…

EXACTO! Si lo que buscas es no tener más dolores de cabeza en la hora de hacer despliegues, cambios de infraestructura, de proveedores y quieres pagar el mínimo teniendo un buen rendimiento y ninguna queja por parte de tus clientes y usuarios, CLab es tu solución!

CLab (nombre temporal, aceptamos propuestas!) es una herramienta/modelo de optimización y simulación de acontecimientos discretos desarrollada y de propiedad de la inLab FIB, que es capaz de simular cualquier en torno a cualquier aplicación web o sistema en general, que se quiera desplegar a, de momento, 3 proveedores Cloud que son Amazon Web Services (AWS), Microsoft Azure y Google Cloud Platform (GCP). CLab está desarrollada con FlexSim y la forman los siguientes elementos:

  • Process Flow. Es el “cerebro” del modelo.
  • Global Tables. Es donde se encuentran todos los datos de los diferentes proveedores Cloud, los datos de la aplicación a simular, y otros datos sobre el proceso de simulación.
  • Performance Measure Tables. Es donde hay definidas las diferentes variables de decisión que toma la optimitzador en la hora de maximizar o minimizar las respectivas funciones objetivo.
  • Dashboards. Conjunto de figuras y gráficos para ver diferentes métricas y resultados de la simulación.
  • Global Parameters. Listado de parámetros para configurar diferentes escenarios de simulación.

De todos estos elementos, explicaremos un poco por sobre como hemos diseñado el que es el “núcleo” del modelo, es decir, el elemento ProcessFlow. En la siguiente imagen se puede observar su arquitectura:

Arquitectura del modelo

Antes que nada, se encuentra la generación de los tokens. Cada token representa un usuario, y accede al sistema siguiendo una distribución que varía según el tipo de usuario.

El siguiente que se hace es que el usuario entre a la web/sistema, y esto comporta una serie de recursos que se tienen que activar. Si esta activación de los recursos supera el límite que hemos definido a nuestro Cloud, entonces el usuario irá a parar a una cola de espera hasta que se liberen recursos. Para poner un ejemplo muy sencillo: acceder en una web para comprar entradas. Cuando la web detecta que el número de usuarios es muy elevado, empezar a ponerlos en una cola de espera. En nuestro caso, esta situación nos sirve para detectar el número de usuarios que no pueden acceder, cuánto tiempos se quedan esperando hasta que pueden acceder, y en definitiva, nos sirve para tener un valor sobre el rendimiento del sistema.

Una vez el usuario ya ha podido acceder, el que hace el modelo es asignarle una tarea. Cada rol de usuario tiene definido un listado de tareas que puede realizar. Cada tarea tiene una probabilidad que el modelo tiene en cuenta para hacer la asignación. Cuando el usuario realiza la tarea asignada, el modelo simula una serie de acontecimientos (colas, delays, consumo de recursos,…) que afectan el rendimiento del sistema.

Finalmente, cuando el usuario acaba la tarea, puede volver a hacer otra o puede salir del sistema y acabar su recorrido, que viene a ser el mismo que pulsar la X al navegador para cerrarlo o para salir de la web.

Todo esto está muy bien, pero… Cómo podemos optimizar el coste y el rendimiento? FlexSim incorpora una herramienta llamada “Optimizer” que dado una serie de datos, el modelo de simulación, y el problema que se quiere optimizar, te devuelve un listado con las mejores soluciones. En nuestro caso, nosotros previamente hemos hecho una recogida de datos de cada proveedor Cloud que le pasamos como posibles escenarios. El modelo es el que tenemos hecho. Y por el problema a optimizar, basura un trade-off entre rendimiento y coste aplicando algunas técnicas de optimización multiobjetivo, puesto que, por un lado, nos interesa minimizar el coste, y por la otra maximizar el rendimiento.

El mundo Cloud cada vez es más utilizado. Muchas empresas se encuentran con la necesidad de hacer la migración de un entorno local a la nube. Hace unos 4-5 años que lo hizo la UPC con algunos de sus servicios como ahora el correo electrónico, con el acuerdo que llegó con Google. Por lo tanto, es muy importante conocer bien el mercado y saber el que necesitamos, y desgraciadamente esto no es un proceso sencillo. Es por eso que creemos que CLab puede ser de mucha ayuda en este tipo de situaciones.