Gestire le istanze di Windows Azure tramite cmdlets

Una delle cose più interessanti di una piattaforma cloud è la capacità di scalare. Non è che mi piaccia tanto questo verbo ed oggi è anche un pò di moda (forse come lo è il Cloud Smile) ma detto in parole povere, la piattaforma è in grado di fornire SEMPRE le risorse necessarie per un corretto funzionamento della propria applicazione indipendentemente dalle richieste che vengono fatte. Un utente, mille utenti, cento mila utenti e tutto si adatta magicamente. In Windows Azure questa “scalabilità” la si può ottenere combinando correttamente tra loro il numero di instanze presenti e la dimensione delle stesse. La formula è la seguente :

Scalabilità = # istance x dimensione_VM

La dimensione della VM può variare da un processore e qualche chilo di RAM fino a 8 processori e un bilico di memoria. Il mumero di istance può variare dallo 0 (in questo caso il costo della piattaforma è molto basso..) fino a quante ne servono (esiste una limitazione che spiego dopo).

Quindi combinando opportunamente le due dimensioni si ottengono le risorse che servono per far funzionare correttamente il proprio software. Essendo la piattaforma Windows Azure elastica ci si aspetta che le dimensioni non sia fissate a priori e che possano variare appunto in modo elastico. Potrei per esempio all’aumentare del numero di utenti aumentare il numero di istanze mantenendo fissa la tipologia di macchina virtuale. Oppure al contrario cambiare la dimensione della macchina virtuale e lasciare invariato il numero di istanze.

In Windows Azure (per come è fatto oggi) cambiare il numero di istanze significa semplicemente dire al sistema quante ne vogliamo e questa operazione può essere fatta al volo attraverso il portale windows.azure.com o utilizzando le Management API. Se invece voglio cambiare il tipo di VM devo procedere a fare un nuovo deployment della mia soluzione.

Windows Azure non aumenta e diminuisce le istanze automaticamente ma richiede che sia l’utente a definire quanto deve essere scalabile la propria soluzione. Per poter automatizzare questa operazione ci sono diversi modi e uno di questi è quello di utilizzare questo un prodotto che si chiama Azure Management Cmdlets (https://www.cerebrata.com/Products/AzureManagementCmdlets/Default.aspx) che è un insieme di PowerShell CmdLets in grado di gestire lo storage e gli hosted services di Windows Azure in modo automatico.

ps. Tornando alla limitazione dei core, questa è la formula per calcolare quanti core sta usando il vostro deployment :

Core Usati = #istance x numero_di_processo_della_VM_scelta

Se guardiamo la tabella qui sotto possiamo facilmente calcolare il numero di core:

image
 

2 istanze di un VM Extra large sono 16 core, 5 istanze di una VM grande sono 20 core.

La limitazione può essere superata chiedendo più istanze al supporto clienti di Windows Azure.