Per comprendere la strategia di Microsoft sul cloud computing occorre prestare attenzione allo sviluppo di Azure: David Chappell, a capo della società di consulenza Chappel & Associates e considerato uno dei massimi esperti mondiali nel settore, ha spiegato che, con Azure, Redmond intende offrire una soluzione altamente affidabile e scalabile con cui le aziende possano rendere disponibili le proprie applicazioni su Internet tramite la sua piattaforma.
La piattaforma Azure poggia su tre pilastri:
- Windows Azure, il sistema operativo dove sono eseguite le applicazioni e dove sono mantenuti i dati nella cloud;
- SQL Azure, il database in cui vengono archiviati i dati della cloud;
- MS.NET Services, l'insieme di servizi web atraverso cui le applicazioni e i servizi esterni alla cloud si collegano e interagiscono con le applicazioni che si trovano all'interno della cloud.
Windows Azure può essere quindi scomposto in tre parti:
- Compute, che è il servizio che consente l'esecuzione delle applicazioni;
- Storage, che serve per mantenere i dati;
- Fabric, che è lo strumento per gestire e per monitorare le applicazioni che si trovano nella cloud.
Compute è stato progettatto per offrire lo scale out, ovvero la possibilità di eseguire più istanze del medesimo applicativo su più server.
"Se andiamo ad osservare meglio com'è fatto Compute, vedremo che ogni applicazioni per Azure può avere più istanze ed ognuna è eseguita sulla propria macchina virtuale" ha spiegato Chappell. "Ognuna di queste macchine virtuali gira su una versione di Microsoft Hyper-V ottimizzata per il cloud computing, e contiene un'installazione di Windows Server 2008 a 64 bit. Per eseguire la propria applicazione dopo averla caricata nella cloud, uno sviluppatore utilizzerà uno speciale file di configurazione ove indicherà quante istanze dovranno essere eseguite. A quel punto, Windows Azure creerà le macchine virtuali necessarie ed eseguirà l'applicazione".
Queste macchine virtuali possono essere di due tipologie:
- Web, dedicata alle web application che richiedono IIS 7.0 e ASP.NET. Le macchine virtuali con questo ruolo possono accettare richieste in HTTP e in HTTPS;
- Worker, assegnata alle macchine virtuali che devono svolgere attività generiche (che non comprendano l'esecuzione delle web app) e che possono essere utilizzate per eseguire in background le elaborazioni richieste da quelle con ruolo Web. Queste macchine virtuali, a differenza dell'altro tipo, non accettano richieste di connessioni dal mondo esterno o dall'interno e l'unico modo con cui le altre macchine virtuali possono interagirvi è scrivendo dei messaggi nelle loro code.
"Se uno sviluppatore realizza ad esempio una web application che prevede l'interazione con un altro applicativo, e vuole eseguirne quattro istanze di ciascuna, nel file di configurazione indicherà che dovranno essere eseguite quattro istanze di macchine virtuali di tipo web e quattro di tipo worker". L'analista ha quindi osservato che saranno supportati soltanto gli applicativi che girano in
User Mode e non quelli in
Admin Mode.
Storage, come suggerisce il nome, è il servizio di repository offerto per mantenere i dati degli applicativi come la tabelle, le bolle (contenitori usati per i dati di tipo binario) e le code in alta affidabilità e scalabilità. A proposito delle "tabelle" dello Storage, Chappell ha sottolineato che non bisogna farsi confondere dal nome perchè non sono le normali tabelle dei database relazionali. "Anche se hanno questo nome, i dati non sono organizzati in forma tabellare ma con una semplice gerarchia, ci sono soltanto delle entità che contengono delle proprietà. Il motivo per cui Microsoft ha scelto quest'approccio è che, rispetto a quello tradizionale, risulta molto più efficiente per lo scale-out dello storage: una tabella di Windows Azure può contenere miliardi di entità al cui interno sono presenti terabyte di dati".
Sempre sulle strutture dati di Storage, Chappell ha osservato che mentre le bolle e le tabelle servono per memorizzare e accedere ai dati, le code servono per consentire alle istanze di tipo Web di scambiare messaggi con quelle di tipo Worker. Ad esempio, un utente potrebbe sottoporre una richiesta per eseguire un task che richieda parecchia potenza di calcolo attraverso una pagina web implementata da una istanza di tipo Web. Questa istanza, quando riceve la richiesta, scrive un messaggio nella coda dell'istanza Worker che descrive l'attività che deve essere espletata. L'istanza Worker, attende i messaggi con i task da eseguire e quando li trova, dopo averli completati restituisce il risultato: o su di un'altra coda o aprendo una connessione in uscita.
Tutte le applicazioni e i dati di Windows Azure sono fisicamente mantenuti in un data center di Microsoft. All'interno di questo data center, l'insieme delle macchine dedicato a Windows Azure è organizzato in una Fabric, la terza componente di Windows Azure.
Questi server sono gestiti da un software denominato
fabric controller che gestisce i server attraverso i
fabric agent, componenti software, installati nei server della Fabric.
Agent controller, grazie alle informazioni che riceve dagli agenti, oltre a monitorare le applicazioni e a gestire i sistemi operativi, decide dove eseguire le nuove applicazioni, scegliendo il server fisico in modo da ottimizzare l'uso delle risorse hardware.
L'Agent Controller svolge quest'ultima attività utilizzando il file di configurazione preparato dallo sviluppatore, che indica quante istanze di macchine virtuali di tipo web o di tipo worker voglia utilizzare.