Servizi in cloud: scalabilità in orizzontale e in verticale

Servizi in cloud: scalabilità in orizzontale e in verticale

Quando si decide di sfruttare una soluzione cloud pura – per intenderci, ad esempio, quelle di Seeweb – ci sono molti aspetti che i manager ed il reparto IT dovrebbero prendere in considerazione: la creazione e manutenione di un’infrastruttura cloud non è mai banale, e richiede competenze certamente non alla portata di chiunque. Costi, valutazioni sulla sicurezza o sulla performance sono in genere variabili che condizionano questo tipo di valutazioni, anche se bisognerebbe ragionare pure sul tipo di requisiti del software, del sito o del web service che si vorrebbe mettere in piedi. Elasticità e scalabilità, in questo contesto, giocano un ruolo fondamentale a livello di opportunità.

In Italia normalmente sui vari siti di settore si parla di scalabilità con maggiore frequenza: la scalabilità corrisponde con la capacità del sistema cloud di aumentare o diminuire la potenza di calcolo, esattamente come avverrebbe con un elastico che può allungarsi o accorciarsi (…e spezzarsi, per inciso). In casi più specialistici si usa anche il termine elasticità, che possiede un significato simile anche se leggermente più avanzato.

Elasticità (o elasticity)

L’idea dietro l’elasticità è quella di dare al sistema esattamente le risorse che siano esattamente necessarie, evitando così sovradimensionamenti (costi inutili e sofferenza finanziaria, insostenibilità) o sottodimensionamenti (sofferenza tecnologica). In quest’ottica l’elasticity si fa coincidere con una politica di gestione delle risorse che sia davvero efficente e funzionale, e si realizza in vari modi: uno dei più comuni è quello di ricorrere alla scalabilità in orizzontale oppure in verticale. In linea di massima, poi, la scalabilità può essere più granulare e mirata all’applicazione specifica di quanto non avvenga per l’elasticità, fermo restando che i due termini sono sostanzialmente simili tra loro.

Pubblicità

Scalabilità (cloud scalability)

La scalability fa riferimento all’idea in cui un sistema che debba gestire più applicazioni o porzioni di infrastruttura si possa espandere o contrarre a piacere. Il concetto è semplice, in effetti, quanto fraintendibile per chi non sia del mestiere (e non si capisce, a volte, perchè dovrebbe occuparsene: eppure succede, purtroppo, e questo per via di una generica malitesa organizzazione, nonchè asettica suddivisione dei ruoli in azienda). Dovrebbe essere un informatico esperto, un consulente IT o un programmatore che dovrà lavorarci a decidere in autonomia quali e quante risorse spendere su una certa app. La scalabilità è semplificata dalla tecnologia, ad oggi, ma richiede ugualmente buone competenze organizzative e progettuali: altrimenti rischia di diventare troppo complessa da gestire.

LEGGI ANCHE:  Nuovi TLD di dominio sospetti: alcuni vengono usati quasi esclusivamente per virus e malware

In genere, pertanto, la scalabilità del cloud è la capacità del sistema di aumentare le risorse a disposizione in caso di picchi di richieste, e ridurle al decrescere delle stesse: questo si riflette sia sulle prestazioni (che dovrebbero essere ottimali) sia sui costi (che dovrebbero essere più contenuti di quanto avvenga, ad esempio, acquistato un server dedicato e pagandolo una tantum comunque sia). Un cloud scala le risorse che davvero gli servono, e può farlo in due modi diversi, ovvero in orizzontale e in verticale.

Scalabilità verticale

In questo caso si vanno ad aggiungere in parallelo (oppure a rimuovere) risorse hardware vCPU, CPU, RAM, spazio su disco, banda. È un concetto di scalabilità relativamente semplice e permette di aumentare la potenza di calcolo e le risorse a disposizione dell’applicazione. Possiamo aggiungere hard disk SSD, RAM o CPU allo scopo di aumentare le disponibilità di potenza del sistema, e l’app ovviamente ne risentirà in positivo a vari livelli.

Molti servizi famosi in cloud – come ad esempio AWS di Amazon – offrono un’interfaccia abbastanza semplice per scalare in verticale. La scalabilità in verticale offre benefici quasi immediati in termini di prestazioni, ma ovviamente incide sui costi e porta facilmente a casi di sovradimensionamento – allocare più potenza di quella davvero necessaria.

Scalabilità orizzontale

In questo caso si vanno ad aggiungere in parallelo (oppure a rimuovere) nuove macchine cloud per facilitare il lavoro. Sembra più semplice del caso precedente ma non lo è, perchè significa aggiungere nuove macchine e quindi, come diretta conseguenza, maggiore complessità al sistema. In questi termini è considerata un vantaggio soltanto nel lungo periodo, a differenza del caso precedente, e visto che le macchine vanno comunque configurate.

A quali applicazioni potrebbe servire la scalabilità?

Non è chiaro quasi a nessuno, per la verità, quando abbia senso applicare concetti di elasticità o scalabilità al cloud: eppure i casi concreti non mancano, e vanno dalle applicazioni di e-commerce più avanzate al Saas (Software as a Service, ovvero i web service venduti al cliente finale “a consumo”, come fa Google Cloud ad esempio), a molti tipi di app mobile che prevedano un pubblico parecchio vasto. La cosa essenziale per poter sfruttare in modo sensato la scalabilità corrisponde con un grosso carico di lavoro da dover gestire, sia a livello di processo generale che a livello puntuale.

Anche semplici portali e blog, in certi casi, possono sfruttare in modo favorevole i benefici di un’infrastruttura cloud ben organizzata a livello di scalabilità.

Vantaggi della scalabilità

Il primo vantaggio è legato sicuramente ad una performance maggiore: le app risponderanno più velocemente, i tempi di risposta saranno più veloci – ammesso che si sia deciso di scalare risorse critiche per il sistema: ad esempio potrebbe essere inutile aumentare la RAM, se il problema dell’app è relativo ad una grossa potenza di calcolo richiesta. Un altro vantaggio potrebbe essere legato, poi, alla tolleranza agli errori ed alla ridondanza del sistema, in quanto aggiungendo più macchine che possano fare lo stesso lavoro è più facile risolvere situazioni di conflitto o di sovraccarico del sistema, smistando in parallelo le varie richieste dei client. I cloud, inoltre, permettono di sviluppare piattaforme di microservice – un concetto simile al SaaS, in effetti – ed in questo la scalabilità nelle due dimensioni viste gioca un ruolo fondamentale.

Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.