Studio ed analisi del Cloud Computing - UNIVERSITA' DEGLI STUDI DI SIENA
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
UNIVERSITA’ DEGLI STUDI DI SIENA FACOLTA’ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria Informatica Studio ed analisi del Cloud Computing Relatore Prof. Marco Maggini Correlatori Carlo Bardi Cesare Bertoni Tesi di Laurea di Elvio Stumpo A.A. 2008/2009
Introduzione: Il calcolo distribuito Introduzione: Il calcolo distribuito Negli ultimi anni, lo sviluppo tecnologico-scientifico, per poter progredire, ha richiesto l’impiego di un numero sempre crescente di uomini e macchine. Nella scienza moderna l’impiego di calcolatori è diventato di vitale importanza; infatti, ad essi vengono affidate tutte quelle attività che l’uomo non è in grado di fare con la stessa perizia propria di questi strumenti. L’utilizzo sistematico di queste apparecchiature negli ambienti scientifici ha da sempre generato una richiesta costante di macchine sempre più efficienti e sempre più potenti. Il costante bisogno di calcolatori sempre più performanti, soprattutto agli albori dell’Informatica, risultò essere un problema di notevole portata. A quei tempi, immettere sul mercato un elaboratore era uno sforzo ingente sia di capitali che di mano d’opera, tanto che non si era in grado di soddisfare tutte le potenziali richieste. In quel periodo (o era informatica) il rapporto macchina-uomo era uno a molti, vale a dire, un calcolatore per molti utilizzatori. Questa situazione generò non pochi conflitti per l’accaparramento della risorsa da parte degli utenti. Intorno agli anni ’80 ci fu un sostanziale abbattimento dei costi hardware che generò una diffusione su larga scala degli elaboratori così che si iniziò a parlare di personal computer, di conseguenza il rapporto macchina-uomo passò da uno a molti a uno ad uno. L’era informatica seguente fu caratterizzata da una semplice conclusione sul confronto di prestazioni: si misero a paragone i supercomputer, all’epoca ancora molto costosi, e semplici reti di personal computer molto più economiche, ed emerse che queste ultime riuscivano a fornire prestazioni uguali ed a volte addirittura superiori a quelle proprie dei supercomputer. Si iniziarono a preparare le basi per quello che oggi chiamiamo reti di calcolatori. L’introduzione di tali reti modificò il rapporto macchina-uomo che passò a molti a uno. Nell’ultima era, l’attuale, la nuova frontiera è il calcolo distribuito. Quest’ultimo può essere facilmente confuso con il calcolo parallelo, vale a dire, la capacità di esecuzione di più task simultaneamente su più processori contenuti, però, nella stessa macchina. L’idea di fondo della teoria del calcolo distribuito, invece, è quella di frammentare il carico di lavoro in un Fig.1. Esempio di connettività. numero arbitrario di sotto task indicati solitamente con il nome di “job” da distribuire ad un numero imprecisato di macchine, eterogenee tra loro, sparse potenzialmente in tutto il mondo. Al contrario del calcolo parallelo, in cui l’assegnazione dei task è certa, nel calcolo distribuito non vi è l’assoluta sicurezza che le macchine della rete siano sempre disponibili (tempi di latenza diversi, crash imprevedibili di rete o dei computer, ecc. ) quindi è necessario un continuo monitoraggio dell’architettura. Il problema fondamentale che nasce dall’impiego di questo genere di tecnologia è tutto concentrato sulla gestione corretta del traffico (cioè priva di errori sia in trasmissione che in ricezione) di qualsiasi tipo (dati, job, comandi, ecc). Studio ed analisi del Cloud Computing -1- Stumpo Elvio
Introduzione: Il calcolo distribuito Un’ulteriore problematica deriva da una caratteristica fondamentale del calcolo distribuito: la coesistenza nella rete di macchine che supportano diversi sistemi operativi spesso incompatibili con altri. Per porre rimedio a tale ostacolo si è lavorato su due fronti diversi: il primo, implementando nella rete la possibilità di trasmissione di software scalabile ed adattabile (scalabilità e portabilità) fra macchine diverse; il secondo, invece, basando tutta l’architettura su applicazioni di tipo web (web-oriented). Una corretta condivisione delle risorse su scala mondiale permette di generare una potenza di considerevole dimensione, che può essere impiegata per risolvere problemi con grandi moli di dati d’ingresso. L’utilizzatore del calcolo distribuito ignora completamente come le risorse siano reperite: infatti, per l’utente, l’impiego di tale tecnologia consiste solamente nell’operazione di connessione tramite internet ad una macchina non meglio identificata che gli fornirà la potenza necessaria. Il fruitore standard del calcolo distribuito, infatti, non sarà in grado di sapere se le risorse impiegate per il suo programma provengano dalla sua macchina, da un cluster di computer dall’altro capo del mondo, dal vicino di casa o da una elaborata unione di queste varie realtà. L’utente, inoltre, non conosce lo stato d’opera dei processi eseguiti tramite il calcolo distribuito, ma ha la reale possibilità di conoscere l’istante in cui il job è stato lanciato e quando esso terminerà effettivamente (con successo o crash). Attualmente sono presenti diverse tipologie di sistemi di interconnessione per il calcolo distribuito: • Client-Server: la macchina client contatta la macchina server grazie ad un programma specifico lanciato in remoto sul client stesso, il quale si occupa di contattare i vari sistemi e/o servizi per ottenere dati, configurazioni varie ed inoltre è fornito di una interfaccia utente riassuntiva della rete consultabile dal fruitore. • Architettura a 3 strati (3-iter architecture): sistema a tre stati nel quale le informazioni del client vengono inserite in uno stato intermedio in cui sono presenti, a sua volta, client inattivi in attesa di utilizzo (ad esempio per l’accesso ai dati). Questo sistema semplifica molto il processo dello sviluppo applicativo. La maggior parte delle applicazioni web di richiesta sono strutturate a 3-strati. • Architettura a N strati (N-iter architecture): si riferisce tipicamente ad applicazioni di tipo web che fondamentalmente inoltrano le loro richieste a terze parti. Questo metodo per richiedere informazioni è stato la chiave del successo delle applicazioni server. • Accoppiamento stretto (tight coupling): si riferisce tipicamente ad un cluster di macchine strettamente connesse, che gestisce un processo condiviso in parallelo. La frammentazione del task originario è molto elastica e strettamente legata al tipo di risorse che ogni elemento delle rete è in grado di offrire. A conclusione di tutti i job su tutte le macchine, tramite un processo di merge, si ha il risultato finale. • Peer-to-peer: un'architettura dove non sono presenti macchine speciali o macchine che offrono un servizio o gestiscono le risorse di rete. Tutte le attività, invece, sono divise uniformemente fra tutte le macchine, note come peers (pari). I peers possono comportarsi alternativamente sia da client che da server. Un altro aspetto di base dell’architettura di calcolo distribuito è il metodo di comunicazione e coordinamento del lavoro con processi simultanei. Attraverso l’impiego di vari protocolli di Studio ed analisi del Cloud Computing -2- Stumpo Elvio
Introduzione: Il calcolo distribuito comunicazione, i processi possono sincronizzarsi e comunicare direttamente con l'un l'altro, solitamente secondo il criterio client/server. Con il continuo aumento di apparecchiature contenenti un microprocessore e una connessione ad alta velocità è facile dedurre che l’impiego del calcolo distribuito attuerà un processo di riduzione dei tempi di computazione, fino ad arrivare a ottenere risposte in real- time a problemi che attualmente richiedono ore, giorni o anni. Alcune applicazioni del calcolo distribuito hanno avuto un tale impatto sul mondo scientifico da meritare di essere descritti individualmente. Studio ed analisi del Cloud Computing -3- Stumpo Elvio
Capitolo 1 Architetture di calcolo distribuito Capitolo 1 Architetture di calcolo distribuito 1.1-Grid computing I sistemi Grid sono le prime grandi infrastrutture di calcolo distribuito, utilizzate per l’elaborazione di un gran numero di dati, mediante l’uso di una vasta quantità di risorse. In particolare, tali sistemi permettono la condivisione coordinata di risorse all’interno di un’organizzazione virtuale. La condivisione non è limitata solo allo scambio dei files, ma si estende all’accesso diretto al computer, al software, ed in generale a tutto l’hardware necessario alla risoluzione di un problema scientifico, ingegneristico o industriale. Il sistema grid si articola essenzialmente in due fasi Fig.1-1. Classica disposizione di una rete principali: creazione e testing. Nella prima fase, a griglia (Grid Computing). mediante un’opportuna interfaccia grafica, l’utente è in grado di inserire le caratteristiche del sistema grid desiderato. Al termine della prima fase, data dall’inserimento delle caratteristiche, inizia la seconda fase, relativa alla simulazione. Durante la simulazione i dati vengono elaborati e viene presentato all’utente un report contente tutte le informazioni e le risposte del sistema, cioè il risultato raggiunto dalla rete per il problema propostole. Il problema alla base del concetto di griglia è la condivisione coordinata di risorse all’interno di una dinamica e multi- istituzionale organizzazione virtuale (Virtual Organization, brevemente indicata con VO). L’utente conosce il numero delle macchine che verranno impiegate per la propria simulazione (tale valore fa parte della configurazione statica della rete che è scelta dall’utente), ma ignora la loro posizione geografica. Attualmente, la più importante grid europea è quella del CERN di Ginevra (ora diventata EGEE); il software più famoso ed utilizzato è BOINC (Berkeley Open Infrastructure for Network Computing). Questo è un software di grid computing sviluppato dall'Università della California (Berkeley) ed è classificato come un open source, anche se sarebbe meglio parlare di software gratuito e completamente personalizzabile. L’idea che guida questo genere di sistema, infatti, è quello di donare, a progetti che la richiedono 1, la potenza computazionale inutilizzata delle proprie apparecchiature connesse in rete (ora è disponibile anche in remoto). Per aderire a tale progetto le operazioni fondamentali sono due : inizializzazione e elaborazione. Nella prima fase (inizializzazione) si compiono diverse operazioni, alcune delle quali una tantum (download del client BOINC e sua relativa GUI, creazione di credenziali valide per la rete, configurazione della macchina ecc.) altre, invece, mutabili nel tempo 1 Un classico esempio di impiego dell’architettura grid è Seti@home. Tale progetto consiste nell’ascolto del rumore cosmico proveniente dallo spazio alla ricerca di un qualsiasi tipo di segnale contenente informazioni. La distinzione tra il rumore spaziale ed i potenziali segnali artificiali (segnali non di origine naturale, ma generati per un scopo ben preciso) viene eseguita mediante una monitorizzazione continua dello spettro conosciuto. Studio ed analisi del Cloud Computing -4- Stumpo Elvio
Capitolo 1 Architetture di calcolo distribuito (scelta dei progetti a cui si intende partecipare, pacchetti di dati da analizzare (work unit dette WU), ecc ). Nella seconda fase il client di BOINC, in remoto, analizza costantemente le risorse impiegate, per adoperare le rimanenti risorse inutilizzate per eseguire le work unit. Queste donazioni di risorse vanno a fondo perduto, l’utente standard di BOINC non ha nessun ritorno oggettivo (economico, computazionale ecc). Gli unici beneficiari del servizio sono i committenti dei progetti a cui gli utenti collaborano. BOINC è il classico esempio di grid computing anche se unidirezionale (utente=forza lavoro). Esistono anche reti a griglia che, diversamente dal BOINC, consentono agli utenti, che ne fanno espressa richiesta, di sfruttare le risorse per progetti propri (l’utente è forza lavoro ma anche utilizzatore della rete grid). L’elemento fondamentale che caratterizza il grid, ed anche uno dei componenti più critici del sistema di gestione delle risorse, è lo schedulatore di risorse. Esso ha il compito di assegnare le risorse ai job, in modo da soddisfare le esigenze delle applicazioni e del sistema. Le risorse delle griglie sono strettamente connesse tra loro, geograficamente distribuite, eterogenee ed, inoltre, appartengono a diversi individui o organizzazioni, ciascuno con le proprie politiche di scheduling, modelli di costo di accesso differenti, carichi di lavoro e disponibilità di risorse che variano dinamicamente nel tempo. La mancanza di un controllo centralizzato, insieme alla presenza di utenti che generano job, molto diversi l’uno dall’altro, rendono la schedulazione più complicata rispetto a quella dei sistemi di calcolo tradizionali. Il calcolo a griglia, rispetto ad altri tipi di tecnologie, ha già subito un processo di standardizzazione univoca che quindi permette l’iter-connessione delle griglie stesse senza problemi di interfacciamento. Fra le caratteristiche che sono state formalizzate e che, quindi, qualsiasi sistema grid deve garantire vi è il carico minimo: il fornitore delle rete certifica che il proprio prodotto in situazione di estremo carico garantisce per ogni progetto in corso l’esecuzione di un determinato carico di lavoro. Sono tuttavia emersi alcuni difetti di questo tipo di rete (la non completa trasparenza delle macchine ma soprattutto la loro assegnazione molto rigida e statica) che hanno portato allo sviluppo di altri tipi di reti, le reti cloud. Studio ed analisi del Cloud Computing -5- Stumpo Elvio
Capitolo 1 Architetture di calcolo distribuito 1.2-Cloud computing Il cloud computing (calcolo a nuvola, o nube) è visto dagli esperti del settore come la vera innovazione del web 2.0. Spesso, per una migliore comprensione della nube, la si paragona alle Google Apps. Questa comparazione è ammissibile solo a livello teorico-nozionistico, ma non è del tutto corretta, anche se vi sono effettivamente dei punti di contatto tra le due tecnologie. Il cloud computer può essere visto come un super computer (inteso come grandi risorse di tipo informatico) che ha come sua ubicazione la rete internet. Il clouding in realtà, non basandosi su una architettura rigida, “racimola”, su richiesta, le risorse disponibili ovunque nella rete, sia provenienti da un PC, da un notebook, da un netbook, da un palmare e, addirittura, anche da un Fig.1-2. Rappresentazione dello sviluppo del word wide web cellulare connesso ad internet. Il pioniere del cloud computing fu John McCarthy che fornì una sua prima formalizzazione nel 1960. Solo negli anni ‘90 il termine cloud iniziò ad entrare nei linguaggi di tipo commerciale per riferirsi alle grandi reti di ATM. Negli ultimi anni, iniziò ad apparire il termine "cloud computing", anche se la maggior parte dell’interesse verso questa emergente innovazione era finalizzata alla realizzazione di un software che offrisse un servizio. Per l'alto livello concettuale, infatti, la nube di calcolo è definita come "una combinazione di hardware, software, dati e persone, che fornisce servizi on-line". Importante è notare la strettissima coesistenza che esiste nel cloud computing tra i consumatori e i produttori dei servizi. Le architetture cloud Fig.1-3. Rappresentazione schematica dell’evoluzione architetturale di sono enormi aggregati di Internet diverse reti (universitarie, Studio ed analisi del Cloud Computing -6- Stumpo Elvio
Capitolo 1 Architetture di calcolo distribuito commerciali), di supercomputer e di cluster di computer. Esse sono utilizzate da un numero enorme di persone sia in qualità di utenti (solo Microsoft Live ha più di 300 milioni di utenti) e sia in qualità di sviluppatori (Amazon EC2 ha attualmente più di 330.000 sviluppatori di applicazioni). Attualmente nel web centinaia di milioni di utenti si collegano a Google regolarmente ogni giorno (20 Petabytes di dati giornalieri); a questi si aggiungono le operazioni che gli utenti dei servizi di eBay compiono (1 Terabyte di log giornalieri solo nel 2000): tali fenomeni generano enormi flussi di dati e di informazioni che in qualche modo devono essere gestiti. Possiamo concludere che il cloud computing, per le sue caratteristiche intrinseche, ha una massiccia partecipazione ad analizzare tali dati, tanto da collaborare attivamente alla creazione di una mega-struttura onnipresente, sempre disponibile, che lavora con circa 100 di milioni di utenti. Diversamente dal calcolo a griglia, ogni utente partecipa alla rete per avere un proprio beneficio, quindi, più risorse. In queste condizioni il cloud pone grandi sfide, ma offre opportunità senza precedenti a tutta la comunità informatica-scientifica che gravita attorno a questa architettura. Il cloud computing, infatti, rappresenta un nuovo approccio alle infrastrutture in cui grandi insiemi di sistemi sono collegati tra loro per fornire servizi IT. L’esigenza di tali ambienti è sempre più sentita per la crescita esponenziale delle apparecchiature connesse in rete e dei processi di streaming di dati in tempo reale e anche per la diffusione di architetture e applicazioni web 2.0 orientate al servizio, ai progetti di collaborazione e di ricerca. I progressi nelle prestazioni dei componenti digitali hanno provocato un enorme aumento della portata degli ambienti IT, e di conseguenza, è nata l’esigenza di poterli gestire uniformemente in un’unica “nuvola” (cloud). Le potenzialità del calcolo a nube, inoltre, risultano essere particolarmente adatte ad un gran numero di progetti, ma soprattutto a quelli di carattere scientifico, tanto da essere impiegate massicciamente per il calcolo intensivo. La scienza ha da sempre impiegato le migliori risorse disponibili per raggiungere i propri obiettivi; essa, infatti, può essere suddivisa in tre grandi periodi: empirico, teorico e sperimental-simulativo. Il primo periodo è stato principalmente applicativo, ovvero, privo di una qualunque struttura astratta; il secondo periodo, quello delle grandi scoperte, è stato caratterizzato dalla formulazione delle principali teorie scientifiche. Oggi ci troviamo nel terzo periodo, quello della scienza sperimentale in cui si creano flussi di dati da utilizzare per la simulazione, ma soprattutto si sta attuando un processo di condivisione e di collaborazione tra gli scienziati ad un livello senza precedenti. L’evoluzione di mega strutture di dati, ha generato fenomeni sociali articolati su vasta scala denominata “social computing”. In tali condizioni sono presenti tutti gli stimoli necessari per creare un nuovo tipo di ricerca scientifica basata sul web la “web-scienza”. Se tale ricerca vedrà la luce, il calcolo a nube ricoprirà un ruolo fondamentale in questa nuova dimensione scientifica. L'emergere delle architetture a nube consentirà, infatti, nuove prospettive stimolanti in ingegneria, in medicina e per molti problemi di ordine sociale. La nascita della nube di calcolo rinvigorirà la ricerca accademica e fornirà un forte spinta alla creazione di collaborazioni, di metodi innovativi e di nuovi comportamenti. Le attività accademiche attualmente sono ben Studio ed analisi del Cloud Computing -7- Stumpo Elvio
Capitolo 1 Architetture di calcolo distribuito al di sotto delle loro effettive potenzialità, questo perché gli scienziati devono confrontarsi con una vasta quantità di dati provenienti non solo dal web, ma anche da un numero crescente di strumenti e sensori. L’utilizzo del cloud computing permetterà agli scienziati di fruire di un sostanziale aumento dei dati d’ingresso per le loro simulazioni, che forniranno risultati con un’accuratezza mai raggiunta. Questo perché il cloud computing può essere impiegato per gestire carichi di lavoro già esistenti, ma anche per quelli emergenti, altamente scalabili e basati su grandi quantità di dati. Considerate le numerose applicazioni del cloud, fornire una definizione univoca che lo caratterizzi al meglio risulta essere un’operazione estremamente difficile. Una sua possibile definizione è comparsa sul ACM Computer Communication Review ”Le nubi sono grandi contenitori di risorse virtuali di facile utilizzo ed accesso (come lo posso essere vari software ma anche l’hardware, le piattaforme di sviluppo e/o di servizio). Queste risorse possono essere dinamicamente riconfigurate per adattarsi ad un carico di lavoro variabile (scalabilità) lasciando spazio anche ad un'utilizzazione ottimale di risorse. Questo contenitore di risorse è impiegato tipicamente secondo il modello pay-for-use (pagare per usare) nel quale tutto è garantito dal provider dell’infrastruttura”. Un errore che spesso si compie è quello di confondere il cloud computing con altri tipi di architetture di calcolo distribuito, primo fra tutti il grid computing. La confusione tra il cloud computing e le altre architetture è giustificata dalla non remota possibilità che il cloud si comporti, a volte, come un grid e mostri alcune caratteristiche tipiche di altri generi di reti. Dagli studi compiuti su questa architettura traspare che il cloud computing può essere a tutti gli effetti definito come la vera e naturale evoluzione del modello grid computing, anche se le tipologie delle reti sono estremamente diverse tra loro. Come per le reti a griglia, la progettazione e la creazione di una rete cloud è un’operazione di non facile realizzazione. I sistemi cloud migliori, ad esempio, dispongono di una piccola infrastruttura centralizzata, ma a volte ne sono addirittura privi o possono persino appoggiarsi ad un qualsiasi sistema, anche esterno, come le reti peer-to-peer o Skype. La maggior parte delle infrastrutture basate sulla nube forniscono agli utenti servizi affidabili in funzione del livello di virtualizzazione richiesto. I servizi sono accessibili in qualsiasi parte del mondo, questo perché il sistema cloud è visto come un singolo punto d’accesso che permette di raggiungere una rete talmente grande da contenere le risorse necessarie per tutti gli utenti della nube. Le offerte commerciali basate sul cloud computing forniscono ai loro clienti, servizi di qualità e Fig.1-4. Rappresentazione della comunicazione standard tra i soprattutto adatti al livello computer e la rete cloud Studio ed analisi del Cloud Computing -8- Stumpo Elvio
Capitolo 1 Architetture di calcolo distribuito virtuale che l’utente sceglie di utilizzare. I sistemi di tipo open - source che utilizzano il cloud computing rendono critico lo sviluppo dello stesso perché attualmente non esistono ancora degli standard di regolamentazione unici. Il grande pregio di questo tipo di tecnologia è che gli utenti finali possono avere accesso a grandi risorse di qualsiasi tipo (calcolo, memorizzazione etc.) in maniera del tutto virtuale, quindi, abbattendo completamente tutti i costi delle infrastrutture fisse (acquisto, mantenimento, potenziamento etc.). L’utente finale, infatti, pagherà l’uso delle risorse virtuali solo all’atto del loro effettivo utilizzo. Alcuni provider del cloud computing sono Amazon, Google e Yahoo e, ultimamente, anche Microsoft con Azure. Amazon ha giocato un ruolo chiave nella conoscenza e nello sviluppo del cloud computing compiendo una modernizzazione dei suoi centri di calcolo. I suoi sviluppatori, infatti, avevano trovato una nuova architettura di tipo cloud che ha dato luogo a significativi miglioramenti in termini d’efficienza interna ed, inoltre, ha offerto ai propri clienti l’accesso ai sistemi di Amazon Web Services da impiegare per scopi di calcolo di tipo non avanzato. Il 2007 è stato l’anno dell’aumento delle attività finalizzate all’architettura a nube, infatti sia Google, sia IBM, che un discreto numero di università decisero di investire grandi risorse per la ricerca e lo sviluppo e, nel giro di poco tempo, il cloud cominciò a guadagnare popolarità presso la stampa, fino ad arrivare nel 2008, anno in cui diventa un argomento di discussione tanto da essere presente in numerosi eventi. Nell’agosto 2008 gli esperti del settore hanno osservato che le organizzazioni stavano cambiando hardware e software per utilizzarne altri, orientati verso modelli di servizio e che in questo ambito l’impiego del clouding avrebbe dato luogo ad una crescita così sorprendente da essere drammatica per tutte le altre aree dell’IT. 1.2.1-Problematiche d’impiego Attualmente la nube attraversa numerosi confini di vario tipo e può essere definita come "l'ultima forma di globalizzazione". E come tale è soggetta a problemi complessi di tipo geopolitico. I provider, infatti, devono soddisfare una miriade di ambienti diversi e regolare i vari servizi in funzione dei continui cambiamenti del mercato globale. Le diverse richieste di sicurezza da impiegare nella nube risultano fortemente basate sul territorio geografico d’impiego, e quindi sul tipo di utenti. Gartner, analista di tecnologia e consulente d’azienda, ha elencato sette problemi di sicurezza sui quali si dovrebbe discutere con le aziende che forniscono il cloud computer: 1) Individuazione dell’utente privilegiato: colui che è in grado di accedere a tutte le risorse della rete cloud. 2) Comprovata serietà: verifica dell’effettiva serietà dei produttori del servizio anche mediante l’impiego di società specializzate, eventualmente anche esterne al fornitore della rete. 3) Ubicazione dei dati: conoscenza del luogo ove viene allocato lo spazio di memoria e se queste località godano di un adeguato servizio di sorveglianza territoriale. Studio ed analisi del Cloud Computing -9- Stumpo Elvio
Capitolo 1 Architetture di calcolo distribuito 4) Crittografia: garanzia che la cifratura sia disponibile a tutti i livelli e che tale crittografia sia fornita da esperti del ramo. 5) Recupero dati: l’iter da seguire dalla rete e/o dalle aziende in caso di perdita di dati. 6) Controllo investigativo: conoscenza della possibilità della nube di essere impiegata per controllare le attività legali o illegali degli utenti. 7) Autosufficienza: conoscenza di quanto accada alla nube qualora la società che fornisce il servizio fallisca. 1.2.2-Componenti Volendo formalizzare gli elementi che formano una qualsiasi rete cloud si sono definiti i seguenti componenti: Client Cloud client: consiste nell’hardware (dispositivi di qualsiasi Services tipo connessi a internet) e nel software (un qualsiasi browser Application come google crome firefox ecc.) di cui il sistema cloud Platform necessita per funzionare correttamente. Storage Cloud services: consiste nei servizi web: un sistema software Infrastructure Fig.1-5. Componenti progettato per sostenere interazioni di tipo machine-to- fondamentali del cloud machine di interoperabilità su una rete. Questi software possono essere ottenuti da un’altra nube il cui scopo principale è quello di calcolare componenti software, software per servizi, o informazioni sugli utenti finali (identità, integrazione, pagamenti, mappature, ricerca, etc). Cloud application: architetture software, che eliminano il bisogno di installare e gestire le procedure client sul computer dell’utente, alleviando così il carico di manutenzione del software, delle operazione in corso, etc. (Facebook, Google Apps, Salesforce, Microsoft Servizi On-line). Cloud platform: è un servizio che consegna una piattaforma di calcolo e/o pile di soluzioni utilizzando una serie di domande da rivolgere all’utente senza che quest’ultimo debba avere una conoscenza profonda degli strati del software (Ajax (Caspio), Python Django (Google App Engine), Ruby on Rails (Heroku), Web hosting (Mosso), Proprietary (Azure, Force.com)). Cloud storage: comporta la capacità di memorizzazione dei dati come un servizio offerto dalla rete (calcolati per gigabyte per mese) (Database, Synchronisation Web Service). Cloud infrastructure: il servizio che mette a disposizione reti di computer virtuali (Grid computing (Sun Grid), Compute (Amazon Elastic Compute Cloud), Blue Cloud (IBM), Azure (Microsoft)). Studio ed analisi del Cloud Computing - 10 - Stumpo Elvio
Capitolo 1 Architetture di calcolo distribuito 1.2.3-Architettura Analizzando la rete a nube a livello funzionale osserviamo che l’architettura del cloud computing è un sistema software finalizzato alla realizzazione di nubi di calcolo, comprensive sia di hardware (virtuale) che di software, disegnati da un “architetto” che tipicamente lavora per garantire la completa integrazione tra le diverse nubi. Il sistema cloud comporta componenti multipli Fig.1-6. Descrizione degli elementi caratteristici che compongono una classica che comunicano l'un architettura cloud l'altro su interfacce di programmazione, di solito mediante web services. Questo approccio ricorda da vicino la filosofia Unix: avere programmi multipli che lavorano bene insieme su interfacce universali. La complessità è controllata ed i sistemi risultanti sono più maneggevoli dei sistemi di tipo monolitico. Definiamo, infine, le entità fondamentali presenti nell’ambiente dell’architettura a nube: Cloud Provider: è l’entità che possiede e gestisce le risorse delle reti cloud assegnando sia le risorse di calcolo che i servizi per ogni utente; inoltre, possiede ed implementa sistemi di calcolo di “cloud live” per distribuire servizi a terze parti. Di solito questo richiede risorse significative ed esperienza nella costruzione di centri di calcolo. Nonostante tutto, alcune grosse organizzazioni hanno notato che il possedere un provider cloud porta all’azienda che ne fa un uso esclusivo numerosi benefici in termini di efficienza, soprattutto nella gestione dei casi di picchi di carico. Questi benefici sono controbilanciati da una notevole complessità, sia di tipo economico (acquisto, mantenimento e aggiornamento delle macchine) che prettamente architetturale. Una delle prime grandi aziende a superare gli ostacoli iniziali è stata Amazon che nel 2002 ha basato il suo Amazon Web Services su architetture di tipo cloud. Cloud User: è il fruitore della nube. Un problema rilevante per questa entità è la “privacy dell’utente” che potrebbe essere violata. Una possibile soluzione è la creazione di comunità che garantiscano i diritti degli utenti. Cloud Vendor: è l’entità che vende prodotti e servizi che facilitano l’uso, l'adozione e l'uso di nube di calcolo. Studio ed analisi del Cloud Computing - 11 - Stumpo Elvio
Capitolo 2 Analisi sulle offerte cloud Capitolo 2 Analisi sulle offerte cloud L’architettura a nube è stata per molti colossi informatici il candidato migliore per la risoluzione di alcuni problemi generati dall’elaborazione di dati su vasta scala. Tale speranza ha portato lo stanziamento di risorse di ogni tipo, soprattutto di ordine economico, atte allo studio e, successivamente, alla realizzazione di un’architettura a nube che rispondesse il più possibile alle richieste degli investitori. Attualmente sul mercato sono presenti diverse aziende che offrono servizi cloud: da colossi come Amazon, IBM, Google, Microsoft, fino a realtà cloud offerte da società minori come la GoGrid. 2.1-GoGrid L’architettura GoGrid è basata su un’infrastruttura a nube che offre un servizio di hosting e mette a disposizione macchine virtuali di tipo Linux e Windows, in cui di default sono già preinstallati programmi come IIS, Java, C#, Apache, PHP, Microsoft SQL Server, e MySQL. Gli elaboratori virtuali (o immagini server) sono gestiti tramite un pannello di controllo multi-sistema 2 che permette con estrema facilità il settaggio della macchina come singolo server o come componente di un cluster. GoGrid, attualmente, mette a disposizione due tipi distinti di hardware Fig.2-1. Schema rappresentativo dell’architettura GoGrid (virtuali) – Fig. 2.2. RAM CPU Storage Space L’utilizzo dei primi 10 GB di spazio disco sono 4GB 3 Xeon 240GB completamente gratis per ogni account. Alcune delle 8GB 6 Xeon 480 GB caratteristiche hardware sono Fig.2-2. Elenco delle possibili configurazioni disponibili in GoGrid. fisse (RAM e CPU) mentre lo spazio di immagazzinamento dati risulta essere altamente scalabile (senza nessun limite d’assegnamento o d’impiego) e completamente a disposizione delle reti cloud sia di tipo Windows che di tipo Linux. GoGrid permette anche l’espansione della memoria di massa anche dopo la costruzione della nube. 2 L'API Client di GoGrid sono gestite tramite tecnologia REST simile alla interfaccia query. Le invocazioni dei metodi di GoGrid sono fatte attraverso Internet spedendo richieste di HTTP GET o HTTP POST direttamente al Server GoGrid API REST il quale, a sua volta, risponde mediante la medesima procedura. Studio ed analisi del Cloud Computing - 12 - Stumpo Elvio
Capitolo 2 Analisi sulle offerte cloud Un’altra caratteristica della rete completamente personalizzabile è l’elasticità. Infatti l’utente, qualora volesse, può scegliere, in maniera del tutto autonoma, il tipo di soluzione di rete (software e hardware) da adottare nella propria nube, impiegando reti preesistenti o creandone di ibride. La rete cloud offerta da GoGrid garantisce, inoltre, persistenza nello stoccaggio dei dati. Questo vuol dire che l’hard disk virtuale, associato ad ogni account, non perderà i dati critici durante un riavvio improvviso del server o di un nodo. Se, accidentalmente, il server o un nodo della rete smettesse improvvisamente di funzionare, i dati rimarrebbero intatti e sarebbero disponibili solamente quando l’elemento danneggiato non fosse ripristinato o sostituito. Ad ogni cliente di GoGrid è assegnata una sua squadra di esperti che seguono l’utente in caso di necessità. L’associazione team tecnico – cliente è rigida, nel senso che ogni volta che l’utente ha bisogno di supporto, tratterà sempre con la stessa squadra di esperti di cloud, i quali sono in possesso di tutte le informazioni del cliente, della rete ad esso associata e della sua eventuale evoluzione. Il servizio di assistenza tecnica è del tutto gratuito e sempre disponibile. In definitiva, le società che scelgono GoGrid come cloud provider sono sempre seguite da esperti del settore e possono creare rapidamente soluzioni di tipo hosting su provider di calcolo a nube che sono scalabili, affidabili, facili da maneggiare ed economici. 2.2-IBM Blue Cloud 2.2.1-Cenni sull’organizzazione della nube Il progetto Blue Cloud, forte della grande esperienza di IBM nell’ambito del calcolo intensivo, si basa su open standard e software open source supportati da servizi, tecnologie e software IBM. Il cuore del Blue Cloud è il BladeCenter vale a dire i sistemi di cluster di server adibiti alle reti a nube. Blue Cloud, inoltre, usa, virtualizzazione di sistemi operativi Fig.2-3. Schema riassuntivo dell’architettura Blue Cloud Linux con Xen e PowerVM, in combinazione con lo schedulatore per carichi paralleli Hadoop. Blue Cloud è supportato dal software IBM Tivoli per la gestione dinamica dei server. Viene impiegato anche Google MapReduce per l’assegnazione e l’esecuzione di vari task su cluster di macchine. Il progetto cloud dell’IBM, nonostante la fortissima dipendenza (software, ma soprattutto hardware) con l’azienda che lo ha creato, prevede anche la stretta collaborazione con varie istituzioni, tra le quali sono presenti le università che impiegano l’architettura a nube per accelerare i loro progetti e le iniziative di ricerca. Molto interessanti sono gli ambienti di cloud computing di tipo accademico della Carnegie Mellon University, la Qatar University, la Texas A&M University, la University of Pretoria e l'HEALTH Alliance. Studio ed analisi del Cloud Computing - 13 - Stumpo Elvio
Capitolo 2 Analisi sulle offerte cloud 2.2.2-Carnegie Mellon University, Qatar University, Texas A&M University (Qatar) La stretta collaborazione tra queste tre università, tutte nel Qatar, ha dato origine ad un progetto che si prefigge di portare il cloud computing in Medio Oriente. Le università potranno avvalersi anche di collaborazioni esterne, come gruppi di esperti, ricercatori e, addirittura, semplici clienti IBM per sviluppare una soluzione cloud in grado di contribuire a risolvere varie tipologie di problemi. Il Qatar Cloud Computing Center (è l’organismo costituito dalla sinergia delle tre università prima citate) ha tra i suoi scopi principali la ricerca e lo sviluppo del data mining, della modellizzazione scientifica e della simulazione, della biologia computazionale, della modellizzazione finanziaria e del modello previsionale. Sono stati inoltre identificati cinque progetti di applicazione pilota sui quali concentrarsi: • modellizzazione sismica ed esplorazione per la ricerca di gas e petrolio • soluzioni operative di produzione integrate per i settori petrolifero e del gas • motore di ricerca web in lingua araba • test e migrazione di varie applicazioni utilizzando i metodi di programmazione Hadoop/MapReduce • creazione di un percorso di formazione sul cloud computing presso le università. 2.2.3-University of Pretoria (Sud Africa) Il Computational Intelligence Research Group, presso la University of Pretoria, utilizzerà il cloud computing per la ricerca medica di futura generazione. Attraverso questa iniziativa, gli studenti troveranno i modi per rallentare l'avanzamento di malattie gravi studiando le percentuali di assorbimento dei farmaci e il ripiegamento della struttura proteica del DNA una volta introdotto un certo tipo di farmaco. La soluzione cloud computing consentirà anche di gestire meglio i progetti e i carichi di lavoro. In passato, non si disponeva di sistemi dedicati alla gestione dei progetti di ricerca, e si doveva inoltre raccogliere manualmente i risultati dei dati relativi agli esperimenti a causa della scarsa disponibilità di applicazioni per la gestione delle informazioni. I tempi di ricerca ora si sono ridotti da settimane a giorni e le diverse variazioni dei test di ricerca sono disponibili nella soluzione cloud per trarne risultati utili dal punto di vista statistico. 2.2.4-The Higher Education Alliance for Leadership Through Health (Africa Orientale) L'HEALTH Alliance, è un consorzio di sette università, che lavora con IBM ed esperti del settore per ampliare le offerte formative attraverso laboratori informatici virtuali in modo tale da consentire agli studenti l'accesso remoto. Tramite questo cloud, gli studenti dell'Alliance potranno accedere ai materiali informatici formativi più avanzati, selezionare applicazioni software e risorse informatiche e di storage senza dover sostenere spese di manutenzione e alimentazione di ambienti informatici. L'HEALTH Alliance, si dedica, tra le altre cose, a promuovere l'uso strategico della tecnologia per impieghi inerenti alla sanità pubblica, prevedendo di insediare un Public Healthcare Studio ed analisi del Cloud Computing - 14 - Stumpo Elvio
Capitolo 2 Analisi sulle offerte cloud Center of Excellence in grado di fornire assistenza sanitaria e servizi formativi facilmente disponibili ai paesi dell'Africa sub-sahariana. 2.3-Google App Engine Visto lo sviluppo della rete a nube, anche Google offre, ormai, da diversi mesi il suo nuovo prodotto cloud: Google App Engine (GAE). GAE è stato studiato come il metodo da seguire per creare applicazioni web (HTTP-driven) da ospitare sui web server di Google. A differenza di EC2, e GoGrid, GAE scende nel campo delle piattaforme cloud fornendo un framework di tecnologie rigide, con le quali creare applicazioni senza preoccuparsi della loro architettura e dei picchi di traffico e carico. Il software è realmente open source, infatti nelle pagine dedicate alla cloud di Google si trova tutto, ivi compresi i listati Fig.2-4. Confronto schematico tra GAE e una dei sorgenti (Python). tipica rete cloud 2.3.1-Le risorse La prima caratteristica della rete che si riscontra è la mancata scalabilità hardware della rete stessa. Per ogni account, infatti, il Google App Engine associa solo una CPU 3 di tipo mono- core. Attualmente non è prevista la possibilità dell’impiego di architetture multi-core tipiche del cloud. Nonostante questa grossa limitazione che rende la rete abbastanza rigida, le sue caratteristiche sono tutte monitorate, come: il carico della CPU, la banda trasmissiva impiegata, le risorse realmente impiegate per ogni singola applicazione. Un dettagliato pannello di controllo, infatti, riporta un lungo elenco di voci che indicano i consumi effettivi (in continuo aggiornamento). Un’ulteriore caratteristica che discosta GAE dalle comuni reti cloud è la completa mancanza di virtualizzazione di sistemi operativi di ogni tipo; esso, infatti, permette la sola esecuzione di codice Python, eventualmente associato ad un framework proprietario o ad una versione alleggerita di Django. Per usufruire della rete GAE e, quindi, iniziare a sviluppare le applicazioni, è necessario scaricare l'ambiente di sviluppo, che ricreerà le stesse condizioni tecniche di GAE sulla propria macchina locale; l'SDK contiene, infatti, un web server, un database, le strutture per recuperare indirizzi HTTP(s), quelle per l'invio di email e per la manipolazione d’immagini. 3 Ad ogni singola CPU è associato un processore Intel con clock pari a 1.2 GHz con architettura X86 (32-bit). Studio ed analisi del Cloud Computing - 15 - Stumpo Elvio
Capitolo 2 Analisi sulle offerte cloud 2.3.2-I componenti fondamentali Per poter controllare il consumo effettivo di risorse, GAE mette a disposizione tutta una serie di servizi che le applicazioni possono sfruttare: • Il Datastore: database un po’ particolare denominato BigTable, formato da una piattaforma distribuita operante sul file system proprietario, GFS. Ha un linguaggio simile a SQL con delle limitazioni a carattere operativo chiamato GQL. Nonostante le limitazioni, comunque, è consentito un uso standard abbastanza vasto del database da parte delle applicazioni. • Google Accounts: è una API che permette di avere automaticamente un sistema di login per le applicazioni, basato sugli accounts Google. Potrebbe essere un problema di sicurezza basare l’identificazione dell’utente solo sull’impiego dell’account, ma considerato che non esiste una versione business di GAE, il problema passa in secondo piano. • URL Fetch: le applicazioni possono accedere all'esterno, recuperando il contenuto di URLs remoti sfruttando API basate sulla stessa infrastruttura che Google usa per altri suoi prodotti. E' comunque possibile usare le librerie standard di Python se non si vuole usufruire dell’infrastruttura Google (e dei suoi limiti). • Mail: usata per inviare email con o senza allegati anche verso l’"admins" delle applicazioni. • Memcache: è uno storage di tipo “in-memory key-value”. Permette di inserire in cache strutture, valori, risultati di query complesse e rendere, quindi, il recupero degli stessi più veloce. • Image Manipulation: permette di ridimensionare, ruotare ed effettuare operazioni basilari su immagini in formato JPEG e PNG. Ogni richiesta HTTP ha 30 secondi di tempo per essere evasa, l'SDK permette anche il deploy delle applicazioni per svilupparle in locale, fino al momento dello spostamento sui server di Google, riducendo al minino il carico della rete. • Sandbox: . è un ambiente sicuro, affidabile, indipendente dall’hardware, dal sistema operativo e dalla ubicazione fisica del sistema di servizio di web in cui vengono conservate le richieste di rete dei vari utenti. Questo metodo garantisce accessi sicuri, contemporanei e multipli alla rete GAE. Studio ed analisi del Cloud Computing - 16 - Stumpo Elvio
Capitolo 2 Analisi sulle offerte cloud 2.3.3-Costi per l’impiego della rete GEA Ogni operazione (richiesta) sottoposta all’GAE, sia in entrata che in uscita, consuma un certo livello di risorse addizionali che vengono addebitate sul proprio account. Quota gratis predefinita Quota a pagam ento predefinita Risorsa Lim ite Frequenza Lim ite Frequenza quotidiano m assim a quotidiano m assim a R 1,300,000 43,000,000 30,000 Richieste 7,400 richieste/minuto I richieste richieste richieste/minuto C Larghezza di banda uscente max 1,046 740 H 10 gigabytes 56 megabytes/minuto (fatturabile, incluso Http) gigabytes megabytes/minuto I E Larghezza di banda entrante max 1,046 740 10 gigabytes 56 megabytes/minuto S (fatturabile, incluso Http) gigabytes megabytes/minuto T max 1,729 E Tempo di CPU (fatturabile) 46 ore-CPU 15 minuti CPU/minuto 72 minuti CPU/minuto ore-CPU 10,000,000 57,000 140,000,000 129,000 D Chiamate di API Datastore chiamate chiamate/minuto chiamate chiamate/minuto A T Stored Data (fatturabile) 1 gigabyte nessuna nessun limite max nessuna A 153 S Dati inviati all'API 12 gigabytes 68 megabytes/minuto 72 gigabytes megabytes/minuto T 659 1,484 O Dati ricevuti dall'API 115 gigabytes 695 gigabytes R megabytes/minuto megabytes/minuto E Tempo di CPU di Datastore 60 ore-CPU 20 minuti CPU/minuto 1,200 ore-CPU 50 minuti CPU/minuto 1,700,000 4,900 Chiamate API mail 7,000 chiamate 32 chiamate/minuto chiamate chiamate/minuto Destinatari email max 7,400,000 5,100 E (fatturabili) 2,000 destinatari 8 destinatari/minuto destinatari destinatari/minuto M Email Admins 5,000 email 24 email/minuto 3,000,000 email 9,700 email/minuto A Invio messaggi Body Data 60 megabytes 340 kilobytes/minuto 29 gigabytes 84 megabytes/minuto I L Invio allegati 2,000 allegati 8 allegati/minuto 2,900,000 allegati 8,100 allegati/minuto 300 Invio dati allegati 100 megabytes 560 kilobytes/minuto 100 gigabytes megabytes/minuto F Chiamate UrlFetch API 657,000 chiamate 3,000 46,000,000 32,000 chiamate/minuto chiamate chiamate/minuto U E 740 R T Invio dati all'UrlFetch 4 gigabytes 22 megabytes/minuto 1,046 gigabytes megabytes/minuto L C 740 H Ricezione dati dall'UrlFetch 4 gigabytes 22 megabytes/minuto 1,046 gigabytes megabytes/minuto M Chiamate all'API 4,800 45,000,000 31,000 A 864,000 chiamate N Manipolazione d'immagini chiamate/minuto chiamate chiamate/minuto I 400 I Invio dati all'API 1 gigabytes 5 megabytes/minuto 560 gigabytes P megabytes/minuto M U A 300 L G A Ricezione dati dall'API 5 gigabytes 28 megabytes/minuto 427 gigabytes E megabytes/minuto T I 2,500,000 14,000 47,000,000 32,000 O Esecuzione trasformazione N trasf ormazioni trasf ormazioni/minuto trasf ormazioni trasf ormazioni/minuto M 48,000 108,000 E Chiamate all'API Memcache 8,600,000 96,000,000 M chiamate/minuto chiamate/minuto C 128 A Dati inviati all'API 10 gigabytes 56 megabytes/minuto 60 gigabytes megabytes/minuto C H 284 640 E Data ricevuti dall'API 50 gigabytes 315 gigabytes megabytes/minuto megabytes/minuto Fig.2-5. Tabella riassuntiva delle caratteristiche offerte e monitorizzate da GAE L’idea fondo è all’incirca la stessa dei cellulari prepagati. Esistono due tipi di “abbonamento” o profilo quello “Free” (o gratis) e quello “Billing” (o a pagamento). Il profilo gratis è associato per default ad ogni account. Se le risorse consumate dall’utente sono inferiori a quelle previste per il profilo free l’utente non paga nulla, altrimenti, se supera il limite, va in “burst” e cambia automaticamente profilo e passa a quello billing. Chiaramente esiste un metodo per controllare la tariffazione Studio ed analisi del Cloud Computing - 17 - Stumpo Elvio
Capitolo 2 Analisi sulle offerte cloud delle risorse addizionali ed è accessibile anche all’utente: Google Checkout. Esso indirizza l’utente al Max Daily Budget il quale può configurare e controllare le somme stanziate per le singole risorse addizionali che l’utente è disposto “ad acquistare” ogni giorno. Configurando il Max Daily Budget su valori ben precisi, si ottiene un tetto massimo di spesa. Raggiunto tale valore, le applicazioni vengono bloccate. Anche in questo caso vale il paradigma “pay-for use” vale a dire che è addebitata solo la risorsa che effettivamente viene consumata. 2.3.4-Ulteriori dettagli Un sistema rigido come la Rete GAE comporta anche diversi limiti. Non si tratta, infatti, di un prodotto completamente nuovo: la piattaforma, infatti, è la stessa alla base di molti attuali servizi di casa Google, come Google Earth, Google Sites, o Google Finance e al suo interno integra una serie di applicazioni e funzionalità che Google utilizza già da tempo in tutto il mondo. Google ha comunque espresso la volontà di migliorare le potenzialità del proprio servizio cloud. Attualmente Google è in continua ricerca di soci validi per il progetto cloud, aziende del settore interessate (si è appena associata ad Salesforce), o singoli utenti e/o sviluppatori disposti a testare ed eventualmente migliorare i servizi forniti dalla rete. Il sistema GAE è ancora in fase di studio ed è offerto a tutti nella versione previous release che permette ai team tecnici un continuo testing real-time del prodotto e quindi l’individuazione delle carenze dell’architettura stessa. 2.4-EC2 Amazon Elastic Compute Cloud (noto anche come "EC2") è un servizio web che permette ai clienti di noleggiare computer su cui eseguire le proprie applicazioni informatiche. EC2 consente, tramite un processo completamente scalabile, la realizzazione di applicazioni web, fornendo servizi di interfaccia attraverso cui i clienti possono richiedere un numero arbitrario di macchine virtuali, vale a dire istanze del server su cui si può caricare qualsiasi tipo di software. Amazon Elastic Compute Cloud, inoltre, ha la capacità di ridimensionare il proprio carico di lavoro in nubi di calcolo. L’obiettivo del cloud di Amazon è quello di fornire applicazioni software sempre più semplici ed intuitive, sia dal lato utente che dal lato sviluppatore. Esso, infatti, fornisce il controllo completo delle risorse di elaborazione e consente di eseguire le istanze direttamente su Amazon. L’EC2 riduce il tempo richiesto per ottenere le istanze; tale condizione permette una rapida scalabilità delle capacità, sia verso l’alto che verso il basso, in funzione del comportamento dell’utilizzatore. Attualmente gli utenti possono creare, avviare e chiudere le istanze del server in maniera del tutto autonoma, da qui il termine "elastico”. Amazon.com prevede che EC2 sarà uno dei suoi numerosi servizi web, commercializzato con il termine Amazon Web Services (AWS); infatti EC2 è diventato disponibile al pubblico il 23 ottobre 2008 con il supporto per Microsoft Windows Server. Studio ed analisi del Cloud Computing - 18 - Stumpo Elvio
Capitolo 2 Analisi sulle offerte cloud 2.4.1-Funzionalità Amazon EC2 Amazon EC2 presenta un vero e proprio ambiente virtuale che consente di utilizzare le interfacce di servizi web per lanciare le istanze sotto una varietà di sistemi operativi, impiegando per ogni ambiente applicazioni specifiche. Per utilizzare Amazon EC2, basta semplicemente: • Creare un Amazon Machine Image (AMI), che contenga le applicazioni, le librerie, i dati e le impostazioni di configurazione, o in alternativa, caricare una macchina virtuale già pre-configurata per ottenere una AMI che sia immediatamente funzionante. • Caricare l'AMI in Amazon S3. EC2 fornisce gli strumenti che rendono semplice la memorizzazione della stessa. Amazon S3 fornisce un sicuro, affidabile e veloce “magazzino” per memorizzare le “immagini”. • Utilizzare il servizio web di Amazon EC2 per la configurazione della sicurezza e l’accesso alla rete. • Scegliere il tipo di istanze da utilizzare, il sistema operativo che si desidera, poi farle eseguire (lancio istanza - termino istanza); controllare il numero di istanze dell’AMI utilizzando, se necessario, il servizio Web API o altri strumenti di gestione. • Stabilire se si desidera eseguire le istanze in locazioni multiple (IP statico endpoints, o l’attach persistent block storage). • Pagare solo le risorse che si consumano effettivamente, come ad esempio, il tempo o il trasferimento di dati. 2.4.2-Servizi highlights Elasticità - Amazon EC2 consente di aumentare o diminuire la capacità di calcolo nel giro di pochi minuti, non in ore o in giorni. È possibile utilizzare centinaia o addirittura migliaia di server contemporaneamente. Questo perché tutto è sotto controllo mediante le API del servizio Web. Le applicazione degli utenti si possono scalare in maniera del tutto automatica, sia verso l’alto che verso il basso, a seconda delle esigenze. Completamente controllata – L’utente ha il completo controllo delle sue istanze. Ha accesso come root per ciascuna di esse, e può interagire con loro come si farebbe con qualsiasi macchina. Le istanze possono essere riavviate in remoto usando le API del servizio web. Si può anche ottenere un accesso alla console di uscita delle proprie istanze. Flessibilità – L’utente può scegliere tra varie tipologie di istanze, ha a disposizione vari sistemi operativi e pacchetti software. Amazon EC2 consente di selezionare una configurazione di memoria, di CPU, e della migliore istanza di archiviazione possibile, in funzione della scelta del sistema operativo e delle applicazioni. Ad esempio, la scelta di sistemi operativi comprende numerose distribuzioni di Linux, di Microsoft Windows Server e di OpenSolaris. Integrazione - Amazon EC2 è progettato anche per l’utilizzo con altri Amazon Web Services. Esso, infatti, lavora in collaborazione con Amazon Simple Storage Service (Amazon S3), Amazon SimpleDB e Amazon Simple Queue Service (Amazon SQS) per fornire una soluzione completa per il calcolo, l'elaborazione e l'archiviazione di ricerca in una vasta gamma di applicazioni. Studio ed analisi del Cloud Computing - 19 - Stumpo Elvio
Puoi anche leggere