Windows Azure Hello World !!

Il cloud computing è una delle nuove e più interessanti frontiere del mondo dell’IT che si sta oramai affermando come una realtà e che promette di trasformare in modo significativo, la disponibilità delle classiche risorse che oggi cerchiamo in un hardware e in un sistema operativo installati in un data center locale. Con lo sviluppo per Internet di piattaforme di questo tipo, si aprono nuovi scenari che vanno oltre a quello che oggi è possibile fare in termini di servizi e dati sulla rete, aprendo la strada a veri e propri sistemi operativi self service dove si possono ottenere su richiesta ed in modo rapido, capacità di elaborazione, storage, servizi di database, etc . Diventa molto più semplice sviluppare nuove idee di servizi e soluzioni ed ottenere ad un minor costo le risorse per poterle sviluppare e pubblicare su Internet. Si avvia, inoltre, la pianificazione di una trasformazione di molti servizi aziendali che, nel tempo, si sposteranno nei nuovi grandi datacenter che, sviluppandosi in modo rapido, stanno materializzando l’infrastruttura per rendere il cloud computing una realtà.

Con il rilascio della CTP di Agosto, la soluzione per il Cloud di Microsoft ovvero Windows Azure Platform si avvicina al rilascio ufficiale di una prima serie di servizi di Cloud Computing. La nuova release ci ha messo a disposizione una nuova versione degli strumenti di sviluppo e gli SDK per costruire soluzioni che possano poi essere distribuite e gestite sulla piattaforma, e la possibilità di accedere a degli spazi di test attivabili su richiesta e disponibili immediatamente per poter poi provare ad effettuare un deployment reale di dati ed applicazioni sulla piattaforma per il Cloud. Tra le novità più interessanti la trasformazione dei servizi di database che cambiano anche nome in Slq Azure e che ci mettono a disposizione una vera e propria infrastruttura Sql Sever pensata per il Cloud e utilizzabile su richiesta .

Windows Azure Platform è una vera e propria piattaforma di sviluppo pensata per il Cloud Computing, ospitata in data center di Microsoft distribuiti in diverse zone del mondo, che fornisce un sistema operativo per il cloud (Windows Azure ) e un set di servizi per gli sviluppatori che possono essere utilizzati in combinazione o singolarmente, per sviluppare e eseguire nuove applicazioni che vengono poi gestite sulla nuova piattaforma e che possono integrarsi semplicemente anche con applicazioni locali già esistenti.

Questa piattaforma oltre ad offrire i suoi servizi di base per un utilizzo diretto è anche l’infrastruttura sulla quale Microsoft sta sviluppando anche le sue soluzioni SaaS.

Di seguito un’immagine della piattaforma complessiva

clip_image001

Si va dai servizi di base offerti dal sistema operativo per il cloud Windows Azure, ai servizi di Internet Service Bus dei .NET Services, ai servizi di Database di Sql Azure.

Con il sistema operativo per il cloud della Windows Azure Platform, ovvero Windows Azure vengono messe a disposizione, su richiesta, quelli che sono i servizi fondamentali che siamo abituati a trovare in un sistema operativo installato in un computer locale. Essenzialmente abbiamo:

- Capacità di elaborazione

- Storage (Tabelle, Blob, Code asincrone)

- Deployment, Monitoring e Maintenance

- Servizi automatici di Management, Load Balancers, DNS

- Ambiente di programmazione

I diversi servizi possono essere utilizzati in modo singolo o in combinazione tra loro per realizzare soluzione più complesse. Ad esempio lo storage può essere usato per depositare informazioni, dati o file, sia per applicazioni che poi si eseguono in Windows Azure sia per applicazioni che invece vengono eseguite localmente in un nostro datacenter e che usano lo storage del sistema operativo per il Cloud che è ospitato nei data center di Microsoft, sfruttando le API HTTP REST che la piattaforma mette a disposizione per questi servizi.

La piattaforma fornisce le funzionalità e le risorse per le nostre applicazioni in base alle configurazioni impostate , garantendo una scalabilità praticamente infinita e un rapido adeguamento delle risorse fornite in base alle necessità richieste. I servizi vengono direttamente messi a disposizione delle applicazioni e tutta la classica attività di manutenzione, patching, monitoring del sistema di base, load balancing, DNS, etc , viene gestita automaticamente, liberandoci dai costi di gestione e manutenzione del software di base, permettendoci così, di concentrarci esclusivamente sul livello applicativo.

Tutta la parte di amministrazione delle configurazioni e deployment di Windows Azure si può gestire attraverso l’interfaccia Web di amministrazione che si trova a https://windows.azure.com/ dove si può accedere con il proprio Live Id accertandosi di aver prima impostato sulla nazionalità italiana i parametri di nazionalità del profilo del vostro LiveID su Windows Live e creare un developer account.

Potete verificare che sia impostata la nazionalità italiana sul vostro LiveID qui https://account.live.com/ :

image

Per eventualmente cambiarlo si può usare il menù Profile details ed entrare a modificare i dati del profilo della nazionalità.

Tramite  l’ interfaccia del portale di Windows Azure si possono anche gestire le applicazioni che ed i servizi della piattaforma.

clip_image003

Per poter successivamente creare una applicazione di test , oltre a registrarsi sul portale, occorre richiedere un token gratuito di test da utilizzare poi per l’attivazione, come spiegherò successivamente nel post quando procederemo alla pubblicazione dell’applicazione.

Per poter sviluppare soluzioni per Windows Azure è disponibile anche un SDK e dei Tool completamente integrati con Visual Studio che mettono a disposizione degli specifici template per i progetti che possono essere scaricati da questa   .

clip_image005

La parte di SDK e Tool Per Visual Studio permette di sviluppare e eseguire il test delle vostre applicazioni .NET e delle storage completamente in locale, per poi andare ad effettuare il deployment delle soluzioni realizzate e dei metadati di configurazione delle risorse sulla piattaforma nel cloud. Si possono scaricare SDK e Tool per Visual Studio da questa pagina  e sullo stesso sito si può trovare anche un interessante e completo training kit con laboratori guidati per tutti i servizi e un ampia offerta di video e documenti .

Con la parte di sistema operativo di base della Windows Azure Platform , ovvero Windows Azure possiamo sviluppare due tipologie di applicazione :

- Web Role (ASP.NET, WCF Service, FastCGI, etc)

- Worker Role

clip_image007

Le Web Role sono come dice la parola stessa delle Web Application basate su pagine Web o Web Services.

I Worker Role sono invece delle applicazioni che si eseguono in background per la realizzazione di Task specifici, concettualmente molto simili a quello che possiamo fare con i Windows Service sulla versione di Windows tradizionale. Un utilizzo tipico dei Worker Role è l’implementazione di processi asincroni partendo dalla lettura di informazioni che vengono inserite in una delle code asincrone di Windows Azure. Ad esempio , immaginando una applicazione che gestisce l’acquisizione di ordini o la trasformazione di immagini o comunque operazioni che non possono essere eseguite in modo sincrono rispetto all’inserimento della richiesta , possono essere per l’appunto gestite con un Worker Role che resta in attesa di richieste su una coda e avvia l’esecuzione dello specifico lavoro alla ricezione di un messaggio, disaccoppiando così l’esecuzione rispetto all’inserimento della richiesta. Nel caso della ricezione di un ordine ad esempio, ci potrebbe essere una applicazione Web Role che riceve le richieste e che scrive nello storage le informazioni relative all’ordine e poi inserisce in una coda la richiesta di esecuzione dell’ordine , che viene così ricevuta ed eseguita in modo asincrono dal Worker Roler. Anche le code di Windows Azure come le tabelle per I dati e I blob per I file, sono utilizzabili attraverso le API HTTP REST e quindi possono anche essere utilizzate da applicazioni che sono installate localmente.

Associate alle applicazioni, oltre alle componenti di codice , abbiamo a disposizione dei metadati che consentono di configurare le risorse che vogliamo utilizzare sulla piattaforma elaborativa. Ad esempio possiamo stabilire in modo molto semplice il numero di istanze che vogliamo avere a disposizione da Windows Azure e sulle quali vogliamo far eseguire la nostra applicazione. In base a queste informazioni, sia nell’ambiente di test locale al PC sia nel deployment reale nei datacenter, il servizio di management di Windows Azure denominato FABRIC, provvederà a effettuare il deployment delle istanze che abbiamo richiesto, configurare I bilanciatori di carico e a garantire il funzionamento delle istanze, riavviando o sostituendo istanze che eventualmente avessero dei malfunzionamenti. FABRIC si occupa anche del patching e del management delle macchine virtuali all’interno delle quali si eseguiranno le nostre istanze, garantendoci sicurezza, funzionalità e continuità di servizio per l’ambiente di base in cui si eseguono le nostre applicazioni. A disposizione, inoltre,  i servizi di log applicativo per monitorare il comportamento del nostro codice in esecuzione su Windows Azure.

clip_image009

Per cominciare ad introdursi allo sviluppo con questa parte di base della Windows Azure Platform, potete provare a partire con la classica applicazione Hello World !! seguendo i passi che ho descritto di seguito e che permettono di introdursi allo sviluppo e debug con gli strumenti del SDK e di Visual Studio su un PC client, per poi successivamente procedere al deployment sulla infrastruttura di Windows Azure nel Cloud .

Installato Windows Azure SDK e Tool per Visual Studio troverete un nuovo template tra I progetti da selezionare per avviare lo sviluppo di una nuova applicazione per il cloud:

clip_image011

Nello step successivo viene presentato un wizard che chiede il tipo di servizio che si vuole realizzare e procediamo con il selezionare una ASP.NET Web Role e proseguire

clip_image013

Nella soluzione creata dal template possiamo vedere una applicazione ASP.NET identica alle applicazioni che sviluppiamo per il deployment su una infrastruttura Windows tradizionale, ed in più la parte di progetto per Windows Azure con I metadati di configurazione che puoi consistono in dei file XML:

clip_image015

Con gli opportuni accorgimenti è assolutamente possibile sviluppare applicazioni che possano essere poi distribuite su server locali o sul datacenter di Windows Azure. Questa particolarità rappresenta uno dei maggiori vantaggi di Windows Azure perchè si possono sviluppare applicazioni che poi possono avere differenti modelli di deployment in funzione delle esigenze. Se , infatti, impostiamo come progetto di avvio la Web Application ed eseguiamo il debug abbiamo il normale deployment dell’applicazione nel Web Server locale di Visual Studio, se invece (come di default in questo tipo di progetto) impostiamo come progetto di avvio la cloud application ed avviamo il debug, abbiamo l’avvio dell’infrastruttura locale di test del Windows Azure SDK in cui vengono create n istanze in base alle configurazioni che vedremo successivamente e vedrete comparire nella taskbar le icone del servizio di Development Storage e di Development Fabric:

clip_image017

Facendo click sul servizio di Development Fabric ( la rotellina) protrete visualizzare la finestra di controllo del Development Fabric dove vedrete attiva la vostra applicazione, per il momento con una sola istanza. Potrete anche vedere la finestra in cui vengono visualizzate le informazioni inserite nel log dall’ambiente ed eventualmente dal vostro codice utilizzando le specifiche API di Windows Azure.

clip_image019

Inseriamo una Label nella pagina di Default e scriviamo sul load della pagina una riga per impostare il contenuto della Label con la scritta Hello World:

clip_image021

clip_image023

Inserendo un breakpoint sulla riga di codice e riavviando l’applicazione in debug con progetto di avvio impostato sul progetto Cloud si potrà effettuare il debug dell’applicazione all’interno del Development Fabric di Windows Azure.

Per poter richiedere l’avvio di più istanze di può utilizzare il file xml di configurazione del nostro servizio di Web Role che è contenuto nel progetto per il cloud e che ha l’estensione .cscfg:

clip_image025

Oppure selezionare il WebRole ed utilizzare la finestra delle proprietà ottenendo lo stesso risultato di modifica del file di configurazione.

Riavviando il progetto in debug, vedremo nella finestra della Development Fabric che questa volta sono state avviate 3 istanze come richiesto.

clip_image027

Dal Task Manager del sitema operativo potete vedere i tre processi RdRoleHost.exe che contengono le tre istanze:

clip_image029

Potete provare a terminare una delle istanze dei processi contenitore e noterete che la Development Fabric la riavvierà automaticamente.

Riportiamo le istanze a 1 e riavviando verifichiamo che viene nuovamente caricata una sola istanza. Ricordatevi di riportare a 1 le istanze prima del deployment nell’applicazione di test su Windows Azure.

Dopo esservi registrati sul portale https://windows.azure.com con il vostro Live Id accertandosi come spiegato prima di aver prima impostato sulla nazionalità italiana i parametri di nazionalità del profilo del vostro LiveID su Windows Live , per poter effettuare il deployment  nel datacenter nel cloud occorre prima creare dal menù di Windows Azure una nuova applicazione in cui effettuare il deployment del nostro esempio.

Per attivare una applicazione, occorre ottenere un token di attivazione. Con la CTP di Agosto di Windows Azure è possibile ottenere dei token gratuiti di test attraverso il portale Microsoft Connect. Utilizzando il token di test si potra procedere al deployment.

Per richiedere il token di attivazione basta fare click sul link specifico nell'area Deploy a questa pagina https://www.microsoft.com/windowsazure/getstarted/

Il link vi porta sul portale Connect dove dopo essersi autenticati con Il Live ID di nazionalità italiana potrete richiedere il token di test gratuito da usare poi per attivare l’applicazione sul portale https://windows.azure.com/ . Il token vi verrà spedito appena disponibile (genericamente 48 ore) sulla cassetta postale del Live Id con cui l'avete richiesto iscrivendovi a connect.  

Il token dovrà essere inserito utilizzando il Link Account sul menù della Home Page del portale https://windows.azure.com/ . Nell’area account c’è un link Manage My Tokens

clip_image033

Dove potete inserire il token che avete ottenuto registrandovi sul portale Connect .

Inserito il token facendo click sul voce del menù sulla destra Windows Azure, potrete accedere alla pagina di provisioning dove ora troverete attivato un progetto PDC08 come da figura che si è attivato con l’inserimento del token. Accedendo con il click sul link evidenziato del progetto

clip_image035

potrete entrare nella pagina del progetto per aggiungere una applicazione con lo specifico comando New Service evidenziato

clip_image037

Nello step successivo potrete creare una nuova Hosted Application chiamandola ad esempio test Azure usando lo specifico bottone (evidenziato sotto) e anche eventualmente uno spazio di storage . Per il nostro esercizio al momento basta la creazione della Hosted Application.

clip_image039

Il wizard di creazione della hosted application prosegue chiedendovi le informazioni relative al nome con cui volete pubblicare lo spazio e le eventuali affinità con una specifica region e l’affinità eventuale con uno storage. Impostate solo un nome e lasciate le altre impostazioni sul default:

clip_image041

Preparato lo spazio per l’applicazione procediamo con il preparare il package di deployment. Dal menù Build di Visual Studio facendo click sulla voce Publish Cloud … o direttamente dal menù contestuale della Cloud Application in Visual Studio:

clip_image043

Si otterrà la produzione da parte di Visual Studio del package di deployment della soluzione e dei file xml con i dati di configurazione

clip_image045

Verrà anche automaticamente aperto il browser con impostato l’url di deployment . Effettuato il logon nel portale di Windows Azure con il vostro Live Id con cui vi siete già registrati vi troverete nella pagina delle applicazioni in gestione e selezionando l’applicazione che avete attivato prima tramite il token.

clip_image047

Con il pulsante deploy potrete provedere a portarvi sulla pagina di deployment ed a inserire con gli opportuni comandi di selezione di file il pakage dell’applicazione ed i metadati:

clip_image049

clip_image051

Terminata l’operazione di caricamento dei file vi ritroverete sulla pagina di gestione del progetto con i due ambienti di Produzione e di staging e con il pulsante Run posizionanto sotto l’area di staging potrete avviare l’applicazione in staging.

clip_image053

Un apposito box vi segnala lo stato di avanzamento dell’operazione di avvio dell’istanza e l’url a cui sarà disponibile l’applicazione terminata l’operazione di avvio:

clip_image055

Successivamente alla ricezione della conferma dell’avvio dellavostra applicazione:

clip_image057

Potrete utilizzare l’URL indicato per navigare nella applicazione in staging ed eventualmente promuoverla in produzione con lo specifico comando.

Con il pulsante Configure, invece, potrete accedere alla pagina che vi consente di modificare la parte di configurazione delle istanze e di accedere al log delle applicazioni:

clip_image059