Windows Azure Platform è la piattaforma di Public Cloud Computing che Microsoft mette a disposizione a tutti gli sviluppatori per realizzare applicazioni "in the cloud". La piattaforma Windows Azure è composta da quattro elementi fondamentali:
- Windows Azure, il vero e proprio sistema operativo sul quale girano le nostre applicazioni sul cloud;
- SQL Azure, il database relazionale fornito a servizio;
- Windows Azure AppFabric, raccoglie un insieme di servizi per le applicazioni come ad esempio l'Internet Service Bus per gestire la connettività tra servizi ed applicazioni e l'Access Control Service per garantire gli aspetti di federazione e di autorizzazione alle nostre risorse sul cloud;
- Marketplace, che permette di condividere e pubblicare in un unico repository tutte le nostre soluzioni.
Per meglio comprendere la piattaforma Windows Azure è utile affrontare aspetti più pratici come l'utilizzo e gli strumenti a disposizione. Questi infatti sono gli obiettivi che ci siamo prefissati con questa breve guida, che vuole essere quindi un modo pragmatico per avvicinarsi al mondo del cloud computing partendo da zero, ovvero non richiedendo nessun tipo di conoscenza pregressa in ambito Cloud.
Costruiremo, passo dopo passo, una semplice applicazione che utilizza tutte le funzionalità della piattaforma, permettendoci di esplorarle con precisione e allo stesso tempo con semplicità. Infine, il nome Code Snippets vuole indicare l'estrema modularità del mini corso! Tutto il codice proposto potrà essere copiato ed incollato nelle nostre applicazioni o demo per poter provare con il minor numero di passi possibile le singole funzionalità!
Perchè usare Windows Azure Platform?
I vantaggi di Windows Azure Platform per chi sviluppa software sono facilmente riconducibili a quattro macro aree:
1. Focalizzazione sullo sviluppo e non sulle "operations"
Il primo elemento nasce da una semplice considerazione: chi ha come business primario lo sviluppo del software non vede nessun valore strategico nelle attività di configurazione e soprattutto di maintenance dei propri applicativi su infrastrutture virtuali o reali.
Pensiamo a quanto tempo occorre per la configurazione infrastrutturale di server, web server, router, load balancer mentre lo scopo finale è quello di vendere e far usare il nostro software.
Inoltre, in molte realtà è lo stesso programmatore costretto ad indossare "il cappello da sistemista" e portare la soluzione a casa del cliente dove dovrà gestire infrastrutture ICT sempre diverse! Inoltre questo modello in alcuni casi può rappresentare un freno alla valutazione della soluzione da parte di potenziali clienti che lavorano in mercati geograficamente lontani.
In uno scenario come quello descritto, Windows Azure, ponendosi come una piattaforma per il deployment delle applicazioni, ci permette di focalizzarci solo sul nostro core business, ovvero lo sviluppo del software. Tutti gli aspetti di alta affidabilità, scalabilità e sicurezza ci vengono forniti dalla piattaforma. Nostro compito rimane quello di fare il deployment e la maintenance del nostro software, tutto il resto è a carico di Windows Azure.
Un altro aspetto molto importante legato allo sviluppo del software è il riutilizzo delle skill. Infatti con Windows Azure potremo sviluppare e installare soluzioni per il cloud scritte con linguaggi (.NET, Java, PHP, Ruby, C++) ed ambienti diversi (Visual Studio, Eclipse, ...).
2. Capex vs Opex
Un altro aspetto importante è il così detto Capex verso Opex che il Cloud Computing permette di attuare. Dietro questi termini tecnici dell'economia si nasconde un concetto molto semplice.
Una piattaforma come Windows Azure permette di passare da un modello Capex (CAPital Expenditures - spesa di capitale) ovvero basato su investimenti anticipati (es: acquisto di hardware e software) ad un modello Opex (OPerational Expenditures - spesa operativa) dove si acquistano direttamente i servizi necessari (I GB di storage, le ore CPU,le transazioni, ecc...).
In questo contesto una volta sviluppato il software non avremo bisogno di acquistare a priori tutti i componenti per far girare il nostro applicativo: ma una volta effettuato il deployment su Windows Azure pagheremo semplicemente l'uso delle risorse utilizzate.
3 e 4. Modelli pay-as-you-go ed Elasticità
Infine, a quest'ultimo aspetto si affiancano i concetti di:
- pay-as-you-go: la possibilità di pagare per le risorse che utilizziamo solo ed esclusivamente quando ne abbiamo bisogno
- Elasticità: richiedere alla piattaforma un numero arbitrario di risorse
Queste possibilità garantite da Windows Azure aprono nuovi scenari molto interessanti: ad esempio se in alcuni momenti dell'anno la nostra applicazione deve soddisfare un maggior numero di richieste, come nel caso dei programmi delle paghe o quelle soluzioni legate a particolari campagne marketing, potremo fornirgli un numero di istanze maggiori (elasticità) che andremo a pagare solo per quel dato periodo (pay-as-you-go). Una volta terminata questa esigenza potremo erogare nuovamente il servizio con il numero di risorse precedenti (elasticità e pay-as-you-go funzionano sia nell'aggiunta che nella rimozione di risorse).
Un altro esempio comune è rappresentato dalle soluzioni che sono online solo per un determinato periodo: possiamo avere la nostra applicazione online (e quindi pagare le risorse) solo per il periodo necessario e, una volta passato tale periodo, "spegnere" le nostre risorse portando a zero i nostri costi!
Prima di augurarci "happy coding con Windows Azure" vi segnalo gli articoli della collana I Quaderni Del Cloud che possono essere intesi come complementari a questo corso per programmatori perchè hanno l'obiettivo di presentare ad un'audience di architetti e TDM (Technical Decision Makers) il tema del Cloud Computing in generale e di Windows Azure in particolare!
Link utili
Gli autori
La guida è stata realizzata da Roberto Brunetti
Roberto Brunetti è uno dei fondatori del gruppo DevLeap con il quale eroga servizi di formazione e consulenza. Si occupa di Windows Azure da ottobre 2008 ed è autore di un libro sulla piattaforma edito da Mondadori Informatica. Durante la pubblicazione di questi snippet sta scrivendo un libro per Microsoft Press ThinkAhead, società del gruppo DevLeap, ha varie applicazioni pubblicate nel cloud fra cui il proprio sito web (http://thinkahead.cloudapp.net) e una serie di servizi per le applicazioni Windows Phone 7 (http://wp7.thinkahead.it).
Introduzione a cura di Mario Fontana
Mario Fontana è Senior Architect Evangelist - Cloud Computing