Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Cost optimization sugli hyperscaler: il vantaggio di Azure

By Luca SerpietriApr 10, 20257 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Quali best practice di cost optimization accomunano Azure, AWS e GCP, e in cosa si distingue Azure dagli altri quando si tratta di far risparmiare i clienti?

Foto di Łukasz Łada su Unsplash

Da qui mi è nata un'idea: perché non condividere alcune strategie che rappresentano il minimo comune denominatore valido per tutti gli hyperscaler, per poi approfondirne uno e metterne in luce le specificità?

In questo articolo iniziamo il percorso nella cost optimization su Azure, partendo dalle best practice valide per i tre grandi: AWS, GCP e Azure. Approfondiremo poi tre funzionalità peculiari, offerte solo da Azure, che richiedono un impegno minimo da parte del cliente ma possono generare risparmi potenzialmente enormi.

I tre grandi: punti in comune nella cost optimization

I team di AWS, GCP e Azure investono tempo e denaro per mettere in evidenza le differenze tra i propri servizi, eppure alcuni principi di cost optimization si applicano a tutti. In fondo, l'adozione del cloud non è guidata solo da funzionalità e prestazioni, ma anche dall'efficienza, e negli ultimi anni i clienti hanno chiaramente dimostrato di pretendere maggiore visibilità sui costi e più opportunità per ridurli.

La FinOps Foundation, ad esempio, sta promuovendo un approccio in qualche modo standardizzato all'analisi dei costi cloud e alla caccia alle inefficienze. Se vuole approfondire il loro lavoro, lo trova qui https://www.finops.org/

Ma non divaghiamo. Che si tratti della prima migrazione al cloud o di un utilizzo che risale ai tempi di SimpleDB, vediamo ora 3 dei principi cardine della cost optimization che si applicano allo stesso modo ad AWS, GCP e Azure.

1\. Right-sizing delle istanze

Il concetto di right-sizing è un grande classico del cloud: fare in modo che i clienti utilizzino risorse adeguate alle proprie esigenze, né più né meno. Come per la maggior parte delle scelte nel cloud (e nella vita), il dimensionamento di una risorsa (che si tratti di un'istanza DB gestita, un container, un pod, una VM, un file system, ecc.) è un compromesso tra ciò che serve oggi, ciò che potrebbe servire in futuro e la rapidità con cui ne avrà bisogno.

Tutti gli hyperscaler incrociano i dati di fatturazione con metriche operative (come l'utilizzo di rete, memoria o CPU per le istanze) per costruire un caso a favore della riduzione delle dimensioni della risorsa o addirittura della sua eliminazione, fornendo una stima del risparmio.

Azure non si tira indietro nel fornire le proprie raccomandazioni ai clienti tramite Azure Advisor, che, in modo simile a Compute Optimizer di AWS e a Recommender di GCP, suggerisce come fare il right-sizing delle risorse o eliminare quelle inattive.

Non trascuri queste raccomandazioni: si stupirebbe di quante risorse potrebbero essere eliminate. Più avanti nell'articolo approfondiremo alcune funzionalità aggiuntive di Azure, quindi continui a seguirci.

2\. Reservations

Pagare in anticipo le risorse di calcolo per un periodo di tempo prefissato riduce notevolmente i costi su tutti i cloud. Su tutti gli hyperscaler, questa modalità di acquisto è disponibile per un'ampia gamma di servizi (Compute, Storage, Database…). Per quanto possa sembrare scoraggiante, è il modo più rapido per risparmiare sul cloud: nessuna modifica alla configurazione, nessun ridisegno dell'architettura, bastano pochi clic e il prezzo per unità della risorsa cala drasticamente.

Azure mette a disposizione una Reservation Recommendation API e mostra raccomandazioni a livello di subscription tramite Azure Advisor; tuttavia, se vuole vedere le raccomandazioni per l'intero billing scope (come dovrebbe, per massimizzare l'utilizzo delle Reservation), il modo per accedervi è un po' macchinoso: nel portale Azure vada in Reservations > Add e lì troverà tutti i servizi a cui si applicano le reservation con le relative raccomandazioni.

Personalmente trovo i portali di AWS e GCP più semplici da usare: entrambi forniscono le raccomandazioni di reservation per i servizi idonei in un unico posto, senza dover navigare tra varie schermate. Ma non concentriamoci sull'estetica: la cosa importante è analizzare quelle raccomandazioni e applicare quanto prima quelle adatte al proprio caso d'uso. https://azure.microsoft.com/en-us/pricing/offers/savings-plan-compute

3\. Spot Instances

Se sta eseguendo workloads che tollerano interruzioni (si pensi ad ambienti di test e sandbox, batch job, processi asincroni), tutte e tre le piattaforme offrono Spot instance. L'idea alla base delle Spot instance nasce dalla capacità in eccesso che gli hyperscaler hanno nei propri data center: invece di lasciarla inutilizzata, la rendono disponibile ai clienti con uno sconto importante. In AWS e Azure, i clienti possono persino impostare un prezzo massimo che sono disposti a pagare per queste VM, ottenendo molto più controllo sui costi.

Immaginiamo che ci sia maggiore domanda di capacità in una Availability Zone: in tal caso lo Spot price aumenterà, superando potenzialmente la soglia fissata dal cliente. In questo scenario, il cloud provider avvia il processo di eviction, di fatto spegnendo la VM. Il cliente può scegliere se mantenere la VM e i suoi dischi (continuando a pagarli) in attesa che il prezzo torni a scendere, oppure eliminarla, interrompendo tutti gli addebiti.

Azure offre le Spot Virtual Machines con supporto per l'impostazione del prezzo massimo e per il comportamento di eviction; le macchine della serie B e le promo size, però, non sono supportate. I clienti possono inoltre distribuire i Virtual Machine Scale Sets per Spot VM, combinando le SpotVM con lo scaling automatizzato e riducendo ulteriormente il rischio di brutte sorprese in bolletta dovute a uno scaling eccessivo.

Cosa rende Azure diverso

Abbiamo visto alcuni approcci all'ottimizzazione del cloud validi per tutti gli hyperscaler, ma cosa dire delle specificità di Azure? Esistono vantaggi unici che possiamo sfruttare per ridurre ulteriormente i costi?

1\. Azure Hybrid Benefit: giochi la carta del BYOL

I clienti DoiT spendono milioni di dollari al mese in licenze Windows quando eseguono workloads Windows su AWS o GCP, ma chi ha già un contratto di licenza Windows con Software Assurance può sfruttare l'Azure Hybrid Benefit: consente di portare le licenze on-premise esistenti per Windows Server, Microsoft SQL Server e prodotti Linux nei deployment cloud.

Lo so, non è l'argomento più entusiasmante del mondo, ma è importante sottolineare che questo programma permette di riutilizzare di fatto le licenze on-premise per le risorse in Azure, generando uno sconto enorme. AWS e GCP hanno stretto accordi con Microsoft che consentono ai clienti di portare le proprie licenze quando utilizzano prodotti Microsoft sui loro cloud, ma Azure Hybrid Benefit abbatte il costo totale in modo significativo (a volte anche dell'85%). Per saperne di più a questo link

2\. Pricing Dev/Test

Con una mossa unica nel suo genere, Azure offre un pricing dedicato agli ambienti non di produzione (Dev/Test pricing) attraverso i suoi programmi Enterprise Agreement. Abbiamo già visto come le Spot VM possano ridurre i costi degli ambienti di test, ma quella strategia è limitata alle sole VM di Azure. Con il Dev/Test Pricing è coperta invece un'ampia gamma di servizi, tra cui SQL Database e App Service, riducendo significativamente il TCO degli ambienti di test. Se il suo team utilizza Azure DevOps o sottoscrizioni MSDN, si assicuri di avviare VM e servizi nella fascia di prezzo Dev/Test ovunque sia possibile.

3\. Attivi il Dynamic Scaling per Azure Cosmos DB

Questa potrebbe esserle sfuggita, soprattutto se utilizza Azure Cosmos DB da molto tempo. Da settembre 2024, Microsoft ha modificato il modo in cui Cosmos DB scala i database, introducendo il Dynamic Scaling.

In precedenza, lo scaling veniva attivato in base alla regione o alla partizione più attiva: in apparenza un comportamento positivo, ma quando il database presenta workloads non uniformi, con una regione o partizione sotto pressione molto maggiore rispetto alle altre, questo meccanismo favoriva scale-up inutili e costosi.

Ora Microsoft fattura i database multi-regione su base per-regione e non più in base alla regione più attiva. Inoltre, lo scaling avviene per partizione, permettendo di fatto ai clienti di ottenere una fatturazione più aderente ai propri pattern di utilizzo.

Suggerimento operativo: se il suo account Azure CosmosDB è stato creato dopo il 25 settembre 2024 non deve fare nulla, è abilitato di default. Per gli account creati prima di tale data, può attivarlo seguendo le istruzioni a questo link.

Ora che abbiamo visto quali best practice accomunano AWS, GCP e Azure e quali assi nella manica ha Azure per rendere più efficienti i nostri investimenti cloud, qual è il prossimo passo? Naturalmente contattare DoiT su doit.com/services 😊