Academia.eduAcademia.edu

Cloud Computing Evoluzionario e Rivoluzionario

CLOUD COMPUTING EVOLUZIONARIO E RIVOLUZIONARIO Mauro Migliardi Roberto Podestà Dietro al termine “Cloud Computing” si cela un elevatissimo livello di ambiguità e non esiste, ad oggi, una definizione univoca e universalmente accettata di ciò che è e ciò che non è Cloud Computing. In questo articolo cercheremo di chiarire alcuni degli aspetti più critici di questo concetto pur senza pretendere di dissipare completamente, e una volta per tutte, la nebulosità che ancora ammanta l’aggregazione delle tecnologie che collaborano 3.3 a formare il Cloud Computing e impedisce di ottenere un’unica definizione. 1. INTRODUZIONE N el mondo variegato dei termini di successo, Cloud Computing è sicuramente uno dei più forti contendenti per la corona di campione del momento e, come si può osservare nella figura 1, esso ha recentemente soppiantato il Grid Computing tra i termini più “cercati” sul web. Allo stesso tempo, un tale sorpasso è ancora ben lontano a livello di pubblicazioni scientifiche, infatti, mentre una ricerca degli articoli su Grid Computing riporta oltre 4000 citazioni in CiteSeerx, la ricerca per Cloud Computing si ferma a soli 83 articoli. Questo fornisce una prima ragione della quantità di ricerche on-line relative al termine Cloud Computing, ma è altresì vero che questa fame di informazione, deriva anche dal fatto che Cloud Computing viene oggi disinvoltamente presentato come la summa di una pletora di parole chiave nel panorama recente dell’information technology. Tra le più spesso utilizzate, basti ricordare Service Oriented Architecture (SOA), application service provision, Web 2.0, Web Services, mash-ups, Utility Computing, Autonomic Computing, On-demand Computing ecc.. 16 M O N D O Seppure in mezzo a questa doccia mediatica di parole chiave esista uno spazio per genuine opportunità di miglioramento dell’odierno uso commercial-industriale dell’information technology [1], è altresì indubbio che dietro al termine Cloud Computing si celi ancora un elevatissimo livello di ambiguità e una serrata lotta per rendere il termine sinonimo di una tra le diverse accezioni in uso ad oggi. Di fatto, non esiste ad oggi una definizione univoca ed universalmente accettata di ciò che è e ciò che non è Cloud Computing e seppure diversi gruppi e istituzioni si siano dedicati a questo difficile compito [2, 3], un reale consenso che vada oltre al vago riferimento all’astrazione delle risorse tramite interfacce standardizzate fornito da Wikipedia, ancora manca. Il termine Cloud Computing deriva dall’uso comune nel campo dell’Ingegneria dell’Informazione di rappresentare Internet come una nuvola che tutto interconnette celando completamente l’infrastruttura estremamente complessa che tale servizio richiede. Allo stesso modo, il termine Cloud Com- D I G I T A L E • n . 1 - m a r z o 2 0 1 0 0 Trends in Web Search 19.12 16.48 14.24 1 Retio week/average 12.00 9.36 7.12 4.48 0 2.24 Jan 4 2004 Mar 7 2004 May 9 2004 Jun 11 2004 Sep 12 2004 Nov 14 2004 Jan 16 2005 Mar 20 2005 May 22 2005 Jun 24 2005 Sep 25 2005 Nov 27 2005 Jan 29 2006 Apr 2 2006 Jun 4 2006 Aug 6 2006 Oct 8 2006 Dec 10 2006 Feb 11 2007 Apr 15 2007 Jun 17 2007 Aug 19 2007 Oct 21 2007 Dec 23 2007 Feb 24 2008 Apr 27 2008 Jun 29 2008 Aug 31 2008 Nov 2 2008 Jan 4 2009 Mar 8 2009 May 10 2009 0.00 Week Grid Computing Cloud Computing puting implica lo spostamento del meccanismo principale di fornitura dei servizi computazionali dalla periferia, completamente controllata e posseduta dall’utente, verso una “terra incognita”, dominio di differenti fornitori di servizi, nascosta dalle nebbie (o nuvole, appunto) e percepibile solo per mezzo di una semplice interfaccia di uso il più possibile standardizzata. Come è facile vedere, un tale livello di astrazione si presta a generare molte e spesso tra loro non compatibili definizioni di Cloud Computing, tanto è vero che esiste ancora discussione se il termine Cloud si debba applicare ad una ed una sola infrastruttura (come una e una sola Internet) oppure se possano esistere molteplici Cloud eventualmente capaci di interazione. In questo articolo cercheremo di chiarire alcuni degli aspetti più critici del concetto di Cloud Computing pur senza pretendere di essere noi a dissipare completamente e una volta per tutte la nebulosità che ancora ammanta l’aggregazione delle tecnologie che collaborano a formare il Cloud Computing e impedisce di ottenere un’unica definizione. M O N D O D I G I T A L E • n . 1 - m a r z o FIGURA 1 Trend esibito dalle ricerche effettuate tramite Google per i termini Grid Computing e Cloud Computing 2. TASSONOMIA E DEFINIZIONI Il Cloud Computing eredita sicuramente alcuni dei più importanti concetti nati in seno al Grid Computing [4, 5] nell’ultimo decennio. Tali concetti sono sviluppati e integrati a tal punto da poter considerare - almeno sotto certi aspetti - il Cloud Computing come un fenomeno evolutivo del Grid. Tuttavia, sotto l’ombrello, a volte fin troppo ampio, del termine Cloud Computing vi sono anche aspetti genuinamente rivoluzionari per il panorama delle infrastrutture di information technology oggi alla base della gestione quotidiana delle aziende. Come afferma Wolfgang Gentzsch in [6], le Grid in molti casi non sono state in grado di mantenere le ottimistiche promesse presenti nel libro blu [7] pubblicato ormai due lustri orsono. Tuttavia, affermare, come si fa in [8] che il Grid Computing (e più in generale il calcolo distribuito prima delle Cloud) richiede scrivere programmi basati su scambio di messaggi (riquadro 1 a p. 18) mentre il Cloud Computing supera tale complessità basandosi, ad esempio, su Map Reduce [9] è - per adottare un gentile eufemismo - catastroficamente fuorviante. Infat- 2 0 1 0 1 0 17 0 RIQUADRO 1 - Modello a scambio di messaggi 1 Il modello computazionale a scambio di messaggi viene introdotto negli anni ‘80 da C. A. R. Hoare. Esso si basa fondamentalmente su due primitive, send e receive, che permettono a processi strettamente sequenziali di comunicare e sincronizzarsi fra loro al fine di costruire un’applicazione concorrente o parallela di qualsivoglia complessità. Il modello a scambio di messaggi è quello più comunemente usato nel calcolo distribuito in quanto non richiede strutture complesse come la memoria condivisa, ma pone invece come unico vincolo architetturale la presenza di un canale di comunicazione tra tutte le componenti del sistema di calcolo. ti, un’affermazione di questo tipo confonde un singolo strumento di scrittura di codice parallelo (lo scheletro algoritmico Map-Reduce) con la sottostante struttura di gestione delle risorse di calcolo e maschera la semplificazione proveniente dall’affrontare una specifica tipologia di problema come una mutazione epocale. È del tutto evidente che il problema della scrittura di codice massicciamente parallelo è uno degli scogli con cui si è scontrato il Grid Computing, tuttavia, affermare che ciò che distingue Grid Computing da Cloud Computing è il limitarsi ad affrontare problemi che possono essere risolti con una tecnica di programmazione che, tra l’altro, come dice lo stesso articolo in cui venne presentata [9], è applicabile in diversi casi reali ma non in generale in quanto richiede, per essere efficiente, che i task mappati siano embarassingly parallel, è, come minimo, semplicistico e non fornisce alcun reale strumento per dipanare la matassa di cosa sia il Cloud Computing. Seppure un vero consenso sulla definizione di Cloud Computing non sia stato ancora raggiunto, e il white paper su Cloud Computing [10] recentemente prodotto dal gruppo Relia- 0 Infrastruttura in-Cloud es. Amazon EC2 1 0 18 FIGURA 2 Asse del livello di gestione dell’applicazione fornito dalla Cloud ble Adaptive Distributed Systems presso l’University of California Berkeley neghi questa tassonomia, vi è una generica convergenza sulla possibilità di definire tre principali livelli di visione della nuvola. Il primo livello è quello delle applicazioni inCloud (Application as a Service), il secondo livello è quello delle piattaforme in-Cloud (Platform as a Service) e il terzo livello, quello più vicino all’hardware, è quello dell’infrastruttura in-Cloud (Infrastructure as a Service). Questi tre livelli possono essere considerati tre punti su di un asse che ha come coordinata il livello di gestione dell’applicazione fornito dalla Cloud (Figura 2). ❑ Il primo livello, quello delle applicazioni inCloud è, di fatto, quello che viene da anni chiamato Software as a Service (SaaS). Seppure esistano esempi innovativi di questa tipologia di Cloud (e.g. il software CRM di SalesForce.com), questa tipologia di cloud è ormai parte della panoplia di tutti i professionisti IT. Servizi come gmail e google maps sono applicazioni in-Cloud che tutti conosciamo e che la maggior parte di noi utilizzano. La scalabilità, per la maggior parte di queste applicazioni risiede esclusivamente nella struttura di accesso e nella capacità di manipolare grandi moli di dati non necessariamente in relazione tra loro. Si pensi, per esempio, a gmail: un’architettura basata su di una macchina virtuale per utente è, in linea di principio, in grado di soddisfare le esigenze del servizio ed è solo la dinamicità con cui muta il numero di utenti che richiede un’effettiva elasticità dell’infrastruttura. In questo caso, il gestore della Cloud possiede sia l’infrastruttura che l’applicazio- Piattaforma in-Cloud es. Google AppEngine, Microsoft Azure Applicazione in-Cloud es. SalesForce.com CRM, Google Apps Livello di gestione crescente delle applicazioni ospitate sulla Cloud M O N D O D I G I T A L E • n . 1 - m a r z o 2 0 1 0 0 ne che viene venduta sotto forma di servizio accessibile via Web. ❑ Il secondo livello, quello delle piattaforme in-Cloud, è lo sviluppo più recente del Cloud Computing. In questo livello possiamo inserire Google AppEngine [11], Microsoft Azure [12] e Amazon Elastic MapReduce [13]. Questa tipologia di Cloud (Figura 2) si trova a metà strada tra una gestione delle applicazioni totalmente a carico della cloud come nel primo livello ed una totalmente a carico dell’utente come nel terzo livello. La caratteristica principale di questo tipo di nuvola è quella di fornire delle interfacce per la programmazione delle applicazioni (API1) specifiche secondo le quali sviluppare applicazioni orientate ad essere usufruite come servizi via web ed un’interfaccia web per ottenere l’installazione di tali applicazioni sulle risorse computazionali della Cloud in modo che il livello di risorse necessarie per mantenere una qualità di servizio definita possa essere deciso, fornito e gestito dalla Cloud stessa in base al Service Level Agreement (SLA) stipulato dallo sviluppatore. In questo caso, il gestore della Cloud possiede l’infrastruttura ma non il codice dell’applicazione resa disponibile via Web. L’applicazione e i proventi ottenuti tariffando il servizio fornito dall’applicazione sono appannaggio dello sviluppatore dell’applicazione. L’unico vincolo che il gestore della Cloud pone sull’applicazione è la tecnologia da utilizzare per sviluppare questa applicazione. Si può citare, ad esempio, la dipendenza da .Net della piattaforma in-Cloud Azure di Microsoft e la dipendenza dalle API di Google Datastore per Google AppEngine. ❑ Infine, il terzo livello, quello dell’infrastruttura in-Cloud, trova il suo esponente più noto in Elastic Computing Cloud (EC2) di Amazon [20]. In questo caso, il gestore della Cloud possiede solo l’infrastruttura di calcolo e non pone alcun vincolo né sul tipo di applicazione che l’utente eseguirà, né sulla tecnologia da lui utilizzata per sviluppare tale applicazione. In questa situazione, la virtualizzazione (riquadro 2) ha due ruoli chiave: il primo è, ovviamente, quello di permettere la rapida fornitura e messa in linea di nodi computazionali su richiesta degli utenti, ma il secondo, in questo caso forse an- 1 D I G I T A L E • n . 1 Per virtualizzazione si intende la creazione di una versione virtuale di una risorsa normalmente fornita fisicamente. Qualunque risorsa hardware o software può essere virtualizzata: sistemi operativi, server, memoria, spazio disco, sottosistemi. Un esempio base di virtualizzazione è la divisione di un disco fisso in partizioni logiche. Meccanismi più avanzati di virtualizzazione permettono la ridefinizione dinamica tanto delle caratteristiche della risorsa virtuale, quanto della sua mappatura su risorse reali. Per poter parlare di virtualizzazione è necessario introdurre il concetto di macchina virtuale o virtual machine. In origine, il termine “virtual machine” veniva usato per indicare la creazione di una molteplicità di ambienti di esecuzione identici in un unico computer, ciascuno con il proprio sistema operativo, infatti, questo genere di virtualizzazione è particolarmente utilizzata nel campo dei mainframe e dei supercomputer. Lo scopo di tale tecnica era, originariamente, quello di sezionare tra più utenti l’uso di un singolo computer dando ad ognuno l'impressione di esserne l’unico utilizzatore. L’uso più comune oggi è quello di generare ambienti “sterilizzati” e completamente separate tra loro per poter, per esempio, ricostruire l’ambiente necessario all’esecuzione di un programma (in termini di sistema operativo, specifiche librerie ecc.) senza porre vincoli sulle alter applicazioni se non quello di poter usufruire di una quota parte delle risorse globali. Questo risultato è oggi ottenuto per mezzo di un programma che emula un calcolatore; è possibile, infatti, realizzare tramite software, un finto computer su cui può essere eseguito un sistema operativo diverso da quello che equipaggia realmente l’elaboratore. La virtualizzazione può essere realizzata secondo modalità diverse, tra cui, principalmente, citiamo: • emulazione: la macchina virtuale simula completamente l'hardware, utilizzando un sistema operativo standard che viene eseguito dalla CPU virtuale; • paravirtualizzazione: la macchina virtuale non simula un hardware completo, ma offre speciali API che richiedono modifiche nel sistema operativo ma forniscono prestazioni superiori. 1 0 cora più importante, è quello di difendere l’infrastruttura e le applicazioni degli altri utenti dal comportamento volutamente o accidentalmente dannoso dell’applicazione. Questa difesa è fornita dal totale isolamento in cui una macchina virtuale incapsula la o le applicazioni in esecuzione su di essa. Infine, un vantaggio in un certo senso collaterale, ma certo non marginale dell’isolamento fornito dall’utilizzo della virtualizzazione è la possibilità di configurare l’ambiente di esecuzione di un’applicazione secondo i desideri dell’utente senza dover in alcun modo temere che specifiche versioni di sistema operativo o di librerie possano collidere con le necessità di altri utenti. 3. UN INQUADRAMENTO “STORICO” DEL FENOMENO CLOUD COMPUTING: EVOLUZIONE… 1 Come accennato, molto spesso, il Cloud Computing è visto come un’evoluzione del Grid Computing. È però importante notare una di- Application Programming Interface. M O N D O RIQUADRO 2 - Virtualizzazione e Paravirtualizzazione - m a r z o 2 0 1 0 0 19 0 1 0 1 0 20 stinzione a livello concettuale tra i due “fenomeni”. Secondo gli obiettivi iniziali definiti più di dieci anni fa dai padri del Grid, Ian Foster e Carl Kesselmann, si sarebbe andati verso un’infrastruttura computazionale in grado di far leva sulla potenza di calcolo inutilizzata delle macchine in stato idle genericamente connesse a Internet. In pratica, nell’accezione originaria del Grid con la famosa analogia tra la rete elettrica e la potenza di calcolo che diventa slegata dalla localizzazione fisica dell’utente, si tenderebbe ad avere dei “micro produttori” di “computing” aggregati in un’organizzazione virtuale attraverso un middleware capace di fornire la visione di un unico supercomputer virtuale in cui l’utente stesso condivide le proprie risorse di calcolo. Al contrario, il Cloud Computing riporta a un’idea di “macro produttori” di “computing” indipendentemente dal tipo di cloud (application, platform o infrastruttura). Infatti, l’utente utilizza la Cloud fornita dal provider che, generalmente, si tratta di un centro di calcolo, che può anche essere frutto dell’aggregazione di centri sparsi per il globo, di proprietà esclusiva del provider. Questa differenza concettuale è però molto sfumata a causa dell’evoluzione del Grid Computing che si è avuta a partire dalla fine degli anni ’90. Infatti, i principali risultati e progetti più significativi, in alcuni casi diretti dagli stessi Foster e Kesselmann, che hanno finito per essere considerati propriamente il Grid Computing, hanno riguardato l’aggregazione di centri di supercalcolo che, guarda caso, solitamente sono l’ossatura delle Cloud. Prima di evidenziare questa somiglianza vista come linea evolutiva, per completezza di informazione, va detto che il concetto originario di Grid Computing non è andato completamente smarrito. Sviluppi in questo senso seppur considerati marginali rispetto alla corrente principale sono le Desktop Grid che hanno avuto come precursori seti@home (e.g. BOINC, XtreamWeb e il progetto europeo EDGeS) e quelli derivanti dalla convergenza tra Peer To Peer e Grid Computing [23] come WOW [25]. Riprendendo la linea evolutiva, l’utilizzo di tecnologie Web-based per l’accesso a un’infrastruttura di calcolo distribuita e l’utilizzo della virtualizzazione dell’hardware come base per l’infrastruttura di calcolo distribuita sono i principali aspetti alternatamente presenti nel- M O N D O le principali realizzazioni di Grid Computing antecedenti alla comparsa del Cloud Computing che inducono a vedere questo fenomeno come un’evoluzione che raccoglie e armonizza in un’unica infrastruttura/piattaforma questi aspetti tecnologici. La convergenza tra Grid Computing e Web Services è stata ampliamente discussa e investigata già a partire dagli albori di queste due tecnologie. Tale sinergia si è unanimemente articolata nell’attribuire ai Web Services e, più astrattamente al modello Service Oriented Architecture (SOA), un ruolo chiave nell’accesso alle griglie computazionali. La visione orientata ai servizi e l’utilizzo di tecnologie aperte e altamente standardizzate sembrano essere il miglior modo per semplificare l’accesso alle risorse di calcolo aggregate in una Grid. La specifica Web Services Resource Framework (WSRF), oppure la formalizzazione dei Grid Portal, hanno permesso una standardizzazione dei servizi offerti dalle Grid e della loro modalità di accesso. Questa visione orientata ai servizi, ha portato a pensare alla fruizione del Grid Computing come una utility on-demand, Utility Computing, in termini molto simili a quelli formulati nel lontano 1961 da John McCarthy del MIT: “If computers of the kind I have advocated become the computers of the future, then computing may someday be organized as a public utility just as the telephone system is a public utility... The computer utility could become the basis of a new and important industry”. È ancora importante sottolineare che così come avviene adesso per il termine Cloud, a suo tempo anche per il termine Grid si è avuto un periodo transitorio in cui molte infrastrutture software si dichiaravano essere Grid sebbene avessero poi scopi e strutture assai diversi. Dopo più di un decennio esistono esempi di Grid funzionanti e operative che in modi differenti anticipano aspetti presenti nelle emergenti Cloud. Attualmente esistono Grid puramente orientate all’High Performance Computing (HPC) e altre prevalentemente orientate alla sperimentazione software che generalmente da’ comunque supporto all’HPC. Queste due tipologie di Grid hanno in comune l’aggregazione di risorse di supercalcolo costituite da computational cluster appartenenti a domini amministrativi diversi. Per quanto riguarda il D I G I T A L E • n . 1 - m a r z o 2 0 1 0 0 puro supporto all’HPC, il progetto EGEE [14] - il più imponente per numero di soggetti coinvolti - ha prodotto una Grid che aggrega 41.000 CPU provenienti da circa 150 cluster sparsi su tutto il globo. Tale aggregazione è ottenuta attraverso il middleware gLiteche che integra e lega software derivanti dai principali progetti di middleware per Grid come quelli provenienti dalla Globus community [15], da iniziative europee (DataGrid) e intercontinentali (DataTag). Simile a EGEE è il progetto Open Science Grid che adotta simili strumenti software, sovente sviluppati in cooperazione con EGEE stesso e ne condivide gli scopi. Queste Grid forniscono una piattaforma di calcolo utilizzabile per uno specifico insieme di applicazioni (una ventina, a volte le stesse, sia per EGEE che per Open Science Grid) appartenenti a vari domini come la fisica delle alte energie, fluido dinamica computazionale, chimica computazionale, astronomia-astrofisica, bioinformatica ecc.. Una certa applicazione, una volta sviluppata, viene installata su un certo numero di cluster con l’aiuto degli amministratori. Entrambe le grid usano dei software client customizzati per l’accesso alle risorse di calcolo e consentono la sottomissione di job computazionali con una limitata capacità di configurazione dell’ambiente di esecuzione che viene fornito staticamente dalla grid. Simile a queste Grid ma orientata a uno sviluppo e una messa in linea delle applicazioni più snella è TeraGrid che aggrega una dozzina di differenti siti di cluster computazionali negli Stati Uniti e quindi opera su una scala dimensionale di una decade inferiore a EGEE. Rispetto alle Grid puramente orientate all’HPC, TeraGrid offre significativa capacità di configurazione dell’ambiente di esecuzione attraverso strumenti chiamati ScienceGateways che integrano in un portale Web oppure con delle API Web Services-based l’accesso per insiemi di strumenti (e.g. storage) e applicazioni scientifiche. Una totale flessibilità di configurazione è perseguita da Grid5000 che aggrega rispettivamente nove siti di super calcolo sparsi sul territorio francese. Infatti, l’obiettivo di Grid5000 è il supporto della sperimentazione di software distribuito su larga scala piuttosto che al puro HPC. Ciò non toglie che tali software, molto spesso, sono orientati all’HPC. Grid5000 adot- M O N D O D I G I T A L E • n . 1 - m a r z o ta un modello basato sulla virtualizzazione dell’hardware. Un utente può configurare un’immagine di un sistema operativo con l’applicazione di interesse e metterla in linea su un insieme di macchine dotate di hypervisor previamente riservate ottenendo così un cluster di macchine virtuali ritagliato sulle esigenze della desiderata applicazione. L’introduzione della virtualizzazione ovviamente comporta un certo decremento delle prestazioni che comunque può essere tenuto sotto controllo con delle politiche di assegnazione fissa di risorse hardware per macchina virtuale. L’evidente vantaggio è la rapidità di set-up per esperimenti che tipicamente richiedono configurazioni complesse e altamente specifiche. L’accesso a Grid5000 avviene attraverso il protocollo SSH attraverso gateway specifici presenti in ciascun sito, dai quali poi è possibile operare con strumenti command-line per riservare, configurare e accedere alle risorse computazionali. Le differenze evidenziate riflettono differenti esigenze: il puro supporto ad applicazioni scientifiche e il supporto alla sperimentazione per distributed computing su larga scala. In ogni modo, il Cloud Computing indubbiamente abbraccia i concetti evidenziati. L’idea di aggregare risorse di supercalcolo distribuite geograficamente, trasversale a tutti i progetti di Grid, è evidentemente ripresa dal Cloud Computing sebbene con sfumature diverse. Infatti, non costituisce il target strutturale ma un’eventuale evidenza dettata dalla necessità di offrire un servizio di elevata scalabilità in grado di assorbire richieste da un sempre crescente numero di utenti. Da progetti come TeraGrid viene ripresa l’idea di adottare potenti interfacce Web con tecnologie provenienti dal Web2.0 e API di facile integrazione software basate su Web Services per consentire una configurazione e un accesso semplice e standardizzato a un’infrastruttura di calcolo in realtà complessa. L’utilizzo massiccio della virtualizzazione dell’hardware per dare la massima flessibilità di configurazione dell’ambiente desiderato indubbiamente riporta all’esperienza di progetti come Grid5000. Con il Cloud Computing, quindi, si tende a dare una grande rilevanza a un’interfaccia semplice e basata su tecnologie web (i.e. Cloud Interface), attraverso cui è possibile 2 0 1 0 1 0 1 0 21 0 RIQUADRO 3 - Infrastructure In-Cloud 1 0 Amazon EC2, abbreviazione di “Amazon Elastic Compute Cloud”, è senza dubbio l’attuale leader mondiale nel campo del Cloud Computing. L’utente utilizza un browser per le iniziali operazioni di registrazione e billing e, successivamente, un insieme di comandi, con interfaccia grafica oppure command-line, per riservare on demand una certa capacità computazionale in termini di CPU, RAM e storage (http://aws.amazon.com/ec2/#instance) e poi installarvi e configurare molti tipi di Sistemi Operativi (http://aws.amazon.com/ec2/#os), il tutto con un preciso tariffario (http://aws.amazon.com/ec2/#pricing) che va dai 10 centesimi di dollaro all’ora per un’istanza di linux con le capacità più basse a 1,20 dollari per un’istanza di Windows su un set-up ad elevate prestazioni. I comandi sono dei programmi Java forniti da Amazon che via Web Services consentono l’interazione con la Cloud. Per dare un’idea della flessibilità di Amazon, basti pensare che sia possibile configurare quali porte aprire su una macchina riservata e poi accedervi “normalmente” via SSH, siccome ciascuna macchina può avere un IP pubblico raggiungibile dall’esterno. Inoltre è possibile integrare una propria applicazione direttamente con la Cloud attraverso l’uso delle API a loro volta utilizzate dai comandi citati in precedenza. Amazon fornisce un insieme di interfacce Web Services basate su WSDL (Web Service Description Language) chiamate EC2 WSDLs. La tecnologia su cui si basa il back-end della Cloud di Amazon è proprietaria. Nimbus ed Eucalyptus sono le risposte open-source ad Amazon. Entrambi i progetti provengono da gruppi di ricerca già attivi nel Grid Computing ed entrambi offrono un software che consente di creare una Cloud. Nimbus, proveniente dalla Globus community, implementa una parte dell’interfaccia EC2 WSDLs e l’interfaccia Grid WSRF e sostanzialmente consente di utilizzare come back-end un singolo cluster computazionale. Esempi di installazioni operative di Nimbus si trovano su http://workspace.globus.org/clouds/. Eucalyptus, sviluppato nel dipartimento di Computer Science dell’Università della California a Santa Barbara da cui recentemente è derivata un’omonima spin-off specializzata in Cloud Computing, consente di aggregare cluster multipli come back-end ed è compatibile con EC2 WSDLs. Un’installazione operativa di Eucalyptus è accessibile da http://open.eucalyptus.com/wiki/EucalyptusPublicCloud. Platform In-Cloud Il concetto di platfom in-cloud si avvicina in modo naturale al paradigma di sviluppo delle applicazioni enterprise oriented fornito da J2EE o a una dei frame work sviluppati per fornire automaticamente la persistenza dei dati di un programma. A fronte di una serie di vincoli più o meno stringenti sulle caratteristiche degli oggetti manipolati dal programma, il frame work offre il vantaggio di garantire in modo “trasparente” la persistenza dei dati appoggiandosi ad un meccanismo di backing storage. Il parallelo che si ha con le platform in-cloud si concretizza nella capacità di queste ultime di garantire, a fronte del pagamento di una tariffa adeguata, il provisioning in automatico di un numero di nodi computazionali e di memorizzazione adeguato a sostenere il livello di carico dell’applicazione. Tra le platform in-cloud oggi più note, possiamo citare Google AppEngine, Microsoft Azure e Amazon Elastic MapReduce. Ciascuna di queste vincola in modo più o meno specifico lo sviluppatore. La prima, per esempio, pur fornendo anche un runtime dedicato al linguaggio Python, si appoggia sulle caratteristiche di virtualizzazione della Java JVM, sulle Java Persistence API e su Java Data Objects. Azure, al contrario, si appoggia pesantemente su .net, sql server e SOAP. La platform in-cloud di Amazon, infine, si basa sul frame work open source Hadoop (http://hadoop.apache.org/), lo stesso che viene utilizzato da Yahoo!. Application In-Cloud Tra i molti esempi di application In-Cloud citiamo SalesForce e Ubikwiti (http://www.ubikwiti.com/) perché rappresentano un interessante risvolto del Cloud e del SaaS. Sono, infatti, applicazioni industriali - rispettivamente un CMR e un ERP - che vengono utilizzate da imprese che sostanzialmente mettono in outsourcing completamente una parte molto rilevante del proprio sistema informativo. L’accessibilità via Web, o meglio Web 2.0, consente un set-up veramente minimale lato client che sostanzialmente necessita solamente di un browser delegando a tali provider le problematiche relative alla gestione dell’applicazione. 1 0 22 accedere e utilizzare delle risorse computazionali organizzate in una “nuvola” (Cloud) di calcolo. Il termine Cloud è volutamente vago e sottende una tipologia di organizzazione dell’infrastruttura di calcolo slegata teoricamente da qualsiasi vincolo tecnologico. Attualmente, i back-end utilizzati per il Cloud Computing impiegano tecniche di virtualizzazione dell’hardware su cluster computazionali singoli (Nimbus [17]), multipli (Eucalyptus [18]) o aggregazioni di centri di calcolo come per la Cloud proprietaria di Amazon che consentono di istanziare dinamicamente uno o più sistemi operativi al di sopra delle risorse fisiche e di organizzare tali risorse in insiemi virtuali omogenei come, ad esempio, cluster computazionali oppure data center (riquadro 3). Il Cloud Computing può quindi essere considerato come un’evo- M O N D O luzione del Grid Computing in quanto eredita, mette insieme e rende omogenei in una singola visione concetti, tecnologie e intuizioni sviluppati nel corso degli anni in seno ai più importanti progetti di Grid Computing quali l’aggregazione di centri di supercalcolo, la semplificazione al loro accesso tramite tecnologie web e l’utilizzo di tecniche di virtualizzazione dell’hardware. 4. ...E RIVOLUZIONE Al di là di aspetti puramente tecnici che, in effetti, accreditano un’ipotesi evoluzionistica o, quantomeno, una diramazione originata dal Grid Computing e, in particolare, dal segmento dell’Utility Computing, il Cloud può essere considerato rivoluzionario per quanto riguarda il modello di busi- D I G I T A L E • n . 1 - m a r z o 2 0 1 0 0 ness. Sebbene si basi su uno schema esistente in ambito economico-finanziario, tale schema non è mai stato adottato prima per “vendere” distributed computing. Il modello è quello delle utility di larga scala dove, data un’infrastruttura in produzione, l’incremento del numero di utenti ha un costo quasi nullo ma moltiplica enormemente i profitti e al contempo contribuisce alla riduzione dei prezzi. Questo modello è universalmente utilizzato per fornire accesso all’elettricità, al gas, all’acqua e alla connettività a rete telefonica e Internet nelle abitazioni degli utenti finali. Il Cloud Computing aggiunge a questa lista CPU time e massive storage. Amazon, il soggetto che per primo ha commercializzato questa nuova utility, offre due tipi di servizio: Compute Cloud EC2 e Data Cloud S3. Il primo consente di prenotare, configurare e istanziare insiemi di macchine per il periodo desiderato. Con il secondo si ha accesso a uno spazio di storage praticamente illimitato. L’unico requisito è avere una carta di credito. Al contrario, il modello di business alla base del Grid Computing è community-based. Quando un’istituzione decide di unirsi a una Grid cede l’accesso esclusivo alle risorse di calcolo condivise ma, al contempo, acquisisce la possibilità di accedere a un numero di risorse potenzialmente molto più alto. Per esempio TeraGrid riunisce dodici centri di supercalcolo appartenenti ad altrettanti istituti di ricerca universitari in USA. Ai supercalcolatori condivisi hanno accesso tutti i partecipanti che guadagnano una potenziale potenza di calcolo irraggiungibile con un singolo cluster. L’accesso esclusivo ceduto a un insieme di utenti più ampio può ottimizzare l’utilizzo delle risorse che non restano più inattive e l’aumentata capacità computazionale consente di affrontare sfide e problemi di complessità altrimenti impossibili. In realtà sono stati proposti modelli di Grid economy per creare un’infrastruttura globale con il supporto del trading, della negoziazione, del provisioning e dell’allocazione di risorse sulla base del livello di servizio fornito, dei costi e delle richieste degli utenti. Sebbene siano stati anche applicati in pratica modelli economici per lo scambio di risorse, coordi- M O N D O D I G I T A L E • n . 1 - m a r z o nazione di risorse baste sulla teoria dei giochi, valute virtuali e intermediari [19], non c’è ancora stato uno sviluppo significativo della Grid-economy. Questo fatto è in realtà legato anche all’ambito, orientato alla ricerca, da cui provengono le Grid che induce una logica project-based, la quale stabilisce a priori il livello di coinvolgimento in termini di risorse dei partner in una Grid. Va notato che questo non esclude lo sfruttamento commerciale del Grid computing come testimoniano le attività di aziende come Entropia, Platform e l’italiana Nice che realizzano Grid private, ritagliate sulle esigenze dei propri clienti. Da questo modello di business viene riflesso un utilizzo senz’altro rivoluzionario ed esclusivamente commerciale delle tecnologie già adottate nel Grid. Infatti, l’utilizzo di tecnologia Web-based congiuntamente alle tecniche di virtualizzazione dell’hardware nel Cloud Computing consente: 1. la fornitura di servizi computazionali con una granularità di tariffazione significativamente piccola; 2. l’adozione di Service Level Agreements (SLAs) affidabili anche a fronte della sopra citata granularità di tariffazione. Nel Grid, l’adozione di queste tecnologie ha significati diversi che non sono legati direttamente allo sfruttamento commerciale e, inoltre, non sono stati armonizzati in una singola visione come nel Cloud. Se da un lato c’è una condivisione di intenti nell’adozione di interfacce basate su standard Web al fine di semplificarne l’accesso, che nel caso del Cloud includono anche il non trascurabile billing dell’utility, per quanto riguarda la virtualizzazione vi è un’evidente distinzione. L’intersezione tra Grid e virtualizzazione dell’hardware ha migliorato grandemente la capacità di configurazione offerta agli utenti, ovviamente ove questa è richiesta come nella sperimentazione di distributed computing su larga scala. È chiaro, infatti, che l’uso di hardware virtualizzato non porti benefici prestazionali: a parità di hardware disponibile, il livello prestazionale ottenibile da ciascuna di N macchine virtuali è inferiore a 1/N. Questo degrado, per quanto piccolo possa essere, è comunque dovuto alla presenza dell’overhead di virtualizzazione e 2 0 1 0 1 0 1 0 23 0 1 0 alla presenza di N istanze di sistema operativo. Quindi, per il Grid Computing, l’adozione della virtualizzazione significa principalmente la possibilità di generare configurazioni di test per lo sviluppo delle applicazioni che poi saranno eseguite sull’hardware reale. Al contrario, in ambito Cloud Computing, l’adozione della virtualizzazione è uno degli aspetti nodali. Questo fatto, quindi, deve sottolineare come esista un aspetto rivoluzionario nell’insieme di applicazioni che Cloud Computing si propone di affrontare. Infatti, se il target di Grid è nelle applicazioni di tipo Grand Challenges, Cloud Computing cancella questa deriva per riportare il fuoco sulle web-application vendibili anche loro stesse come servizi e, di fatto, ripristinando la visione di computazione come pubblica utilità che, seppure messa da parte dalle successive evoluzioni dei principali progetti di Grid, è stata la parola chiave del Grid Book [7]. Da questo punto di vista, in sintesi, la rivoluzione è forse più assimilabile ad una restaurazione degli obiettivi iniziali, ma rimane tuttavia un cambiamento di fuoco estremamente significativo. 5. NUVOLA O TAPPETO: MARKETING PER NASCONDERE I PROBLEMI IRRISOLTI? Per quanto il Cloud Computing possieda alcuni aspetti rivoluzionari in termini di business model, esistono ancora diversi problemi che, ereditati dal Grid Computing, rimangono sostanzialmente irrisolti e che si pongono come seri ostacoli ad un significativo livello di adozione del Cloud Computing. Non forniremo qui una lista esaustiva, ma ci limiteremo a citarne due: uno acuito dall’innovativo business model proprio del Cloud Computing e uno strettamente ereditato dal Grid Computing. Il primo, megalitico ostacolo alla diffusione del modello del Cloud Computing è rappresentato dal problema del downtime. Tutti ci ricordiamo la definizione di Lamport di un sistema distribuito: “you know you have one when the crash of a computer you have never heard of stops you from getting any work done”. Questa può riassumere la prima ragione di difficoltà dei sistemi di Cloud Computing: è estremamente difficile per un’azienda rinunciare completamente al controllo di una componente vitale del suo core business. Seppure questo approccio possa derivare da una reazione non meditata, è pur sempre vero che tutti i principali sistemi di Cloud Computing sono incorsi negli ultimi anni in episodi di interruzione del servizio che, seppure nella maggior parte dei casi non siano stati catastrofici, hanno limitato significativamente l’operatività di chi da loro dipendeva (Figura 3 [21]). Per questa ragione e per il fatto che la reputazione di solidità si costruisce con estrema difficoltà ma si distrugge in un solo sfortunato incidente, l’a- 1 0 24 FIGURA 3 Incidenti causa di downtime per sistemi Cloud nel 2008 M O N D O D I G I T A L E • n . 1 - m a r z o 2 0 1 0 0 dozione massiccia di sistemi di Cloud Computing per i servizi vitali di un’azienda è ancora piuttosto difficile. Un secondo problema irrisolto per il Cloud Computing è quello del modello di programmazione. Seppure sia vero che Cloud Computing è stato spesso associato alle web applications e quindi ad un modello di programmazione di non estrema complessità, è altrettanto vero che questo modello (sia esso Map Reduce, sia esso Farmer Workers) si basa sull’intrinseca mancanza di comunicazione tra i task paralleli. Questa caratteristica, se anche è facilmente riscontrabile nella maggior parte dei processi di ricerca di pattern all’interno di un data set di grandi dimensioni, non è generalizzabile a tutte le applicazioni e rimanda quindi allo stesso problema con cui si è precedentemente scontrato il Grid Computing: la programmazione parallela è difficile. 6. CONCLUSIONI Se si guarda oltre la nube (gioco di parole intenzionale) di marketing che oggi esalta il Cloud Computing (The Economist, nell’Ottobre 2008 scrive un articolo che descrive l’avvento del Cloud Computing con le stesse enfatiche parole usate alcuni anni orsono per il WorldWideWeb), un aspetto rivoluzionario del Cloud Computing può essere trovato nel modello di business da esso implicato. La capacità di fornire un ambiente di esecuzione che sia: 1. ritagliato su misura della vostra applicazione; 2. isolato e protetto da interferenze di altre applicazioni; 3. disponibile a richiesta in tempi molto rapidi; 4. tariffato con granularità fine (e.g. ad ore); rappresenta effettivamente un passo significativo verso l’idea di computazione come servizio di pubblica utilità preconizzato nel blue book del Grid Computing [7] ed ancor prima da Leonard Kleinrock [22]. Nonostante questo, esiste ancora un insieme di problemi irrisolti, semplicemente ereditati dal Grid Computing, che limitano, ad oggi, l’uso del Cloud Computing e lo tengono ancora a significativa distanza dal traguardo di diventare la quinta public utility. M O N D O D I G I T A L E • n . 1 - m a r z o Bibliografia [1] Lin G., Dasmalchi G., Zhu J.: Cloud Computing and IT as a Service: Opportunities and Challenges. Proc. of the IEEE International Conference on Web Services, 23-26 Sept. 2008. [2] Erdogmus H.: Cloud Computing: Does Nirvana Hide behind the Nebula?, IEEE Software, Vol. 26, Issue 2, March-April 2009 p. 4-6. [3] Aa.vv.: Twenty Experts Define Cloud Computing. SYS-CON Media Inc, http://cloudcomputing.syscon.com/read/612375_p.htm, 2008 [4] Aa.vv.: The Open Grid Forum. http://www.ogf.org/ 1 [5] Aa.vv.: Enter the Grid website. http://enterthegrid.com/ [6] Gentzsch W.: Grids are dead! Or are they? On Demand Enterprise feature article, June 2008, http://www.on-demandenterprise.com/features/26060699.html?viewAll=y [7] Foster I., Kesselman C.: The Grid: Blueprint for a New Computing Infrastructure. Morgan Kaufmann, San Francisco, 1999. [8] Grossman R.L.: The Case for Cloud Computing. IT Professional, Vol. 11, Issue 2, March-April 2009, p. 23-27. 0 [9] Dean J., Ghemawat S.: MapReduce: Simplified Data Processing on Large Clusters. Proc. Of Sixth Symposium on Operating System Design and Implementation, San Francisco, CA, December, 2004. [10] Armbrust M., Fox A., Griffith R., Joseph A.D., Katz R., Konwinski A., Lee G., Patterson D., Rabkin A., Stoica I., Zaharia M.: Above the Clouds: A Berkeley View of Cloud Computing. www.eecs.berkeley.edu/Pubs/TechRpts/2009/ EECS-2009-28.pdf [11] Aa.vv.: Sito web di Google AppEngine. http://code.google.com/appengine/ [12] Aa.vv.: Sito web di Microsoft Azure. http://www.microsoft.com/azure/windowsazure.mspx [13] Aa.vv.: Sito web di Amazon Elastic MapReduce. http://aws.amazon.com/elasticmapreduce/ [14] Aa.vv.: The EGEE2 Project. http://egee2.euegee.org/ [15] Aa.vv.: The Globus Project. http://www.globus.org/ [16] Aa.vv.: Nimbus. http://workspace.globus.org/ [17] Aa.vv.: Eucalyptus Systems. http://www.eucalyptus.com/ [18] Buyya R., Yeo C.S., Venugopal S., Broberg J., Brandic I.: Cloud computing and emerging IT platforms: Vision, hype, and reality for delivering computing as the 5-th utility. Future Generation Computer Systems, Vol. 25, 2009, p. 599-616. 2 0 1 0 1 0 25 0 [19] Aa.vv.: Amazon Elastic Compute Cloud. http://aws.amazon.com/ec2/ [20] Aa.vv.: Cloud Computing: Incidents Database. http://wiki.cloudcommunity.org/wiki/CloudCo mputing:Incidents_Database [21] Kleinrock L.: A vision for the Internet. ST Journal of Research, Vol. 2, n. 1, 2005, p. 4-5. 1 [22] Foster I., Iamnitchi A.: On Death,Taxes, and the Con- vergence of Peer-to-Peer and Grid Computing. Proc. of the 2-nd InternationalWorkshop on Peer-to-Peer Systems, 20-21 February 2003, Berkeley, CA, USA. [23] Ganguly A., Wolinksky D.I., Boykin P.O., Figueiredo R.: Improving Peer Connectivity in Wide-area Overlays of Virtual Workstations. Proc. of the 7th International Symposium on High Performance Distributed Computing, 23-27 June 2008, Boston, MA, USA. 0 MAURO MIGLIARDI è nato a Genova nel 1966. Dopo essere stato uno dei principali ricercatori del progetto HARNESS per il meta e Grid computing presso la Emory University di Atlanta, è stato ricercatore universitario presso l’Università di Genova ed è ora Professore associato presso l'Università di Padova. Mauro Migliardi ha pubblicato oltre ottanta articoli scientifici soggetti a peer-review e ha tra i suoi principali interessi di ricerca le tecnologie e le metodologie per la progettazione e lo sviluppo di sistemi software distribuiti complessi. E-mail: [email protected] ROBERTO PODESTÀ si è laureato in Ingegneria Informatica nel 2003 e ha conseguito il dottorato in Scienze e Tecnologie dell’Informazione nel 2007 presso l’Università di Genova. I suoi interessi scientifici riguardano le architetture software distribuite e le tecniche di programmazione concorrente e parallela. Dopo una breve esperienza in Australia verso la fine del dottorato presso il GridsLab dell’università di Melbourne, è tornato a Genova collaborando in un progetto congiunto tra l’università e Telecom Italia. Nel settembre 2007, ha vinto un post-doc bandito dall’ERCIM (European Reseach Institute for Informatics and Mathematics) e si è quindi trasferito all'INRIA (Institut National de Recherche en Informatique et en Automatique) nella sezione a sud di Parigi. L’anno successivo è stato confermato all’INRIA con una posizione da expert engineer. La sua attività si concentra sulla progettazione di middleware all’interno del principale progetto francese di cloud computing. E-mail: [email protected] 1 0 26 View publication stats M O N D O D I G I T A L E • n . 1 - m a r z o 2 0 1 0