Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il Cloud Computing e la piattaforma Windows Azure

Esaminiamo le diverse tipologie di Cloud Computing e le caratteristiche fondamentali di Windows Azure
Esaminiamo le diverse tipologie di Cloud Computing e le caratteristiche fondamentali di Windows Azure
Link copiato negli appunti

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.

Figura 1. La piattaforma Windows Azure
(clic per ingrandire)


La piattaforma Windows Azure

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.

Figura 2. La struttura di Windows Azure
La struttura di Windows Azure
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.

Figura 3. Applicazione Windows Azure in esecuzione
Applicazione Windows Azure in esecuzione

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

Simone Moretti è un architetto ASP.NET Senior laureato in Informatica. Si dedica da quasi un decennio alla realizzazione di applicazioni Web con tecnologia ASP.NET/C#. Attualmente lavora presso la pubblica amministrazione per conto di Wizards Consulting SpA [www.wizardsgroup.it].

Ti consigliamo anche