Archivio mensile:Dicembre 2016

Un mese con Azure

Come già anticipato nel post precedente, ho spostato (o meglio copiato) la base dati del progetto su Azure ed ho cominciato ad usare i servizi cloud di Microsoft. Al termine del primo mese di utilizzo posso fare un primo bilancio di costi, qualità e usabilità della piattaforma.

Sono sempre stato un po’ scettico su Azure sia a causa di una prima non positiva esperienza quando il servizio era ancora agli esordi e quindi non esattamente intuitivo nell’utilizzo, sia per la paura di una tariffazione oscura ed incontrollabile.

A distanza di qualche anno da questa prima esperienza, Azure ha raggiunto una completezza e chiarezza di servizio, supportata da una interfaccia utente intuitiva e potente, tale che l’utilizzo risulta agevole fin dai primi approcci.

Le diffidenze verso la tariffazione sono state vinte grazie alla sottoscrizione DreamSpark ottenuta tramite l’email (da studente) dell’Università che consente l’utilizzo gratuito di diversi servizi. In realtà, con la sottoscrizione DreamSpark si fa ben poco, soprattutto a livello di database, ma è servita come chiave di ingresso nel mondo di Azure. Appena mi sono reso conto che il servizio poteva essermi utile, ho cercato di espandere le possibilità di utilizzo e mi sono ricordato che come sviluppatore Microsoft, tramite il programma Dev Essentials, potevo avere diritto, per un anno, ad un credito mensile pari a 25 euro. Restava da verificare cosa fosse possibile fare con 25 euro/mese.

azure_novembre

Il grafico, estratto dalla dashboard del mio account Azure, mostra il consumo di credito nel primo mese ed appare evidente che non ho esaurito il credito malgrado l’uso intensivo e gli errori di configurazione dati dall’inesperienza.

Come prima cosa ho creato un database SQLServer analogo a quello locale del progetto. Ho scelto una configurazione con un numero di DTU (che sono le unità di elaborazione dei database Azure) non troppo basso perché dovevo trasferire qualche milione di righe solo per creare la base dati e la sottoscrizione DreamSpark, con solo 5 DTU, era andata immediatamente in saturazione. Ho scelto la soluzione da 10 DTU che si è rivelata sufficiente alle operazioni necessarie al trasferimento dei dati ma anche all’elaborazione delle interrogazioni. Azure inoltre, in base all’utilizzo del database, suggerisce ed applica ottimizzazioni alle tabelle e alle query.

Ho usato il database per alcuni giorni notando che il consumo di credito era abbastanza irrisorio e che l’utile proiezione del grafico preannunciava che avrei terminato il mese con oltre metà del credito disponibile.

Ho deciso di creare quindi anche una macchina virtuale da usare collegato in Remote Desktop per accedere al database da dispositivi privi di software specifico. Le macchine virtuali generiche Windows 10 sono riservate ai sottoscrittori MSDN ma è sempre possibile creare una macchina con Visual Studio. Il sistema operativo, in questi casi, è una versione server di Windows, in particolare Windows Server 2012 R2. Qui ho commesso un errore: nel creare la macchina virtuale, il sistema suggerisce due configurazioni abbastanza carrozzate in termini di RAM e processore ma con tariffe alte. Confidando in un utilizzo saltuario, ho scelto una di queste senza notare il link “mostra tutte”. Nel grafico, questa scelta corrisponde alla drastica e rapida riduzione del credito. Dopo aver notato che, malgrado un uso veramente minimo, il credito calava vertiginosamente, ho distrutto e ricreato la macchina virtuale usando un diverso piano tariffario, riducendo la RAM a 1.75GB e usando un processore mono core. Il grafico del consumo, a quel punto, ha ripreso un andamento più rassicurante. La cosa positiva da notare è che molte delle operazioni di creazione di servizi (siano essi database o macchine virtuali) è intuitiva e veloce.

Una sola accortezza è necessaria nell’uso delle macchine virtuali di Azure: non basta spegnerle per ridurre quasi a zero il consumo, vanno deallocate. In pratica, oltre a spegnere la macchina occorre spegnerla anche dalla piattaforma e poi deallocarla premendo nuovamente sul pulsante arresta della propria area di gestione. In alternativa è possibile configurarsi uno script PowerShell da lanciare dalla propria dashboard. Come stima grossolana, un’ora di utilizzo di una macchina virtuale di queste dimensioni costa circa 0.20 euro.

Dal punto di vista della qualità del servizio c’è poco da dire, Azure funziona alla grande e fornisce quasi out of the box moltissimi servizi. Per il progetto che sto portando avanti, ho configurato un database replica di quello ufficiale e una macchina per lo sviluppo e l’interrogazione della base dati in pochissimo tempo e con una spesa abbordabile. Inoltre non devo preoccuparmi di configurazioni del sistema, di hardware (e relativi guasti) e, soprattutto, di backup.

In conclusione, grazie alla sottoscrizione Dev Essentials, godrò per un anno di un ambiente di lavoro potente, raggiungibile da ovunque e sicuro. Al termine della sottoscrizione, molto probabilmente, deciderò di stanziare un fondo per l’uso della piattaforma, magari limando ancora un poco le risorse per contenere ulteriormente le spese anche se sono convinto che la comodità di un sistema come quello che ho configurato su Azure non abbia prezzo.