Quando si ospita un’applicazione di qualunque genere su uno o più server oppure si deve erogare un servizio più o meno complesso, ci si scontra sempre con un aspetto di fondamentale importanza. Come dimensionare correttamente l’infrastruttura per fronteggiare e gestire senza difficoltà picchi di traffico più o meno previsti?
Gli amministratori di un sito di e-commerce sanno bene che in alcuni periodi dell’anno il traffico può letteralmente salire alle stelle, ad esempio durante i saldi, le vendite promozionali e momenti davvero particolari come la settimana del Black Friday.
Altre applicazioni potrebbero subire picchi improvvisi in altre situazioni che non sempre riescono ad essere previste per tempo. Molti gestori di siti web cercano di dimensionare le risorse in maniera generosa, stimando l’entità del carico di lavoro che potrebbe ingenerarsi – nella situazione peggiore – in alcuni momenti dell’anno.
In questo modo, però, le risorse non sono gestite nel modo migliore e spesso si rischia di pagare inutilmente per qualcosa che non verrà mai utilizzato (potenza computazionale, banda di rete, storage,…).
Scalabilità: cosa significa
Il concetto è chiaramente espresso nell’immagine in figura: nella configurazione di sinistra l’ipotetico utente sta pagando l’importo massimo per le risorse che ha richiesto per sé e per i suoi servizi pur senza mai neanche lontanamente utilizzarle al massimo delle loro potenzialità.
L’utente di destra, che invece sta utilizzando Jelastic Cloud di Aruba, si limita a pagare solo le risorse effettivamente impegnate e utilizzate con la possibilità quindi di limitare significativamente gli investimenti economici e versare importi maggiori solo quando il traffico dovesse aumentare (e il business ampliarsi). Si tratta del modello pay per use.
Una configurazione cloud scalabile fa sì, quindi, che le risorse possano adattarsi in tempo reale al traffico gestito e alle effettive necessità di ciascun utente. Già il fatto di poter aumentare o diminuire al bisogno le risorse computazionali impegnate è qualcosa di eccezionale: un server fisico o una batteria di macchine resta tale fintanto che non viene aggiornata a livello hardware o sostituita con una più performante. Jelastic Cloud di Aruba, invece, fornisce agli utenti gli strumenti per ampliare le risorse utilizzabili dall’applicazione quando questa cominciasse a diventare più esigente (ad esempio perché le richieste provenienti dai client collegati cominciassero ad aumentare in maniera importante).
Jelastic Cloud di Aruba, però, non offre solamente la possibilità di scalare le risorse disponibili ma anche di servirsi di meccanismi per la scalabilità in verticale e in orizzontale, anche in automatico.
Jelastic Cloud di Aruba: scalabilità automatica in verticale
Il meccanismo di scaling automatico in verticale permette a Jelastic Cloud di aumentare le risorse impegnate per gestire qualunque picco di traffico e di ridurle quando il traffico comincia a scendere, il tutto senza alcun intervento manuale da parte dell’utente.
Questa soluzioni permette di erogare applicazioni e servizi senza che vengano rilevati rallentamenti o, peggio, si manifestino situazioni di irraggiungibilità.
Come abbiamo visto nell’articolo Jelastic Cloud di Aruba: cosa permette di fare, le risorse utilizzate sono organizzate sotto forma di cloudlet che più o meno equivalgono l’una a 128 MB di memoria RAM e a una CPU single-core da 400 MHz.
Quando si crea un ambiente in Jelastic Cloud, la piattaforma provvede ad assegnare un certo numero di cloudlet per un utilizzo ottimale dei componenti software configurati.
Creando un cluster WordPress, per esempio (vedere anche Come ospitare WordPress e ogni tipo di applicazione grazie alla flessibilità di Jelastic Cloud), l’interfaccia di Jelastic Cloud di Aruba mostra cloudlet riservate (Reserved) e cloudlet eventualmente impegnabili per le attività di scaling.
Nel riquadro Reserved, infatti, Jelastic Cloud riporta il numero di cloudlet che l’ambiente allestito verosimilmente occuperà: per queste risorse, che sono appunto “riservate”, l’utente pagherà seppur versando un importo inferiore rispetto a quelle attivate in maniera dinamica.
Nel riquadro Scaling limit è riportato il numero di cloudlet delle quali l’applicazione può eventualmente fare uso a secondo delle necessità del momento. L’uso di queste risorse viene addebitato solo in caso di effettivo utilizzo con un limite superiore che non viene mai superato.
Ogni riquadro dà un’idea del sistema cui equivalgono le cloudlet riservate ed eventualmente attivabili in modo dinamico, sia in termini di memoria che di processore.
La piattaforma consente comunque di variare manualmente le impostazioni relative allo scaling verticale automatico.
Scalabilità in orizzontale: manuale e automatica
Se il concetto di scalabilità in verticale è chiaro, quali sono le differenze con la scalabilità orizzontale, anch’essa supportata da Jelastic Cloud di Aruba?
In aggiunta alle possibilità di scaling in verticale, quindi sulle risorse in termini di cloudlet riservate ed eventualmente impegnabili, Jelastic Cloud permette di aumentare e diminuire (in modo manuale e/o automatico) il numero dei server usati per l’ambiente configurato sul cloud.
Nel riquadro Horizontal scaling, si ha la possibilità di regolare manualmente il numero di nodi da utilizzare gestendoli con un approccio stateless o stateful: nel primo caso tutti i nuovi nodi vengono creati contemporaneamente a partire dal template usato come base; nel secondo, è il file system del container master ad essere copiato all’interno dei nuovi nodi.
Lo schema stateless è notevolmente più veloce rispetto allo stateful ma non si adatta alle personalizzazioni via a via applicate all’ambiente da parte degli utenti.
Il consiglio è quello di scegliere lo scaling orizzontale stateful per load balancer, application server, stack VPS.
Cliccando sull’icona Change Environment Topology si ha la possibilità non soltanto di modificare le modalità di scaling ma anche di ottenere una stima (fare riferimento alla colonna di destra) di quanto si spenderà su base oraria, giornaliera e mensile per ospitare ed eseguire la propria applicazione sul cloud.
L’importo mostrato a sinistra indica l’importo minimo che si esborserà per le risorse riservate mentre a destra viene visualizzata la spesa massima nel caso in cui si impegnassero tutte le risorse in caso di scaling verso l’alto. Quest’ultimo è però il caso peggiore, allorquando fosse necessario usare stabilmente i cloudlet allocati in modo dinamico.
Jelastic Cloud di Aruba consente di scalare le risorse anche in orizzontale in maniera del tutto automatizzata. Come avviene per il vertical scaling, già visto in precedenza, la piattaforma può aumentare e diminuire il numero di nodi in uso a seconda dei carichi di lavoro istantanei.
Lo scaling in orizzontale viene gestito con l’ausilio dei cosiddetti tunable trigger, condizioni personalizzabili dall’utente che permettono di definire quando è opportuno aggiungere nodi o rimuoverli. Ogni minuto, infatti, Jelastic Cloud esamina il consumo medio delle risorse al fine di stabilire se fosse opportuno applicare variazioni sul numero dei nodi impegnati.
L’utente può configurare i trigger da usare per la scalabilità orizzontale cliccando sull’icona Settings dell’ambiente impostato sulla piattaforma Jelastic, quindi scegliendo Monitoring, Auto Horizontal Scaling.
Con un clic su Add, si possono aggiungere nuovi trigger. Nell’esempio si accorda a Jelastic Cloud di Aruba l’autorizzazione a raggiungere il numero massimo di nodi specificato (Scale out to), se necessario, al ritmo di un nodo aggiunto ogni 5 minuti, quando la percentuale di utilizzo del cluster Galera e quindi dei database MariaDB dovesse superare l’80% in termini di carico sulla CPU virtuale.
Viceversa, si chiede a Jelastic di scalare progressivamente verso il basso al decrescere del carico di lavoro (riquadro Remove nodes).
Sempre facendo riferimento alla colonna di sinistra delle impostazioni (Settings), cliccando su Monitoring, Events History e scegliendo Horizontal scaling dal menu a tendina Type, si può verificare quando Jelastic Cloud si è attivato per aggiungere o rimuovere nodi dalla configurazione in uso.
Indipendentemente dai servizi cloud attivati sulla piattaforma, cliccando sull’icona Statistics, si può accedere a un potente strumento di monitoraggio in tempo reale che consente di avere un quadro omnicomprensivo sullo stato di ciascun cluster e sulle risorse impegnate in termini di RAM, carico di lavoro sul processore, traffico in ingresso e in uscita sulle interfacce di rete, operazioni di lettura e scrittura su disco.
La piattaforma Jelastic Cloud consente infine di impostare alert per ricevere via email informazioni su quelle situazioni che debbono richiamare l’attenzione dell’amministratore.
Grazie alla piattaforma Jelastic Cloud di Aruba diventa quindi possibile dispiegare configurazioni più o meno complesse che, usando un approccio tradizionale, imporrebbero spese nettamente maggiori, continue attività di manutenzione sui server, interventi sull’hardware con oggettive difficoltà nel gestire traffico e carichi di lavoro che crescono all’improvviso.