Il Cloud Computing è la metodologia di gestione dell'infrastruttura IT che punta a gestire esternamente le applicazioni e le attività informatiche, invece di mantenerle in azienda. Questa tendenza è in crescita negli ultimi anni poiché porta considerevoli vantaggi:
- Accesso ai servizi h24: i dati e le applicazioni aziendali risiedono su server remoti quindi sono accessibili in ogni momento e da qualunque luogo attraverso i più disparati strumenti: PC, notebook, smartphone, palmari, etc
- Riduzione dei rischi: la sicurezza dei dati è un problema che deve essere gestito dall'hosting provider e non più dall'azienda
- Costi di supporto inferiori: l'installazione dei sistemi operativi, del software e i relativi aggiornamenti è a carico del provider
- Costi di manutenzione minori: le aziende non devono più fare manutenzione ai server perché questi risiedono nei data center del gestore
- Riduzione dei costi di capitale e di gestione: le aziende non devono più acquistare server propri ne software da installare in casa ma si limitano a pagare dei canoni mensili in base a quanto consumano. Le risorse informatiche sono vendute dai gestori come servizi e le aziende pagano solo i servizi che richiedono (Pay On Demand).
Gli svantaggi, purtroppo, non mancano:
- Privacy: i dati risiedono in server dell'remoti quindi ci si deve fidare di chi li ospita
- Sicurezza: i dati sono online quindi alla mercé di hacker abili e senza scrupoli
- Continuità del servizio: i dati risiedono in remoto quindi in mancanza di collegamento ad internet non sono accessibili
Concludiamo questa introduzione distinguenfo tre tipologie di Cloud Computing:
Tipologia | Descrizione | Esempi |
---|---|---|
SaaS (Software as a Service) | Utilizzo di applicazioni remote ospitate nei server di un provider. Queste applicazioni possono essere di ogni tipologia dalla semplice Web Mail al più sofisticato pacchetto di software per l'ufficio. | Google GMail Google Docs Salesforce CRM Microsoft Cloud Services |
IaaS (Infrastructure as a Service) | Risorse hardware e software utilizzate in remoto. Tipicamente l'hosting provider crea un ambiente virtuale che ospita su un proprio server. In questa macchina virtuale vengono caricate e configurate tutte le risorse hardware e software richieste dal cliente che può disporne come meglio crede. Il cliente può installare dei software in questo ambiente ma le spese per le licenze sono a suo carico. Il cliente può anche accedere e configurare le caratteristiche del sistema operativo e delle risorse hardware di sua competenza | Amazon Web Services GoGrid RackSpace |
PaaS (Platform as a Service) | Viene messa a disposizione del cliente una piattaforma software che può essere costituita da diversi servizi, programmi, librerie, etc. Generalmente la PaaS viene adottata da aziende che intendono sviluppare nuovi software propri o trasformare dei software interni già esistenti in una forma che li renda fruibili (come servizi) da altri consumatori (aziende o privati) | Windows Azure Platform Google App Engine Force.com |
La Windows Azure Platform
La Windows Azure Platform è una piattaforma che serve ad eseguire applicazioni Windows e a custodirne i dati. Possiamo utilizzare la piattaforma sia da applicazioni "cloud", sia da applicazioni gestite in casa (on-premises) e con molteplici linguaggi come C#, PHP, Ruby, Python e Java.
I componenti della piattaforma sono:
Componente | Descrizione |
---|---|
Windows Azure | il sistema operativo che mette a disposizione un ambiente Windows-based per eseguire applicazioni e depositare dati su server ospitati nei Data Center di Microsoft |
SQL Azure | il database relazionale cloud-based costruito sulla tecnologia SQL Server |
Windows Azure platform AppFabric | è lo strumento grazie al quale si possono connettere tra loro applicazioni cloud e/o applicazioni proprietarie (.NET, Java, Ruby, PHP e altre) |
Esaminiamo nel dettaglio questi componenti.
Windows Azure
Questo componente funge da ambiente di sviluppo, ambiente di hosting e ambiente di gestione dei servizi cloud. Windows Azure mette a disposizione potenza computazionale on-demand e spazio per lo storage dei dati, permettendoci di mettere in produzione applicazioni Web ospitate nei data center Microsoft.
Per creare applicazioni e servizi su Windows Azure possiamo utilizzare Microsoft Visual Studio per applicazioni .NET o altri IDE come Eclipse per applicazioni PHP. Sono in corso di sviluppo anche dei kit di sviluppo per le altre principali piattaforme come Java. Windows Azure supporta, inoltre, gli standard ed i protocolli più popolari tra i quali SOAP, REST, XML.
Servizio | Scopo |
---|---|
Compute | Gestisce l'esecuzione di applicazioni e servizi. La sua capacità principale è quella di riuscire a rendere le applicazioni scalabili creando più istanze della stessa applicazione. Ogni istanza sarà eseguita in una propria virtual machine (VM) |
Storage | Permette la memorizzazione permanente dei dati delle applicazioni. I dati possono essere memorizzati in tre forme distinte: Blob, tabelle (da non confondere con le tabelle relazionali dei database), code. Windows Azure mette a disposizione anche una forma alternativa di storage dei dati ovvero tramite il database relazionale SQL Azure |
Fabric | Gestisce le VM necessarie per l'esecuzione delle applicazioni. Decide su quali macchine del data center istanziare le VM e controlla la corretta esecuzione delle applicazioni andando a creare nuove istanze quando necessario |
La gestione delle VM è del tutto trasparente al programmatore, questi deve solo associare alla sua applicazione un file di configurazione nel quale indica alcuni parametri tra cui il numero di istanze simultanee che desidera avere.
SQL Azure
Il database SQL Azure è stato costruito su tecnologia SQL Server, possiamo usarlo con le stesse applicazioni che usiamo per lavorace con SQL Server e accedere ai dati dal lato applicazione usando ADO.NET, ODBC o altre interfacce di accesso e dal lato database con Transact-SQL (T-SQL).
Windows Azure platform AppFabric
AppFabric ci mette a disposizione una infrastruttura di servizi cloud-based attraverso i quali gestire la connessione ad applicazioni distribuite di tipo cloud o on-premises. È costituito da due componenti fondamentali:
Componente | Descrizione |
---|---|
Service Bus | lo scopo di questo componente è quello di suddividere una applicazione (sia essa di tipo cloud o di tipo on-premisis) in servizi accessibili su internet. Riesce in questo dando la possibilità al programmatore di suddividere l'applicazione in endpoint identificati da una URI. Questi endpoint sono quindi accessibili dai client attraverso il Web |
Access Control | consente ad applicazioni client di autenticarsi nel momento in cui richiedono un servizio di una applicazione ospitata nella piattaforma. Il fine è quello di capire cosa è permesso o non permesso fare alla applicazione client. Si tratta di una gestione dell'identità della applicazione da non confondersi con la gestione dell'identità dell'utente che sta usando l'applicazione |
Come si usa la Windows Azure Platform
Per pubblicare una applicazione nella piattaforma Windows Azure bisogna accedere al portale Windows Azure fornendo come credenziali di accesso il proprio account Windows Live ID.
Una volta entrati nel portale abbiamo diverse opzioni. Possiamo creare un hosting account nel quale eseguire le applicazioni o uno storage account per depositare i dati oppure entrambi qualora vogliamo realizzare applicazioni che scrivono dati permanenti.
Dopo aver creato un hosting account, possiamo effettuare l'upload dell'applicazione, sviluppata in locale, specificando il numero di istanze simultanee che l'applicazione deve avere.
Attualmente la piattaforma mette a disposizione due tipi distinti di istanze, le istanze di tipo Web Role e le istanze di tipo Worker Role. Un'applicazione può essere formata da più istanze di tipo Web Role e Worker Role ognuna ospitata in una VM distinta.
Un Web Role è adatto per programmare applicazioni Web supportate da IIS 7 e ASP.NET, un worker role invece è più simile ad un servizio windows ed è adatto per elaborazioni background. Solitamente i Web role si usano per l'interazione con l'utente e queste richieste vengono eseguite in background dai worker role.
Possiamo creare istanze web role usando ASP.NET, Windows Communication Foundation (WCF) o altre tecnologie come PHP, Java, etc.
Per comprendere meglio il funzionamento della piattaforma vi consiglio di vedere questo video pubblicato da Ryan Dunn.
Quando usare la Windows Azure Platform
Ora che abbiamo un'idea di come si usa la piattaforma vediamo in quali situazioni è utile farne uso. Innanzi tutto si può usare la piattaforma per realizzare applicazioni Web scalabili in cui si prevedono dei picchi di utilizzo molto elevati da parte degli utenti. Grazie al componente Fabric del sistema operativo, la piattaforma deciderà quali VM associare all'applicazione per garantire la massima scalabilità in accordo con la configurazione imposta dal programmatore.
Si può usare la piattaforma anche per la realizzazione di applicazioni di elaborazioni parallele. Il lavoro parallelo è svolto da un certo numero di istanze worker role eseguite simultaneamente. L'utente in questo caso interagirà con una istanza web role la quale interagirà con le istanze worker role attraverso una coda (Queue). Le istanze worker role depositeranno tipicamente i loro dati in campi di tipo Blob.
La piattaforma è adatta per creare applicazioni Web che devono svolgere elaborazioni di background. Anche in questo caso l'utente interagirà con una o più istanze web role le quali piloteranno istanze worker role che effettueranno il lavoro di background.
La piattaforma è utilissima per creare applicazioni web che gestiscono dati relazionali. In questo casi l'utente sarà assecondato da istanze web role che comunicano con un database SQL Azure.
Possiamo usare la piattaforma per realizzare un servizio cloud che pubblica sul web i dati conservati in base di dati gestiste in "casa" o semplicemente per depositare nello storage della piattaforma enormi quantità di dati generati da applicazioni on-premises.
Conclusioni
Il mondo dell'informatica si sta dividendo sulla bontà del Cloud Computing e personaggi illustri come Larry Ellison, fondatore di Oracle, e Richard Stallman, fondatore del progetto GNU, si sono schierati contro mettendo in risalto i problemi legati alla privacy e alla sicurezza dei dati.
D'altra parte società come Yahoo, Google, IBM, Microsoft, Sun e Intel si stanno muovendo in questa direzione, e questo è un sengale da tenere in forte considerazione.
Riferimenti
- Definizione di Cloud Computing - Wikipedia
- Windows Azure Platform Home Page
- Introducing the Windows Azure Platform, David Chappell
- Introducing Windows Azure, David Chappell