Aspetti economici delle applicazioni cloud
I provider di servizi cloud sono molto impegnati ad attrarre gli utenti delle distribuzioni tradizionali. I prezzi dei servizi cloud IaaS pubblici sono in costante e rapida diminuzione rispetto alla fase di lancio iniziale. In media, per la maggior parte dei principali provider di servizi cloud, i prezzi sono scesi del 20-30% all'anno a partire dal 2013.
Tuttavia, nonostante questa riduzione dei prezzi, l'adozione del cloud richiede sempre un'attenta valutazione. Per usufruire dei vantaggi offerti dal cloud in termini di costi, è importante comprendere, prevedere, pianificare, monitorare e analizzare attentamente l'utilizzo. È inoltre difficile scegliere tra i provider di servizi cloud per i singoli casi d'uso, poiché i provider di servizi cloud non adottano un modo standard per creare pacchetti di risorse e non sempre seguono gli stessi modelli di determinazione dei prezzi.
Modelli di determinazione dei prezzi
I provider di servizi cloud addebitano in genere le risorse in base a uno dei tre tipi di parametri seguenti:
- Basato sul tempo: le risorse vengono addebitate in base alla quantità di tempo di cui viene effettuato il provisioning all'utente. Ad esempio, per avere una macchina virtuale in esecuzione in un cloud IaaS, si paga un determinato importo per ora/giorno/mese/anno. La granularità del periodo di addebito varia a seconda del provider di servizi cloud. Amazon, ad esempio, addebita l'importo su base oraria, in modo non proporzionale.
- Basato sulla capacità: Gli utenti vengono addebitati in base alla quantità di una determinata risorsa utilizzata o consumata. Questo è un modello di addebito comune per i sistemi di archiviazione cloud. Ad esempio, agli utenti viene addebitato un determinato importo per l'archiviazione di un gigabyte di dati nei sistemi di archiviazione di oggetti cloud, come l'archiviazione BLOB di Azure.
- Basato sulle prestazioni: in molti provider di servizi cloud, gli utenti possono selezionare un livello di prestazioni superiore per le risorse pagando una tariffa più elevata. Per le macchine virtuali, è possibile eseguire il provisioning di computer più grandi e potenti con maggiore capacità di CPU, memoria e disco con una tariffa oraria superiore.
In base a questi parametri di addebito, i provider di servizi cloud usano uno dei modelli di prezzi comuni seguenti:
- Prezzi su richiesta e con pagamento in base al consumo: si tratta in genere del modello di prezzi più costoso per l'utilizzo a lungo termine. I pagamenti vengono effettuati per un periodo di utilizzo molto breve (in genere a consumo, in minuti o ore). Il vantaggio è dato dal fatto che non è necessario un contratto a lungo termine ed è quindi consentita una maggiore scalabilità in base alle esigenze attuali. Anche se non accade di frequente, è possibile che i provider di servizi cloud aumentino i costi nei periodi di domanda elevata e li riducano quando la domanda è più bassa. Si tratta di un ottimo modello per i provider di servizi e per gli utenti che stanno iniziando a usare il cloud.
- Istanze riservate e prezzi basati su sottoscrizione: invece di pagare una tariffa oraria o al minuto, un utente può scegliere di pagare in base al pagamento anticipato e riservare una risorsa per un periodo di tempo piuttosto lungo (settimane o mesi). Questo consente di usufruire di una notevole riduzione di prezzi (20-50%) ma richiede un impegno a lungo termine. Nei modelli di determinazione dei prezzi basati su istanze riservate, gli schemi di pagamento possono variare da pagamenti anticipati a pagamenti periodici con obbligo contrattuale.
- Prezzi spot: i prezzi spot sono un modo per gestire la capacità in eccesso non utilizzata offrendo la vendita a prezzi notevolmente inferiori rispetto alle risorse su richiesta. I prezzi sono determinati da un'asta, in cui gli utenti hanno la possibilità di presentare un'offerta indicando l'importo massimo che sono disposti a pagare per una risorsa. Il problema principale consiste nel fatto che le risorse possono essere spesso interrotte in qualsiasi momento se il prezzo spot supera il prezzo effettivo dell'offerta. Le risorse spot sono ideali per i processi non critici brevi che possono essere eseguiti speculativamente.
Per soddisfare i requisiti di base del sistema è in genere consigliabile usare le istanze riservate. Se un'applicazione necessita di 2 istanze per l'80% del tempo, di 3 istanze per il 15% del tempo e di 4 istanze per il 5% del tempo, in genere si riservano 2 istanze per l'intero tempo di esecuzione dell'applicazione e si aumenta il numero di istanze usando le istanze su richiesta o spot. Come indicato in precedenza, le istanze su richiesta devono essere scelte per il ridimensionamento orizzontale solo se si tratta di un'applicazione business critical o se la differenza tra il prezzo su richiesta e il prezzo spot corrente è controbilanciata dal rischio di un'interruzione improvvisa. Questa decisione dipende spesso dal caso aziendale.
Come ottimizzare i costi
Per usare il cloud in modo economicamente conveniente, le aziende devono sviluppare un processo ben ponderato per la scelta delle risorse per la distribuzione, il monitoraggio e la visualizzazione dell'utilizzo, oltre a un meccanismo chiaro per identificare gli sprechi e ottimizzare l'utilizzo.
Figura 11: Processo di ottimizzazione dei costi
Prima di prendere in considerazione i requisiti di costo, un'organizzazione deve pianificare la quantità di lavoro che è in grado di svolgere in un determinato periodo di tempo in base a risorse fisse, come la quantità di personale, occupandosi al tempo stesso di vincoli fisici come la gestione dell'inventario, il sovraccarico dovuto a trasporti, la gestione del materiale e così via. Il provisioning delle risorse IT deve essere progettato in modo da soddisfare o superare la capacità fisica dell'organizzazione. Questa operazione è estremamente importante, perché l'elasticità offerta dal cloud induce i team di sviluppo ad aggiungere semplicemente le risorse in base alle esigenze, senza considerare le implicazioni legate ai costi delle loro decisioni.
Il primo passaggio nel tentativo di ridurre la spesa sul cloud consiste nell'associare i tipi di risorse ai requisiti effettivi per l'applicazione. Questo può implicare la scelta tra macchine virtuali con numero di core o configurazioni di memoria differenti. Non esiste un modo semplice per eseguire questa operazione, oltre al test e al benchmarking dell'applicazione su diversi tipi di risorse.
Anche se un'applicazione offre prestazioni migliori in una classe di risorse più costosa, è importante verificare se il miglioramento delle prestazioni è proporzionale all'aumento del costo. Se, ad esempio, è presente un miglioramento di 1,2x in un'applicazione che usa una macchina virtuale più costosa di 7,5x rispetto alla base, potrebbe essere più opportuno aumentare il numero di istanze della risorsa di base per migliorare le prestazioni.
È importante creare un sistema di monitoraggio e visualizzazione per monitorare le varie risorse in uso. Il sistema di monitoraggio deve essere progettato per attivare eventi di ridimensionamento in risposta a modelli osservati di sovraccarico o inattività. Spesso i team dell'infrastruttura scelgono di aumentare le prestazioni e il numero di istanze in modo aggressivo, mentre tendono a diminuirle in modo più prudente. Anche se questo approccio è più oneroso in termini di provisioning delle risorse, fornisce in teoria una qualità superiore del servizio rispetto all'approccio in cui si opera quasi sempre ai limiti della capacità massima.
Detto questo, le organizzazioni spesso sottovalutano la necessità di ridurre il numero di istanze e terminare le risorse usate raramente. Quando si pianifica l'esecuzione dei diversi componenti di un'applicazione, è importante suddividere l'utilizzo in diverse categorie, in base alla durata approssimativa. Ad esempio, tutti i processi eseguiti per un breve periodo di tempo, con pianificazione notturna o settimanale, non devono usare le risorse disponibili 24 su 24, 7 giorni su 7. Le risorse inattive devono anche essere contrassegnate e terminate (in base a determinate regole) dal sistema di monitoraggio.
Una tecnica importante associata all'ottimizzazione dei costi è quella di assegnazione di tag alle risorse. Questo processo consiste nell'assegnare etichette alle risorse in modo che siano identificabili dagli strumenti di monitoraggio e analisi. L'assegnazione di tag consente inoltre di definire regole personalizzate per ogni tag, inclusi gli elenchi di controllo di accesso per le risorse, gli avvisi di fatturazione e specifici criteri di ridimensionamento. I tag comunemente usati specificano il proprietario (utente o gruppo) di una determinata risorsa, l'ambiente a cui appartiene (ad esempio, produzione, backup, gestione temporanea e test), il centro di costo per il pagamento della fattura e così via. Nell'analisi della spesa, l'assegnazione di tag consente di generare visualizzazioni raggruppate in base ad applicazioni specifiche, oltre che a team di sviluppo o test.