CLab: Eina d’optimització basada en models de simulació i proves de rendiment per a entorns Cloud

Inici » Actualitat »

CLab: Eina d’optimització basada en models de simulació i proves de rendiment per a entorns Cloud

Sona el despertador. El pares. De mica en mica s’activen tots els sentits. I llavors hi penses. Penses en aquella aplicació web tan maca que vas fer el dia anterior i que seguidament la vas desplegar a l’entorn Cloud. Mentre et prens el cafè accedeixes al gestor del Cloud per veure com va tot, i et trobes que en ni tan sols un dia portes acumulats més de 100 euros per pagar. Com pot ser? Si quan… Ah, clar, que quan vaig configurar-ho tot li vaig donar tot a “següent” perquè només volia veure si funcionava… Que complicat tot això del Cloud… Tant de bo existís alguna eina que em digués els recursos mínims que necessito i poder pagar el mínim…

EXACTE! Si el que busques és no tindre més mals de cap a l’hora de fer desplegaments, canvis d’infraestructura, de proveïdors i vols pagar el mínim tenint un bon rendiment i cap queixa per part dels teus clients i usuaris, CLab és la teva solució!

CLab (nom temporal, acceptem propostes!) és una eina/model d’optimització i simulació d’esdeveniments discrets desenvolupada i de propietat de l’inLab FIB, que és capaç de simular qualsevol entorn de qualsevol aplicació web o sistema en general, que es vulgui desplegar a, de moment, 3 proveïdors Cloud que són Amazon Web Services (AWS), Microsoft Azure i Google Cloud Platform (GCP). CLab està desenvolupada amb FlexSim i la formen els següents elements:

  • Process Flow. És el “cervell” del model.
  • Global Tables. És on es troben totes les dades dels diferents proveïdors Cloud, les dades de l’aplicació a simular, i altres dades sobre el procés de simulació.
  • Performance Measure Tables. És on hi ha definides les diferents variables de decisió que pren l’optimitzador a l’hora de maximitzar o minimitzar les respectives funcions objectiu. 
  • Dashboards. Conjunt de figures i gràfics per veure diferents mètriques i resultats de la simulació.
  • Global Parameters. Llistat de paràmetres per configurar diferents escenaris de simulació.

De tots aquests elements, explicarem una mica per sobre com hem dissenyat el que és el “nucli” del model, és a dir, l’element ProcessFlow. A la següent imatge es pot observar la seva arquitectura:

Arquitectura del model

Primer de tot, es troba la generació dels tokens. Cada token representa un usuari, i accedeix al sistema seguint una distribució que varia segons el tipus d’usuari.

El següent que es fa és que l’usuari entri a la web/sistema, i això comporta una sèrie de recursos que s’han d’activar. Si aquesta activació dels recursos supera el límit que hem definit al nostre Cloud, aleshores l’usuari anirà a parar a una cua d’espera fins que s’alliberin recursos. Per posar un exemple molt senzill: accedir a una web per comprar entrades. Quan la web detecta que el nombre d’usuaris és molt elevat, començar a posar-los en una cua d’espera. En el nostre cas, aquesta situació ens serveix per detectar el nombre d’usuaris que no poden accedir, quant de temps s’hi queden esperant fins que poden accedir, i en definitiva, ens serveix per tenir un valor sobre el rendiment del sistema.

Un cop l’usuari ja ha pogut accedir, el que fa el model és assignar-li una tasca. Cada rol d’usuari té definit un llistat de tasques que pot realitzar. Cada tasca té una probabilitat que el model té en compte per fer l’assignació. Quan l’usuari realitza la tasca assignada, el model simula una sèrie d’esdeveniments (cues, delays, consum de recursos,…) que afecten el rendiment del sistema.

Finalment, quan l’usuari acaba la tasca, pot tornar a fer-ne una altra o pot sortir del sistema i acabar el seu recorregut, que ve a ser el mateix que prémer la X al navegador per tancar-lo o per sortir de la web.

Tot això està molt bé, però… Com podem optimitzar el cost i el rendiment? FlexSim incorpora una eina anomenada “Optimizer” que donat una sèrie de dades, el model de simulació, i el problema que es vol optimitzar, et retorna un llistat amb les millors solucions. En el nostre cas, nosaltres prèviament hem fet una recollida de dades de cada proveïdor Cloud que li passem com a possibles escenaris. El model és el que tenim fet. I pel problema a optimitzar, fem un trade-off entre rendiment i cost aplicant algunes tècniques d’optimització multiobjectiu, ja que, per una banda, ens interessa minimitzar el cost, i per l’altra maximitzar el rendiment.

El món Cloud cada vegada és més utilitzat. Moltes empreses es troben amb la necessitat de fer la migració d’un entorn local al núvol. Fa uns 4-5 anys que ho va fer la UPC amb alguns dels seus serveis com ara el correu electrònic, amb l’acord que va arribar amb Google. Per tant, és molt important conèixer bé el mercat i saber el que necessitem, i malauradament això no és un procés senzill. És per això que creiem que CLab pot ser de molta ajuda en aquest tipus de situacions.