Microsoft Azure: automatizzare la deallocazione delle VM

Un aspetto interessante sotto il profilo economico di Microsoft Azure è che le VM che vengono arrestate tramite il portale (ovvero messe nello stato Arrestata Deallocata) non vengono fatturate, ma ovviamente rimangono configurate e possono essere attivate successivamente. al tal riguardo si veda le seguenti FAQ disponibili nella sezione Dettagli prezzi – Macchine virtuali:

image

image

image

Come indicato espressamente solo le VM arrestate tramite il portale di Azure cessano di generare addebiti, cosa che non avviene se le VM vengono arrestate “internamente” tramite le opzioni di spegnimento del sistema operativo.

In scenari in cui ci si può permettere di arrestare le VM in quanto vi sono fascie orarie di inutilizzo questo implica un risparmio economico che diventa importante soprattutto sul lungo periodo.

Volendo ragionare con cifre alla mano si prenda ad esempio un VM di taglio A5 Standard (2 core, 14 GB Ram, 127 GB per disco OS, 135 GB per disco temporaneo con supporta fino a 4 data disk da 1 TB ciascuno con un massimo di 500 IOPS per disco) se si esegue il calcolo dei costi mensile e annuale considerando tre ore di inutilizzo al giorno (ad esempio dalle 2 alle 5 di notte) con le tariffe in vigore attualmente (giugno 2014) per l’Area Europa Occidentale si otterranno i seguenti costi che sono pari ad un risparmio giornaliero di 1/8 (12,5%):

Servizio

Tariffa

Costo per VM attiva
24 ore al giorno

Costo per VM attiva
21 ore al giorno

Risparmio

VM A5 Standard
tariffata a consumo

0,254 Euro/ora

188,976 Euro al mese

165,354 Euro al mese

23,622 Euro

VM A5 Standard
tariffata con piano a 12 mesi e pagamento anticipato

0,173 Euro/ora

1.515,48 Euro all’anno

1.326,045 Euro all’anno

189,435 Euro

(*) Il costo mensile è stimato calcolando 31 giorni al mese

(**) Il costo annuale è stimato calcolando considerando 365 giorni all’anno

Appare quindi evidente che automatizzare la deallocazione schedulata delle VM nei loro periodi di inutilizzo diventa davvero interessante sotto il profilo economico.

L’implementazione di tale automazione non difficile e può essere realizzata tramite il cmdlet PowerShell ShutdownRoleOperation come suggerito nelle FAQ viste precedentemente.

L’approccio più pratico è quello di utilizzare il servizio di Automazione di Microsoft Azure al momento in Preview e che permette di gestire dei Workflow la cui esecuzione può essere schedulata.

Per i dettagli di un’implementazione di questo tipo si veda il post Step-by-Step: Getting Started with NEW Microsoft Azure Automation preview feature di  Keith Mayer (Microsoft Senior Technical Evangelist) che tratta proprio il caso dell’automazione della deallocazione di una VM.

Le tariffe del servizio di automazione di Microsoft Azure sono indicate in Automazione (Anteprima) – Dettagli prezzi. Il servizio è ancora in preview e quindi gratuito e le tariffe indicate potrebbero essere riviste, ma al momento i costi per il suo utilizzo sarebbero i seguenti:

  • Costo mensile per tariffa a consumo 14,90 Euro
  • Costo mensile per tariffa con piano a 12 mesi e pagamento anticipato 10,13 Euro pari a 121,56 Euro all’anno

Nonostante anche conteggiando l’utilizzo del servizio il risparmio nel caso descritto ci sia ancora ovviamente su VM di taglio inferiore potrebbe essere eseguo. In questi casi sarebbe possibile pensare di automatizzare il processo eseguendo lo script PowerShell semplicemente da un computer in locale che per altre ragioni risulta sempre attivo (si ricordi che lasciare un computer accesso solo per questo scopo ovviamente comporta un costo in termini di consumo di corrente elettrica che tramite il tool on line dell’UE ENERGY STAR può essere stimato in 48,3 Euro all’anno).

Per uno script che si occupa di avviare e arrestare le VM in Microsoft Azure si veda il seguente script Start and Stop Windows Azure Virtual Machines.