Emanuele Rossi

Organizzazione e riduzione dei costi di Azure

Come abbiamo ridotto del 70% i costi Azure previsti riorganizzando l'architettura cloud di un cliente enterprise: resource group, ARM template e pipeline DevOps.

Organizzazione e riduzione dei costi di Azure

Un caso di successo, in cui la riorganizzazione delle risorse Azure ha ridotto notevolemente i costi di Azure. Le funzionalità di Microsoft Azure e le modalità di utilizzo a consumo portano molta flessibilità a chi decide di adottare la piattaforma.

Allo stesso tempo, però, il suo utilizzo massivo necessita di una categorizzazione delle risorse, sfruttando i resource group sia per motivi di “ordine” sia per questioni di sicurezza.

Separare i vari ambienti in diversi resource group per poi applicare permessi ai singoli gruppi risulta essere utile per le organizzazioni, ma in questo modo le risorse su Azure proliferano causando:

  • L’aumento dei costi generali per l’utilizzo della piattaforma
  • L’aumento del tempo per la configurazione e il mantenimento delle risorse
  • L’aumento dello sforzo per la gestione della sicurezza

Come si esegue un Azure Cost Assessment

Prima di intervenire sull’architettura, è indispensabile capire dove vanno i soldi. Un Azure Cost Assessment parte dall’inventario completo delle risorse attive: virtual machine, storage account, database, servizi PaaS, indirizzi IP pubblici. Per ogni risorsa si verifica se è effettivamente in uso, da quanto tempo è attiva e a quale progetto o ambiente appartiene.

Questa fase spesso riserva sorprese. Molte aziende scoprono risorse dimenticate: VM ferme che continuano a generare costi, storage account con dati di test mai eliminati, ambienti di sviluppo rimasti accesi dopo la fine di un progetto. Non si tratta di casi rari — è la norma per chi gestisce un tenant Azure cresciuto nel tempo senza una governance strutturata.

Il passo successivo è la classificazione per tipo di costo: risorse a pagamento fisso (che hanno un costo indipendente dall’utilizzo effettivo) e risorse a consumo (che fatturano in base all’uso reale). Questa distinzione è fondamentale per decidere quali risorse vale la pena mettere a fattore comune e quali, invece, conviene mantenere separate per progetto.

Per l’analisi si usa Azure Cost Management + Billing, che permette di filtrare i costi per resource group, tag, servizio e periodo di tempo. Incrociare questi dati con l’inventario delle risorse attive consente di identificare i duplicati, i costi anomali e le aree dove la riorganizzazione produce il maggior risparmio.

Risparmio dei costi, grazie a una nuova architettura

Abbiamo analizzato in dettaglio i costi e la tipologia di risorse che erano in uso dal cliente per capire quali risorse potevano essere messe a fattore comune e iniziare quindi l’attività di riorganizzazione grazie a una nuova Azure Architecture.

Abbiamo completato il pacchetto con una gestione automatica dei rilasci di queste risorse tramite template ARM (Azure Resource Manager) e pipeline automatica di installazione delle risorse con Azure DevOps per permettere al cliente di avere un meccanismo di recovery dell’intera infrastruttura delle risorse Azure.

Lo sviluppo della nuova Azure Architecture

Durante la gestione del progetto di sviluppo della Azure Architecture, i nostri esperti hanno rispettato le necessità del cliente a pieno:

  • La divisione delle risorse per progetto è stata mantenuta.‍
  • Le risorse con pagamento fisso sono state messe a fattore comune e le risorse a consumo sono state sfruttate al massimo.‍
  • La sicurezza è stata messa in primo piano: tutte le risorse in comune sono in carico all’IT dell’azienda, mentre è stata lasciata libertà operativa a livello di progetto. ‍

Disaster & Recovery: la rete di sicurezza dell’infrastruttura

Ridurre i costi è importante, ma non può avvenire a scapito della resilienza. Per questo motivo, parallelamente alla riorganizzazione dell’architettura, abbiamo strutturato un meccanismo completo di Disaster & Recovery basato su Infrastructure as Code (IaC).

Ogni risorsa Azure è stata codificata in template ARM (Azure Resource Manager). Questo significa che l’intera infrastruttura - virtual network, storage, database, app service, configurazioni di sicurezza - esiste non solo come insieme di risorse attive nel tenant, ma come codice versionato e tracciabile. Il repository diventa la fonte di verità: se qualcosa cambia accidentalmente nell’ambiente di produzione, la versione corretta è sempre disponibile.

La pipeline Azure DevOps si occupa del deployment automatico. In caso di incidente grave, come la corruzione di un ambiente o la perdita accidentale di risorse, il team IT non deve ricostruire manualmente nulla. Lancia la pipeline, seleziona l’ambiente di destinazione e l’intera infrastruttura viene ricreata in modo automatico e ripetibile, con gli stessi parametri e le stesse configurazioni.

Questo approccio riduce due tipi di rischio in parallelo. Il primo è il rischio operativo: meno dipendenza dal know-how individuale, meno errori manuali, procedure di recovery documentate e testabili. Il secondo è il costo di recovery: in assenza di IaC, ricostruire un’infrastruttura complessa dopo un incidente può richiedere giorni di lavoro. Con le pipeline automatizzate, i tempi si riducono a ore.

Riduzione dei costi Azure

La Azure Architecture pensata dai nostri esperti ha permesso al cliente di risparmiare il 70% dei costi Azure che aveva in previsione di affrontare.

Questa notevole riduzione dei costi è stata accompagnata da un’organizzazione più robusta del tenant, che è stato preparato per una gestione centralizzata delle risorse in comune (sia dal punto di vista della configurazione che da quello della sicurezza), per una gestione delle risorse di progetto demandata a chi si occupa delle soluzioni specifiche e per un sistema di Disaster&Recovery dell’intera infrastruttura.

Emanuele Rossi

Scritto da

Emanuele Rossi

Infra & Security · Dev4Side