• Non ci sono risultati.

L’utilizzo del paradigma del cloud computing oltre all’aspetto puramente tecnologico, va a favorire anche il risparmio energetico, andando di fatto ad attuare politiche di green computing. Ilgreen computing si riferisce a tecnologie informatiche ecologica-mente sostenibili, che abbiano quindi effetti sull’ambiente molto limitati o nulli.

Il primo motivo per cui il cloud computing porta ad avere un risparmio energetico è dato dal riutilizzo di hardware. Infatti i server contenuti nei datacenter, che fanno parte della piattaforma di cloud, vengono utilizzati da più utenti che vanno quindi a condividere la piattaforma hardware. Sì pensi ad esempio alla situazione di un

Luca Pasa 2.2. CLOUD E GREEN COMPUTING azienda media la quale opera per otto ore al giorno, e quindi sfrutta i servizi e l’hardware, per una sola parte della giornata. Nelle restanti ore però l’hardware non rimane inutilizzato (come invece accade utilizzando un server di proprietà o in affitto) ma verrà destinato ad un altro utilizzatore, portando così ad un abbattimento degli sprechi legati alla inattività.

È poi da considerare il fatto che l’utilizzo dei server presenti in un datacenter che implementa politiche di cloud computing è sempre molto elevato andando quindi a mantenere il server ad un livello di efficenza molto alto, cosa che invece non succede nei server personali dove tutto dipende dall’utilizzo, che è legato alla singola entità richiedente.

Anche la tipologia di server presenti in un datacenter segue precise caratteristiche, la prima tra tutte è di certo l’efficenza. Altra importante caratteristica dell’hardware è che deve essere di facile reperibilità e a poco costo in modo da ammortizzare eventuali guasti. Vengono inoltre preferiti molti server con buona potenza piuttosto che pochi server di potenza eccelsa, al fine di implementare più efficacemente politiche di scala-bilità orizzontale e mantenere il costo dell’hardware, e la sua eventuale sostituzione per guasti, vantaggioso a livello economico.

Altro importante aspetto nel cloud computing è la collocazione dei datacenter in specifiche zone geografiche. Tali zone geografiche vengono scelte per vari motivi:

• condizioni climatiche favorevoli;

• vicinanza con dorsali che facilitano la connessione;

• vicinanza a fonti energetiche;

• legislatura favorevole per la sicurezza dei dati.

Talvolta queste scelte portano importanti vantaggi, si pensi ad esempio come con-dizioni climatiche particolarmente fredde e ventose possano portare ad una sostanziale riduzione della necessità di utilizzare sistemi di climatizzazione o addirittura elim-inarli. Un esempio in questo senso è il datacenter Microsoft di Dublino, uno dei datacenter in cui viene mantenuta la piattaforma di cloud Windows Azure e non solo. In questo caso è stato sfruttato fortemente il freddo clima irlandese andando a migliorare l’efficenza dell’impianto, riducendo l’emissione di carbonio ed elimi-nando quasi la necessità di consumare acqua. Dal punto di vista della gestione del raffreddamento dei server è stato utilizzato il clima favorevole (con temperature che variano da -5°C a 27°C) insieme all’innovativoair-side economization, messo appunto da Microsoft, che permette di eliminare la necessità di utilizzare impianti di climatizzazione rendendo sufficiente il ricircolo dell’aria esterna per raffreddare quella interna al datacenter. Questo sistema ha portato a diminuire fortemente i consumi rispetto al classico approccio legato all’utilizzo di sistemi di climatizzazione.

In Figura 2.1 viene riportata un foto del datacenter Microsoft di Dublino.

13 13 di 87

Figura 2.1: Il datacenter Microsoft di Dublino.

Capitolo 3

Tecnologie utilizzate

3.1 Windows Comunication Fondation

WCF (Windows cominication fondation) è un modello di programmazione unificato promosso daMicrosoftche permette la creazione di applicazioni orientate ai servizi, rendendo possibile lo sviluppo di soluzioni sicure, affidabili con la possibilità di integrare piattaforme diverse ed interpolarsi con soluzioni già esistenti. La nascita diWCFè da imputare anche alla volontà di Microsoft di unificare tutte le tecnologie esistenti per creare tecnologie distribuite, ma anche alla volontà di creare una tecnologia capace di adattarsi ai cambiamenti, e quindi fortemente estensibile ed inoltre orientata all’utilizzo delle tecnologie standard più diffuse (come ad esempio SOAP, WSDL, WS-*).

Uno dei concetti che sta alla base della filosofia di sviluppo di soluzioni basate suWCF è il concetto di servizio. Un servizio può essere definito come una parte di codice con la quale si interagisce tramite messaggi. Esso è passivo, infatti un servizio si mette in attesa di messaggi entranti con la quale gli verrà richiesto di eseguire una o più operazioni, saranno quindi i client che andranno ad inizializzare il servizio e, tramite l’utilizzo dei messaggi, a richiede l’esecuzione di un operazione. Tutti i messaggi vengono ricevuti e spediti daendpoint. Unendpoint e costituito da:

un address, il quale specifica dove dovranno essere inviati i messaggi.

un binding, il quale specificherà come dovranno essere inviati i messaggi.

un contract, il quale specificherà cosa conterrà un messaggio

Ogni client che vuole accedere al servizio necessita di conoscere queste informazioni per poter comunicare con esso. Uno dei metodi utilizzati dai servizi per condividere tali informazioni con i client è l’utilizzo diWSDL (Web service definition language). In questo ambito trova spazio il concetto di Software as a Service (SaaS), infatti WCFpermette di implementare e sviluppare software che verrà fornito ai client come servizio accessibile tramite una rete. Solitamente ai client non è richiesto il pagamento per il possesso del software, ma viene invece pagato il suo utilizzo. Un servizio può esporre uno o piùendpointcon i quali può comunicare con diversi client.

WCFha lo scopo di portare in primo piano i concetti dell’architettura orientata ai servizi, e per fare ciò è stato creato il namespace System.ServiceModel il quale contiene una nuova libreria di classi che rende possibile l’utilizzo del modello di programmazione conosciuto come WCF programming model.

WCFoltre a permettere la creazione di servizi, permette anche di creare i client che gli andranno ad utilizzare. L’utilizzo avviene sempre attraverso endpoint, i quali

15

risultano essere un concetto fondamentale per definire l’infrastruttura propria dei prodotti WCF.

Nell’implementazione di un servizio WCF il primo passo è andare a creare il componente fondamentale: l’endpoint. Andiamo quindi a descrivere endpoint andando a definire il contratto, l’indirizzo ed il binding. Per descrivere il contratto si andranno ad utilizzare interfacce le quali tramite l’utilizzo di appositi comandi andranno a segnalare quale parte di contratto riguarda il servizio e quale le operazioni.

L’implementazione di tale classe andrà a definire il comportamento del servizio relativo allo specifico endpoint. Verrano poi definiti l’indirizzo ed il binding, e infine, tramite l’infrastruttura di hosting offerta da WCF andremmo ad esporre il servizio rendendo quindi possibile agli eventuali client l’interazione con esso.

Anche nella creazione di un client l’endpoint va a coprire un ruolo fondamentale, infatti il client dovrà conosce la descrizione dell’endpoint(che può essere resa nota tramite WSDL ma non solo) per poter comunicare con esso. Una volta ottenuti questi dati il client potrà generare (anche dinamicamente tramite un tool messo a disposizione da WCF) i meccanismi necessari alla creazione di messaggi utili alla comunicazione con il servizio.

I tre elementi di cui si compone un endpoint sono:

l’indirizzo (address): che conterrà l’indirizzo alla quale il servizio risulta disponibile, e dove i client che lo vogliono utilizzare dovranno inviare i messaggi per richiedere l’esecuzione di un lavoro. la definizione di quest’ultimo può essere fatta sia da codice che mediante il file di configurazione (presente in tutte le applicazioni .NET);

binding: esso va a definire come il servizio comunica all’esterno. in questo caso WCF mette a disposizione varie classi che vanno ad implementare vari protocolli di comunicazione. Anche in questo caso sarà possibile specificare tale informazione sia da codice che tramite file di configurazione;

contratto: il più importante dei 3, specifica l’insieme di funzionalità esposte dal servizio nonché la forma che i messaggi dovranno avere, i modi per modellare tale contratto sono molteplici, tra i più utilizzati c’è la possibilità di utilizzare interfacce e classi, dalle quelli verrano estratte le funzionalità disponibili ed il formato dei messaggi. Perché tale estrapolazione di informazioni avvenga è necessario specificare tramite attributi quale significato hanno i costrutti sintat-tici contenuti nelle classi e interfacce. In .Net gli attributi hanno il principale scopo di collegare metadati a determinate parti del programma. Gli attributi principalmente utilizzati nella stesura di un servizio sono<ServiceContract>

e <OperationContract>, il primo andrà ad indicare il contratto di un servizio WCF, mentre tramite il secondo si andranno a specificare quali funzionalità si vuole esporre. Per quanto riguarda una qualsiasi funzionalità sembra ovvio che saranno 2 i messaggi ad essa associati: uno riguardante la richiesta dell’ese-cuzione di tale funzionalità, che verrà modellato in base alla lista dei parametri d’ingresso, ed uno che riguarderà il risultato del’ invocazione che sarà modellato in base al valore di ritorno. Per quanto riguarda la tipologia di dati che verrano passati tramite i messaggi è importante tenere in considerazione che WCFè in grado di tradurre in maniera automatica solo i tipi .NET predefiniti, sarà invece compito dello sviluppatore segnalare come tradurre i tipi non predefiniti sempre tramite l’uso di opportuni attributi quali <DataContract> e <DataMember> i quali andranno a specificare rispettivamente, anche grazie ad alcune proprietà in essi contenute (modificabili dallo sviluppatore), le modalità di traduzione di un intera classe e di un singolo campo dati.

Luca Pasa 3.2. WCF E REST