Corso di Tecnologie Web Prof.ssa Anna Goy ─ Cloud Computing e SaaS Estratto da: Margherita Merlino, Analisi del Cloud Computing come tecnologia innovativa. Dall'organizzazione e lo sviluppo in ambito aziendale alle applicazioni relative al nucleo famigliare, tesi di Laurea Magistrale in Produzione e Organizzazione della Comunicazione e della Conoscenza, a.a. 2011/2012 [Introduzione + cap. da 1.1 a 1.4] 5 INTRODUZIONE Alcuni anni fa, Internet veniva spesso rappresentata nei diagrammi come una nuvola (cloud), una sorta di gigantesco etere nel cielo, ben al di là della propria casa o del proprio ufficio. Questa metafora si è dimostrata decisamente premonitrice, oggi infatti i dati e i programmi non devono necessariamente risiedere sui dispositivi di proprietà degli utenti, ma con l’evolversi della tecnologia si sono sviluppati nuovi sistemi in grado di agevolare e velocizzare le azioni quotidiane di ogni utente, memorizzando su Internet i dati di cui si necessita. Questa nuova evoluzione nel modo di archiviare e condividere i documenti è rappresentata dal Cloud Computing, che permette di gestire esternamente online le applicazioni e le attività, invece che all'interno dei propri computer, creando molti vantaggi. La popolarità di questa nuova tecnologia è stata supportata anche da due tendenze principali: da una parte, la crescente importanza di avere elaborazioni rapide in quantità sempre maggiori, che ha creato la necessità di strumenti di alto livello all’interno di compagnie che, però, non hanno competenze per costruire e mantenere grandi centri di elaborazione; dall’altra, la diffusione di smartphone, netbook e tablet, che hanno generato una richiesta supplementare per soluzioni basate sul Cloud Computing, grazie alle quali è possibile compensare le limitate risorse di cui sono dotati tali dispositivi. Inizialmente il Cloud è stato utilizzato soprattutto in ambito aziendale, in quanto le società hanno la possibilità di ottenere grandi risparmi sull'acquisto e sulla gestione di macchine ed infrastrutture. L'architettura del Cloud Computing prevede uno o più server reali, generalmente in strutture ad alta affidabilità e fisicamente collocate presso il data center del fornitore del servizio. Per far fronte a questa mobilità di sistema, il Cloud deve soddisfare le caratteristiche di componibilità, infrastruttura, piattaforme e di interfaccia. Deve inoltre ricorrere ad alcuni protocolli standard con differenti livelli di hardware, software e comunicazione tra clienti. Come tutte le innovazioni però, questa nuova tecnologia porta con sé alcune perplessità. In particolare l'aspetto che suscita una certa apprensione da parte delle aziende è legato principalmente alla privacy e alla custodia dei dati. Nonostante le garanzie prestate dai fornitori, le società basate su segreti industriali e strategie di marketing preferiscono tutelarsi, non delegando ad altri la custodia delle loro informazioni. A dispetto di queste titubanze il Cloud è diventato una tecnologia di business, e molte aziende sono nate di conseguenza. Paragonando le varie presenze sul mercato non si può non si può fare a meno di notare l’egemonia dei tra grandi pilastri informatici, rispettivamente Google App Engine, Amazon Web Service e Microsoft Aure. Poco alla volta questa diffusione ha valicato i confini 6 delle società iniziando a diventare di uso comune anche per i singoli utenti ed entrando a far parte, seppur spesso inconsciamente, della vita comune di tutti i fruitori della rete. L’utilizzo privato del Cloud Computing facilita notevolmente l’interazione dell’utente con il Web in quanto, grazie alla possibilità di immagazzinamento dati e alla vasta diffusione di dispositivi portatili e delle reti wireless, è possibile portare i propri contenuti sempre con sé. Rimane ancora da decidere a che profondità può entrare a far parte della routine quotidiana di ogni fruitore, e quali siano i limiti in cui il Cloud può esercitare, senza ledere alla privacy degli utenti. A questo proposito è stata condotta una piccola indagine sotto forma di intervista, per verificare l’effettiva presenza del Cloud nel quotidiano delle varie tipologie di utenti. Inoltre, si è indagato sulla prospettiva dell’utilizzo di questa tecnologia anche a livello famigliare, come strumento di condivisione e comunicazione tra i diversi componenti di una famiglia. 7 CAPITOLO 1 Uno sguardo generale Uno dei più recenti sviluppi nel settore dell'informatica è l'adozione del Cloud Computing. Utilizzato in primo luogo dalle aziende e basata sul concetto di "virtualizzazione", questa tecnologia consente di accedere a risorse (CPU1, reti, server, memorizzazione dati, applicazioni e servizi) in modo configurabile e "tagliato su misura" per l'utilizzo richiesto dall’utente. Nel Cloud Computing non esiste "un server" come tradizionalmente lo si intende, ovvero una singola macchina, eventualmente replicata contro eventuali perdite d'informazioni, situata in una località nota. Esiste, invece, un gruppo distribuito di server interconnessi ("la nuvola", in lingua inglese Cloud) che gestiscono servizi, eseguono applicazioni ed archiviano documenti in modo totalmente trasparente all'utilizzatore. Con il Cloud Computing le aziende (in particolare le più grandi) hanno la possibilità di ottenere grandi risparmi sull'acquisto e sulla gestione di macchine ed infrastrutture di calcolo. L'aspetto che suscita una certa apprensione nei confronti del Cloud da parte delle aziende è legato principalmente alla custodia dei dati. Nonostante le garanzie prestate dai fornitori, le società il cui futuro dipende strettamente dalla segretezza di determinate informazioni sensibili (progetti, caratteristiche dei nuovi prodotti ecc.) preferiscono ancora conservare questo materiale nella tradizionale sala sicura, situata in località nota piuttosto che "salvato da qualche parte” nella rete. Inoltre potrebbero manifestarsi problemi internazionali di tipo economico e politico, che possono verificarsi quando dati pubblici sono raccolti e conservati in archivi privati, situati in un paese diverso da quelli degli utenti del Cloud. Altre problematiche sono legate alla localizzazione degli archivi del Cloud in alcuni paesi ricchi in quanto, se l'accesso alle conoscenze memorizzate non sarà liberamente garantita a tutti e non verrà regolato da specifiche norme internazionali, si potrebbe generare un aumento del digital divide2 tra paesi ricchi e poveri e favorire principalmente grandi multinazionali con 1 L'unità di elaborazione centrale o CPU è una tipologia di processore digitale general purpose (dispositivi elettronici che non sono dedicati ad un solo possibile utilizzo) la quale si contraddistingue per sovrintendere tutte le possibili funzionalità del computer. Attualmente la CPU è tipicamente implementata come microprocessore. 2 Per digital divide, o divario digitale, si intende il divario esistente tra chi ha accesso effettivo alle tecnologie dell'informazione (in particolare personal computer e internet) e chi ne è escluso, in modo parziale o totale. I motivi di 2 Per digital divide, o divario digitale, si intende il divario esistente tra chi ha accesso effettivo alle tecnologie dell'informazione (in particolare personal computer e internet) e chi ne è escluso, in modo parziale o totale. I motivi di esclusione comprendono diverse variabili: condizioni economiche, livello d'istruzione, qualità delle infrastrutture, differenze di età o di sesso, appartenenza a diversi gruppi etnici, provenienza geografica. 8 organismi monocentrici dislocate principalmente nei paesi del Cloud, essendo la proprietà immateriale considerata come un fattore strategico per le moderne economie knowledgebased3. Nonostante queste diffidenze, vista la grande versatilità e le molteplici possibili applicazioni, si può affermare che il Cloud Computing del prossimo decennio permetterà nuovi modi di collaborare in qualsiasi luogo e a qualsiasi livello. 1.1 La vita prima del Cloud Le applicazioni aziendali tradizionali sono da sempre molto complicate e costose. La quantità e la varietà di hardware e software necessari per la loro esecuzione sono soverchianti, in quanto è necessario un team di esperti per installarle, configurarle, testarle, eseguirle, proteggerle e aggiornarle. Se si considera questo processo per tutte le applicazioni da sviluppare si può immaginare la difficoltà di qualsiasi azienda nell’ottenere l’applicazione necessaria. Il Cloud Computing è nato in risposta a questi problemi perché non richiede la gestione dell'hardware e del software previsti. L'infrastruttura condivisa offre infatti un funzionamento simile a quello dei servizi pubblici: l'utente paga solo le funzionalità necessarie. Come appare su una ricerca condotta alla Berkley Univesity nel 2009, l’impatto del Cloud sul mondo del software è paragonato a quello avuto dalle fonderie (semiconductor) sulle industrie hardware. Lo studio riporta che un tempo le società produttrici di hardware richiedevano un impianto di fabbricazione dei semiconduttori, ma le aziende in questione dovevano essere grandi abbastanza per permettersi di costruire e di gestire economicamente il processo di produzione. Tuttavia, il costo di elaborazione di queste apparecchiature è aumentato sempre più fino a rendere il costo di fabbricazione dei semiconduttori talmente elevato da poter essere sostenuto solo da aziende di grandi dimensioni. Questo ha motivato l'aumento delle fonderie di semiconduttori che costruiscono i chip per altre aziende il cui valore è in progettazione di chip innovativo. Una media società può ora avere successo nel chip business senza il capitale, le spese operative e i rischi associati a possedere un progetto all’avanguardia e innovativo. In questo modo inoltre si riduce anche il rischio di non avere abbastanza prodotti di successo per ammortizzare i costi operativi. Analogamente, i vantaggi dell'economia di scala possono portare ad un discreto numero di fornitori di Cloud Computing in grado di ammortizzare il costo dei loro data center di grandi dimensioni attraverso i prodotti di molte aziende prive di data center (data cebter-less). Questa malleabilità e semplificazione ha reso inoltre accessibile un’area totalmente avulsa all’utente medio, espandendo il Cloud anche a livello singolo e familiare, agevolando anche le più semplici azioni quotidiane. 3 L'economia basata sulla conoscenza (knowledge-based) è una branca dell'economia che si occupa di studiare le caratteristiche della conoscenza e delle informazioni, con particolare attenzione a natura, creazione, diffusione, trasformazione, trasferimento, e utilizzo della conoscenza in ogni sua forma. 9 Le più recenti innovazioni introdotte nel Cloud Computing stanno rendendo le applicazioni aziendali sempre più mobili, collaborative e simili ad applicazioni consumer di ampia diffusione quali Facebook e Twitter. Gli utenti di queste applicazioni si aspettano di ricevere le informazioni importanti in tempo reale e anche le applicazioni aziendali nel Cloud stanno iniziando a muoversi in questa direzione. Come testimoniano diverse ricerche4 la storia del Cloud Computing, contrariamente a quanto si può pensare e nonostante sia una tecnologia quanto mai attuale e recente, fonda i suoi principi sul modello del mainframe, che ha dominato gli anni 60 e 70. Le prime avvisaglie di questi concetti sono datati 1960 e precisamente quando John McCarthy (1927 -2011), noto scienziato informatico, espresse la sua visione di un futuro in cui la computazione potrà essere organizzata con sistemi pubblici d’accesso5. C’è chi sostiene che la nascita del termine “Cloud” risalga ai primi anni novanta e sia legata all’ambito della comunicazione telefonica, quando gli operatori affondavano nella nuvola i circuiti elettrici che servivano alla permutazione del traffico, sia questo audio o dati, nascondendoli agli utilizzatori finali che risultano praticamente a conoscenza solo dei dispositivi d’ingresso e d’uscita della comunicazione. Più probabilmente però si pensa anche che il nome derivi dalla somiglianza delle relazioni schematizzate di un’applicazione Cloud ad una nuvola. Verso la fine degli anni novanta, complice la crescita dell’utenza consumer di internet, ci fu una forte spinta innovativa e iniziarono a circolare i primi servizi on-demand sulla rete. In questo modo nacque quello che successivamente verrà definito come Software as a Service (SaaS, in dettagliato nel par. 1.3). Uno dei primi casi è da attribuire a Salesforce.com6 che, applicando fra loro altre tecnologie sviluppate da colossi come Google e Yahoo!, realizzarono un modello di business basato su servizi a richiesta e sulla personalizzazione di tali servizi, senza richiedere all’utenza finale particolari competenze specifiche. Dal 2000 in poi colossi come Microsoft e IBM iniziarono a comprendere l’importanza di questo fenomeno, il primo tramite il potenziamento dei propri servizi web e il secondo, nel 2001, tramite la stesura dell’Autonomic Computing Manifesto7 dove venivano descritte le tecniche principali per l’autogestione dei sistemi IT in presenza di prodotti eterogenei fra loro, facendo quindi ricorso in modo massiccio alla virtualizzazione. Nel 2005 Amazon modernizzò i propri data-center secondo i nuovi principi architetturali che, oltre a portare efficienza in termini di elaborazione e consumo di risorse elettriche, ha permesso l’accesso alla struttura da parte di utenti esterni, con lo scopo di poter utilizzare le prestazione computazionali on-demand. In questo modo nacquero gli Amazon Web Services, in contemporanea ai concetti più evoluti di Grid Computing (dettagliato nel par. 1.2). Nello stesso anno Microsoft con Hotmail e Google con Gmail si affacciavano verso il Software as a Service, proponendo un efficiente pannello di amministrazione online della propria casella di posta elettronica, iniziando a rendere obsoleti client come Outlook o Eudora. Tra il 2006 e il 4 Cfr. Barrie Sosinsky, Cloud Computing Bible, Wiley, Indianapolis, IN 2011. Cfr. Luca Marelli, Cloud Computing per applicazioni web, Apogeo, Milano 2010. 6 Ulrich Beck, La società cosmopolita. Prospettive dell'epoca postnazionale, il Mulino, Bologna 2003. 7 http://www.research.ibm.com/autonomic/manifesto/autonomic_computing.pdf. 5 10 2007 Google inizia a focalizzare la propria attenzione verso il Cloud, andando a progettare numerosi servizi con lo scopo di poter creare una suite di applicazioni da utilizzare online. Ma è solo nel 2008 che il termine comincia a diventare popolare anche fra i non addetti ai lavori, considerando questo tipo di approccio come il futuro del web. Ad ulteriore conferma del cambiamento in atto in quel periodo molte fonti autorevoli8 espressero in maniera inequivocabile come le aziende stessero mutando il loro assetto, dalla vecchia tipologia di possesso in loco di hardware e software, ad un innovativo modello in cui i servizi necessari vengono reperiti verso terzi e solo su richiesta, pagando in relazione all’effettivo utilizzo. Considerare il Cloud Computing come il futuro del Business IT non è corretto, in quanto oggigiorno tutti i grandi colossi si sono adeguati introducendo la nuova tecnologie o stanno adeguando i servizi già esistenti. Bisogna invece capire come questo nuovo paradigma potrà cambiare il mondo del business e valutare come sarà possibile generare differenziali competitivi anche alla luce di questa “corsa alla standardizzazione”9 di processi, prodotti e servizi. Per comprendere ulteriormente l’importanza di questo nuovo modello applicativo si può analizzare uno studio condotto dal Politecnico di Milano10 sul volume delle ricerche effettuate su Google per le parole “Cloud Computing”. Nei primi mesi del 2008 è iniziato l’interesse al Cloud che ha avuto una forte crescita costante negli ultimi anni. Se si confronta questo indice con quelli delle recenti tecnologie abilitanti del Cloud Computing, come il Service Oriented Architecture (SOA), il Web 2.0 e la Virtualizzazione si è visto che quest’ultime fino al 2007 erano in un trend crescente di interesse, ma ormai sono state raggiunte dal Cloud. Quantificando in data odierna11 i risultati trovati per Cloud Computing sono circa 207.000.000 mentre per SOA sono circa 7.870.000. Oltretutto è evidente come i volumi di notizie di SOA, Web 2.0 e virtualizzazione abbiano avuto un successo crescente nel 2008, anno in cui è “nato” il Cloud Computing, mentre oggi le quantità di articoli, informazioni e blog legati a questo argomento sovrastano nettamente quelle degli altri tre, ad eccezione del web 2.0 la cui vastità di interesse è però dovuta anche all’incrocio con diversi campi di dominio pubblico e al largo utilizzo sui dispositivi mobili. 1.2 Definire il Cloud Computing Anche se le piattaforme di Cloud Computing stanno acquisendo una popolarità crescente non è ancora chiaro a cosa è dovuta questa straordinaria diffusione, quali sono i vantaggi unici che una architettura Cloud Computing può offrire a un'azienda e soprattutto cosa si intende per Cloud Computing. 8 Gartner Inc. nel luglio del 2008. Edoardo Messi, La nuova era dell’ICT, Apogeo, Milano 2008. 10 Politecnico di Milano, Cloud & ICT as a Service, 2009. 11 Torino, 3 Marzo 2012. 9 11 Generalmente il Cloud Computing si può definire come l’insieme di risorse informatiche messe in comune e dei servizi erogati attraverso il web. Quando si schematizzano le relazioni tra tutti gli elementi utilizzati, il disegno risultante assomiglia ad una nuvola (Cloud), da cui è probabile come già accennato che derivi la denominazione. Il termine “computing” invece si riferisce ai servizi di utility computing come l’accesso a risorse computazionali (memoria, CPU, virtual server, ecc...) e servizi (backup, antispamming, …). Cercando una definizione più professionale si può dire che "per Cloud Computing si intende l'insieme di risorse hardware, del middleware (livelli di astrazione alle risorse hardware) e del software applicativo, che fornisce un determinato set di funzionalità fruibili mediante l'uso della rete."12 Chi usufruisce di questo servizio non deve aumentare il capitale per acquistare, gestire, mantenere e scalare l'infrastruttura fisica necessaria per gestire l’elevato traffico di informazioni richiesto. Invece di dover investire tempo e denaro per mantenere i loro siti, l’utente usufruisce di un servizio a seconda del tipo e della quantità di risorse utilizzate. La particolare elasticità del Cloud inoltre permette agli utenti di non dover più prevedere il traffico, ma possono promuovere i loro siti in modo spontaneo e individuale. Se si pensa inoltre all'infrastruttura di Cloud Computing e al suo impatto sulle aree che rivestono un'importanza critica per l'IT, come la sicurezza, gli investimenti in infrastrutture e lo sviluppo di applicazioni business, è naturale che molti reparti IT preferiscano appoggiarsi a dei servizi esterni anziché dedicare una parte significativa del loro tempo a progetti di implementazione, manutenzione e miglioramento che spesso non generano un effettivo valore per il bilancio delle aziende. Per non essere confuso con il grid computing,l’utility computing, o autonomic computing, il Cloud comporta l'interazione di diverse risorse virtualizzate. I Cloud server integrano e condividono le informazioni in base al livello di traffico del sito web attraverso l'intera rete. Il Cloud Computing è spesso fornito as a service (come un servizio) su Internet, in genere sotto forma di Infrastructure as a service (IaaS), Platform as a service (PaaS), o Software as a service (SaaS). Il grid computing in particolare applica le risorse di molti computer di una rete per un unico problema, allo stesso tempo, di solito infatti a un problema scientifico o tecnico che richiede un gran numero di cicli di elaborazione del computer o l'accesso a grandi quantità di dati. Un noto esempio di grid computing di pubblico dominio è il SETI (Search for Extraterrestrial Intelligence13) @Home, progetto in cui migliaia di persone stanno condividendo i cicli inutilizzati dei loro computer alla ricerca di segnali “razionali” dallo spazio esterno. Secondo John Patrick, vice-presidente della IBM per le strategie di Internet, "the next big thing will be grid computing14”. Questa tecnologia richiede l'utilizzo di software in grado di dividersi ed elaborare i pezzi di un programma in diverse migliaia di computer. Può essere pensato come 12 http://www.hosttalk.it/Cloud_computing/. SETI, acronimo di Search for Extra-Terrestrial Intelligence (Ricerca di Intelligenza Extraterrestre), è un programma dedicato alla ricerca della vita intelligente extraterrestre, abbastanza evoluta da poter inviare segnali radio nel cosmo. Il programma si occupa anche di inviare segnali della nostra presenza ad eventuali altre civiltà in grado di captarli. Il SETI Institute, proposto nel 1960 da Frank Drake (tuttora uno dei suoi direttori), è nato ufficialmente nel 1974. È un'organizzazione scientifica privata, senza scopi di lucro. La sede centrale è a Mountain View, in California. 14 http://www.sqlmag.com/article/performance/grid-computing-the-next-big-thing. 13 12 cluster computing distribuito e su larga scala o come una forma di rete distribuita di elaborazione parallela. Si può limitare alla rete di postazioni di lavoro all'interno di un'azienda o può essere una collaborazione pubblica (nel qual caso è anche conosciuto anche come una forma di peer-to-peer computing). Un certo numero di aziende, gruppi professionali, consorzi universitari, e altri gruppi hanno sviluppato o stanno sviluppando dei software per la gestione di progetti di grid computing. La comunità europea (UE) sta sponsorizzando un progetto di griglia per le energie fisiche, l'osservazione della terra e per le applicazioni della biologia. Negli Stati Uniti, la National Technology Grid sta costruendo un prototipo di griglia computazionale per le infrastrutture e una griglia di accesso per le persone. Il grid computing è quindi utile per la sua capacità di utilizzare in maniera più conveniente di una data quantità di risorse del computer, la possibilità di risolvere i problemi che non possono essere affrontati senza un enorme quantità di potenza di calcolo e perché anticipa che le risorse di molti computer possano essere cooperative e sinergicamente gestite come una collaborazione verso un obiettivo comune. Un settore probabile per l'uso del grid computing sarà applicazioni pervasive computing , un modello di calcolo previsto per il futuro in cui in piccola parte, o anche invisibile, i computer saranno ovunque intorno a noi, comunicando attraverso reti sempre più interconnesse. L'utility computing al contrario è un servizio di fornitura in cui vengono messe a disposizione del cliente risorse di calcolo, di gestione delle infrastrutture che vengono caricate per l'utilizzo specifico. Come gli altri tipi di computing on-demand questo modello cerca di massimizzare l'uso efficiente delle risorse e/o minimizzare i costi associati. Il termine “utility” è usato per fare un'analogia con altri servizi, come l'energia elettrica, che cercano di soddisfare le esigenze dei clienti fluttuanti, in modo da farsi pagare per le risorse in base all'utilizzo, piuttosto che su una base forfettaria. Questo approccio, noto anche come pay-per-use (paga ciò che usi) sta diventando sempre più comune nel campo dell'informatica aziendale e viene talvolta usato per il mercato consumer e, per il servizio Internet, l'accesso al sito Web, la condivisione dei file e altre applicazioni. Un'altra versione di utility computing viene effettuata all'interno di un'azienda che centralizza le risorse di calcolo per servire un maggior numero di utenti, senza inutili ridondanze. L’autonomic computing invece è un modello di auto-gestione informatica modellata sul sistema nervoso autonomo del corpo umano. Un sistema di elaborazione autonomo potrebbe controllare il funzionamento delle applicazioni informatiche e dei sistemi senza un input da parte dell'utente, secondo lo stesso modello per cui il sistema nervoso autonomo regola sistemi corporei senza la consapevolezza dell'individuo. L'obiettivo dell’autonomic computing è creare sistemi che si eseguono autonomamente, ad un alto livello di funzionamento, mantenendo la complessità invisibile all'utente del sistema. Inoltre, anche questo è uno degli elementi costitutivi del pervasive computing. Molte industrie leader del settore, tra cui IBM, HP, Sun e Microsoft sono alla ricerca di vari componenti dell’autonomic computing. Ad esempio IBM ha sviluppato una delle iniziative più importanti; nello sforzo per promuovere standard aperti per questo servizio, IBM ha 13 recentemente distribuito un documento che lo definisce "un progetto per la costruzione di sistemi autogestiti"15, con un insieme di strumenti associati per aiutare a mettere in pratica i concetti. Secondo IBM inoltre, ci sono otto elementi cruciali che un sistema informatico autonomo deve avere: - mantenere una conoscenza approfondita e specifica su tutte le sue componenti; avere capacità di auto-configurazione in base alle diverse e possibili condizioni imprevedibili; “auto- monitoraggio” costante per avere un funzionamento ottimale; essere in grado di trovare modi alternativi e autonomi per funzionare quando incontra problemi; capacità di rilevare le minacce e proteggersi a sua volta; adattabilità alle condizioni ambientali; basarsi su standard aperti piuttosto che tecnologie proprietarie; essere in grado di anticipare la domanda, pur rimanendo trasparente per l'utente. Avendo presente una panoramica dei servizi presenti è facile capire come il Cloud Computing, rispetto ad altre tecnologie, comporti l’interazione di diverse risorse per una maggiore completezza di informazioni e servizi. Tra i vari pregi del Cloud si può sottolineare una elevata integrazione dei servizi web. Per la sua stessa natura, la tecnologia di Cloud Computing è molto più semplice e rapida da integrare con le altre applicazioni aziendali, sia software tradizionali che basati su infrastruttura di Cloud Computing, sia forniti da terze parti che sviluppati internamente. Ha inoltre una fornitura di servizi di altissimo livello in quanto le infrastrutture Cloud assicurano una scalabilità notevolmente superiore, prestazioni di ripristino di emergenza complete e tempi di inattività straordinariamente bassi. Nessun componente hardware o software da installare deve essere installato ed è molto semplice da usare, tanto da pensare di arrivare anche ai singoli utenti privati. Oltre alla elevata personalizzazione infatti una piattaforma Cloud offre la tecnologia ideale per lo sviluppo di applicazioni capaci di supportare le esigenze in costante evoluzione di una organizzazione. 1.2.1. Tipologie di Cloud Il Cloud Computer può essere quindi visto come un “super” computer (inteso come grandi risorse di tipo informatico) che ha come sua ubicazione la rete internet. Il Cloud 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 palmare e, addirittura, anche da un cellulare connesso ad internet. Anche se distanti nello spazio però una rete Cloud può essere formalizzata in una serie di componenti: 15 Michael Miller, Cloud Computing: Web-Based Applications That Change the Way You Work and Collaborate Online, Que, USA 2006, p. 32. 14 - Cloud client: consiste nell’hardware (dispositivi di qualsiasi tipo connessi a internet) e nel software (un qualsiasi browser come Google Crome, Firefox, ecc.) di cui il sistema Cloud necessita per funzionare correttamente. - Cloud services: consiste nei servizi web: un sistema software progettato per sostenere interazioni di tipo machine-to-machine (da macchina e macchina) 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, ecc.). - 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, come ad esempio Python Django per Google App Engine. - Cloud storage: comporta la capacità di memorizzazione dei dati come un servizio offerto dalla rete (calcolati per GB al mese) (Database, Synchronisation Web Service). - Cloud infrastructure: il servizio che mette a disposizione reti di computer virtuali, ad esempio Azure (Microsoft). Analizzando la rete a nube ad un 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 lavora per garantire la completa integrazione tra le diverse nubi. Il sistema Cloud comporta componenti multipli che comunicano l'un 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. Si possono definire, 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 15 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’utilizzo della nube di calcolo. Data la moltitudine di applicazioni a cui può essere associato il Cloud ne sono nate diverse tipologie in cui è possibile classificare i servizi di Cloud Computing16. 16 - Storage-as-a-Service: consiste nella possibilità di utilizzare lo spazio sul disco, situato fisicamente su un sistema remoto, disponibile ad ogni applicazione che necessiti di memoria come una risorsa disco locale. E’ il componente più “primitivo” di Cloud Computing ed è un componente di base spesso utilizzato dalla maggior parte degli altri componenti di una infrastruttura di Cloud Computing. - Database-as-a-Service: fornisce la possibilità di utilizzare i servizi di un database remoto, condiviso con altri utenti e utilizzato come un normale database locale. Le soluzioni offerte da vari provider sono tutte accomunate dalla possibilità di accedere a database costosi in termini di licenze software e di hardware ripartendo i costi fra più utilizzatori. - Information-as-a-Service: questa definizione si riferisce alla possibilità di accedere a qualsiasi tipo di informazione residente su sistemi remoti e accessibile tramite servizi specifici, ad esempio API (Application Programming Interface, sono un insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per l'espletamento di un determinato compito all'interno di un determinato programma). Alcuni esempi possono essere la quotazione di un titolo di borsa, la validazione di un indirizzo o un report sul credito. - Process-as-a-Service: si riferisce a una risorsa remota in grado di raggruppare più risorse, come ad esempio servizi e dati, gestiti dalla stessa risorsa di Cloud Computing o accessibile remotamente, per creare processi di business. Un business process si può immaginare come un’applicazione che può risiedere su più sistemi e che utilizza Cfr. Barrie Sosinsky, Cloud Computing Bible, Wiley, Indianapolis, IN 2011, pp. 45-59. 16 servizi e informazioni in associazione fra loro secondo sequenze logiche che costituiscono il procedimento. Questi processi sono tipicamente più facili da modificare che non le applicazioni classiche e offrono maggiore flessibilità agli utilizzatori di questi “process engines” accessibili on-demand. 17 - Software-as-a-Service: rappresenta ogni applicazione distribuita agli utenti sul web e utilizzata normalmente tramite web browser. L’applicazione a cui si pensa comunemente ragionando su questa categoria è SFA di Salesforce.com, ma anche le applicazioni di office automation presenti su Google Docs, Gmail e Google Calendar sono a tutti gli effetti soluzioni di tipo software-as-a-service. - Platform-as-a-Service: rappresenta una piattaforma completa che include l’ambiente per lo sviluppo di applicazioni, di interfacce e di database, i dispositivi di storage e gli strumenti di collaudo, il tutto gestito in remoto e offerto agli utenti che sottoscrivono il servizio. Basato sul modello tradizionale di time-sharing le proposte più moderne di questa categoria di servizi consentono di sviluppare applicazioni di livello superiore da utilizzarsi localmente o secondo il modello “on-demand”, venduto indifferentemente come licenza software o tramite la sottoscrizione di un canone. - Integration-as-a-Service: offre la possibilità di una completa integrazione per il Cloud che include l’interfacciamento con le applicazioni, mediazione semantica, controllo del flusso e progettazione dell’integrazione. Include anche la maggior parte di caratteristiche e funzionalità di una tradizionale piattaforma EAI17, con la differenza che viene erogata come servizio. - Security-as-a-Service: consente di fornire servizi core18 sulla sicurezza in modalità remota attraverso internet. Mentre vengono forniti i normali servizi di sicurezza di base, cominciano ad essere forniti anche servizi di sicurezza più sofisticati come ad esempio l’identity management. - Management/Governance-as-a-Service: qualsiasi servizio on-demand che fornisce la possibilità di gestire uno o più servizi Cloud. Alcune di queste sono attività semplici come la gestione della topologia, l’uso di risorse, la virtualizzazione e la gestione del tempo di funzionamento. I sistemi di governance cominciano ad essere disponibili e consentono di gestire la definizione e l’adozione di politiche aziendali sia sui dati che sui servizi. Enterprise Application Integration (Integrazione d'Applicazioni di Impresa, EAI) si riferisce al processo d'integrazione tra diversi tipi di sistemi informatici attraverso l'utilizzo di software e soluzioni architetturali. 18 Con il termine Core in informatica si intende tipicamente il "nucleo elaborativo" di un microprocessore. Questo infatti è costituito in realtà da due componenti principali: il core appunto, e il package (pacchetto) che lo contiene. 17 - Testing-as-a-Service: fornisce la possibilità di testare sistemi locali o “on-the-Cloud” utilizzando software e servizi erogati in remoto. Mentre un servizio Cloud dispone delle funzionalità per fare i propri test, le soluzioni di tipo testing-as-a-service sono in grado di testare altre soluzioni direttamente sul Cloud, sui siti web, e su sistemi aziendali senza l’impiego di hardware o software in azienda. - Infrastructure-as-a-Service: questa tipologia di soluzione attualmente può essere tradotta come “data center-as-a-service” o nella possibilità di accedere remotamente a risorse di elaborazione. Si dispone di un sistema fisico a completa disposizione che ai fini pratici rappresenta il proprio data center, o parte di esso. La differenza principale fra questo approccio e altri tipologie Cloud consiste nel fatto che invece di utilizzare un’interfaccia su risorse contate e misurate, si ha accesso all’intero sistema e al software installato su di esso. Di queste tipologie i servizi i più utilizzati che, solitamente, vengono forniti dalle aziende del settore sono: IaaS (Infrastructure as a Service), PaaS (Platform as a Service) e SaaS (Software as a Service).Si distinguono per il livello a cui ognuno fornisce all'utente finale accesso all’architettura Cloud. L’architettura di un sistema di Cloud Computing, rende possibile constatare come gli IaaS siano i servizi che permettono di avere l'accesso al livello più basso della Cloud. Un'azienda fornitrice di IaaS mette a disposizione una infrastruttura hardware remota e ci fornisce la documentazione necessaria affinché la nostra piattaforma software possa utilizzarne le risorse. Ad esempio se un provider che mette a disposizione la propria infrastruttura, per l'esecuzione di virtual machines e per la loro gestione, è un IaaS Provider. Sono identificabili come PaaS, invece, tutti i servizi che ci mettono a disposizione una piattaforma pronta per lo sviluppo delle nostre applicazioni. E' possibile indicare come PaaS Provider gli attuali fornitori di web hosting; l'utente finale, infatti, non deve occuparsi della gestione software/hardware, ma ha la possibilità di usare librerie e framework preinstallati e di essere subito operativo dopo aver caricato sull'infrastruttura del fornitore la propria applicazione. I SaaS, infine, sono i servizi che mettono a disposizione dell'utente finale un software completo, che può comunque essere sempre configurabile, e che sopperisce a determinate richieste. Le web mail, conosciute ed utilizzate da tutti, sono un esempio di SaaS, perchè permettono di poter gestire le proprie email completamente dal web. Un altro chiaro esempio di SaaS, infine, è dato dai software da ufficio della suite Google Docs. In definitiva, “spostarsi nella Cloud significa abbracciare il concetto di BPO (Business Process Outsourcing19) con tutti i pregi ed i difetti che ne conseguono”20. 19 Il Business Process Outsourcing (BPO) prevede la contrattazione delle operazioni e le responsabilità delle funzioni aziendali specifiche (o processi) per un terzo fornitore di servizi. 20 Vincenzo Cinque, Piattaforme di monitoraggio per sistemi Cloud, Politecnico di Napoli, 2011. 18 1.3. Il modello NIST Per definire le caratteristiche che un sistema deve possedere per poter essere classificato come Cloud Computing si può utilizzare una definizione piuttosto autorevole e condivisa, giunta in pochi anni già a molteplici revisioni. Si tratta di un documento, la cui ultima versione è stata pubblicata nel settembre2011 dal National Institute of Standards and Technology (NIST), l’istituto statunitense degli standard e della tecnologia derivato dal vecchio National Bureau of Standards, che ha dato una definizione formale al Cloud Computing: “Cloud Computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction21.” “Il Cloud Computing `e un modello onnipresente, conveniente e che abilita l’accesso ondemand tramite la rete a un pool condiviso di risorse di elaborazione configurabili (ad es. reti, server, immagazzinamento, applicazioni e servizi), che possono essere erogate e liberate in modo rapido tramite attività di gestione o interazione con i service provider”. Il NIST inoltre sostiene che questo modello è composta da cinque caratteristiche essenziali. La prima parte della definizione mette in luce tre concetti fondamentali e caratterizzanti, di carattere prettamente tecnologico. Innanzitutto sottolinea la presenza di un modello abilitante; in termini scientifici un modello è la rappresentazione astratta e semplificata della realtà. In questo caso, invece, si utilizza il termine per racchiudere una serie di procedure, proprietà e caratteristiche ben definite che permettono l’accesso a risorse e/o servizi messi a disposizione attraverso questo paradigma. 21 - Self service ed on-demand: l’utilizzatore del servizio può richiedere ed utilizzare le risorse di calcolo e di immagazzinamento (storage) secondo le sue necessità, senza richiedere nessuna interazione umana con il fornitore di servizi. - Accesso di rete aderente agli standard: le capacità fornite dal servizio sono disponibili sulla rete e disponibili attraverso meccanismi standard che permettono l’utilizzo ad applicazioni eseguite su piattaforme eterogenee. - Resource pooling: le risorse del fornitore di servizio sono raggruppate allo scopo di servire gli utilizzatori attraverso un modello di erogazione multi-tenant. Le risorse fisiche e virtuali sono assegnate dinamicamente secondo le esigenze degli utilizzatori. Questi ultimi non hanno visibilità dell’effettiva posizione fisica delle risorse utilizzate se non con un livello di astrazione molto elevato (nazione, stato o al massimo data center). National Institute of Standards and Technology. The NIST Definition of CloudComputing, 2011. 19 La seconda parte della definizione racchiude in sé la parte gestionale del paradigma, riguarda infatti i due attori principali: il cliente e il service provider. Il primo può ottenere in tempi sensibilmente più rapidi risorse come reti, server, immagazzinamento, applicazioni e servizi, senza impegnarsi in termini di tempo e competenze. Il secondo, invece, è chi si fa carico di tutto questo, ovvero il gestore che deve soddisfare le richieste degli utenti, preoccupandosi di mantenere sempre attivo il sistema. Il NIST, inoltre, evidenzia altre due caratteristiche essenziali del Cloud Computing, non espressamente scritte ma ugualmente importanti alle precedenti: - Elasticità: le risorse possono essere fornite in modo elastico, veloce e, a volte, automatico permettendo una veloce scalabilità verso l’alto e verso il basso. L’utilizzatore, potendo acquistare l’uso di risorse in qualsiasi quantità ed in qualunque momento, ha la percezione di una disponibilità potenzialmente infinita. - Costo commisurato all’effettivo utilizzo: i sistemi Cloud controllano ed ottimizzano automaticamente l’uso delle risorse facendo leva sulla capacità di misura dell’uso delle tipologie di servizio (es. storage, computing time, banda). L’utilizzo delle risorse può essere monitorato e controllato in modo trasparente per il fornitore di servizio e l’utilizzatore. La definizione del NIST contiene anche una descrizione dei possibili modelli di servizio (SaaS, PaaS e IaaS) e dei modelli di distribuzione (private Cloud, community Cloud, public Cloud ed hybrid Cloud). Con l’avvento del Cloud Computing si può quindi affermare che questo sospinga la potenza di calcolo all’esterno, dopo trent’anni di centralizzazione (dai mainframe ai PC), verso mastodontici data center pubblici o privati, accessibili tramite la rete. 1.4 I modelli di servizio Definire quello che comprende il Cloud Computing è difficile, perché è un insieme di molte componenti. Nonostante tutto il Cloud Computing può essere facilmente suddiviso in uno dei tre modelli di servizio, come definito dal NIST e noto come il modello SPI. SPI è l’acronimo di Software, Platform (Piattaforma) e delle Infrastructure (Infrastruttura). Questi diversi modelli possono rappresentare in forma piramidale. Più ci si avvicina alla base e più viene consentita autonomia di sviluppo e di personalizzazione al consumatore, naturalmente ad un prezzo più elevato. Dal punto di vista concettuale ciascuno dei livelli rappresentati in figura 1.1 può essere implementato come un servizio fornito al livello superiore e viceversa, ciascun livello può essere visto come utente del livello inferiore. Il Cloud viene visto come un insieme di servizi che possono essere raggruppati, come già detto in precedenza, in tre categorie: Software as a Service (SaaS), Platform as a Service (PasS) e Infrastructure as a Service (IaaS) (figura 1.2). 20 Figura 1.1 – Modelli di servizio con esempi relativi. Figura 1.2 – Architettura di un sistema Cloud. SaaS Con Software as a Service (SaaS), all'inizio noto anche come Software on Demand (SoD), si intende la possibilità di usare applicazioni, in modalità centralizzata, in esecuzione su una Cloud infrastructure, accessibile da vari dispositivi client attraverso una interfaccia, come un browser web. Il consumatore vede solo il risultato finale, e cioè l'applicazione, non riesce a controllare l'infrastruttura di base (rete, server, sistemi operativi, immagazzinamento). L'utente potrà accedere e modificare solo specifiche impostazioni, o aggiungere funzionalità opzionali, durante la sessione di configurazione. 21 Possiamo dire che per Software as a Service si considerano in genere le applicazioni degli utenti finali forniti on demand su una rete pay per use. Il software non richiede alcuna installazione client, ma unicamente un browser e la connettività di rete. Spesso orientata verso l'utente finale che ha bisogno di accedere tramite un browser Web o altri client, SaaS fornisce l'accesso alle applicazioni ospitate su un'infrastruttura Cloud del service provider. Un business può trovare quasi tutte le applicazioni disponibili tramite il modello SaaS. Customer relationship management (CRM), calendario, e-mail e gestione delle risorse umane sono tra alcune delle applicazioni più comuni come i servizi forniti dalla infrastruttura Cloud. Per i dipartimenti IT, servizi IT management , filtro antispam, prevenzione delle intrusioni e altri software di sicurezza tradizionali sono tra i tipi di applicazioni sempre disponibili tramite il modello SaaS. Con SaaS, l'organizzazione utente non possiede né la domanda né i server associati, i sistemi operativi, immagazzinamento, rete o altre risorse IT necessarie per il suo sostegno e la consegna. SaaS è un modello di distribuzione del software attraverso il quale un fornitore di impresa sviluppa un’applicazione web-based (interazione lato server) del software, e poi ospita l'applicazione funzionante su Internet e utilizzata da tutti i clienti. Per quest’ultimi non è necessario acquistare licenze software o infrastrutture aggiuntive, è necessario solamente pagare il canone mensile per l'utilizzo del software. Si può dividere il servizio SaaS in due categorie: - Linea di Servizi alle Imprese: si riferiscono a soluzioni di business offerte alle imprese e venduti o messi a disposizione di queste sulla base di un abbonamento (ad esempio i servizi di SCM22 di CRM23 e di RDBMS24 di Microsoft. - Orientato al Cliente: sono servizi che vengono offerti al pubblico in generale su una base di sottoscrizione o, più spesso, offerti gratuitamente e supportati dalla pubblicità (sono parte di questa categoria servizi come il pacchetto Windows Live di Microsoft e Google Docs). I software offerti sono condivisi tra tutti i clienti e garantiscono la separazione logica dei dati tra utenti differenti. L'affidabilità sulla integrità e sul salvataggio dei dati è una caratteristica fondamentale, ed è compito dei data center interni al provider assicurare la replicazione e il backup, l'utente non deve preoccuparsi di queste operazioni. Le applicazioni on-demand seguiranno la logica del pay-as-you-go (paga quando finisci), ovvero venendo pagate solo per l'effettivo utilizzo (in ore o in carico computazionale), in questo modo l'utente sarà sollevato dal pagare licenze e preoccuparsi di manutenzioni. Il risultato comporta un notevole risparmio, soprattutto per le aziende che usufruiscono di servizi a pagamento. Per alcuni web services è possibile l'integrazione con altri software avendo così la possibilità 22 Supply Chain Management: riguarda diverse attività logistiche delle aziende, con l'obiettivo di controllare le prestazioni e migliorarne l'efficienza. 23 Customer Relationship Management: riguarda l'acquisizione di nuovi clienti o potenziali, l'aumento delle relazioni con i clienti più importanti, la fidelizzazione più longeva possibile dei clienti che hanno maggiori rapporti con l'impresa, la trasformazioni degli attuali clienti in procuratori, ossia consumatori che lodano l’azienda incoraggiando altre persone a rivolgersi alla stessa per i loro acquisti. 24 Database relazionale basato su Cloud. 22 di sviluppare nuove applicazione di tipo SOA25 che verranno spiegate in modo più dettagliato nel secondo capitolo. Riassumendo, i punti di forza del Saas sono: - Soluzione pronta e business ready. Diffusione sempre più veloce e aggiornamenti automatici. Seguono il modello pay-as-you-go. Luogo indipendente e accessibilità globale. Applicazione sempre più collaborative e con meno bachi. Bassi costi di acquisizione per l'utente. Un esempio di SaaS è MicroSoft Office365 . Fino al suo lancio, se un utente avesse voluto il programma Word, avrebbe dovuto acquistarlo, installarlo, fare gli aggiornamenti, rinnovare la licenza, ecc.Office365 Word invece può essere acquistato a un canone mensile, senza alcuna installazione client, i file vengono automaticamente eseguiti, gli aggiornamenti vengono automaticamente ricevuti e il software si può accedere da qualsiasi luogo. Per annullare l’iscrizione bisogna inoltre semplicemente smettere di pagare il canone mensile. Un altro esempio di Saas sono le classiche Google Apps. PaaS Il Platform as a Service viene usato da società di sviluppo software per eseguire i loro prodotti software. Questi prodotti software hanno bisogno di server fisici per funzionare, con software di database e server web su tutte le piattaforme in cui l'applicazione viene eseguita. PaaS fornisce a tutte la piattaforma le applicazioni software necessarie senza necessità di somministrazione dei componenti di livello inferiore. Derivato dal modello SaaS, PaaS soddisfa quindi le esigenze degli sviluppatori. Piuttosto che limitarsi a fornire applicazioni preconfezionate via su un modello di servizio, un fornitore di PaaS offre l'intera piattaforma di calcolo e le soluzioni necessarie per un ambiente di esecuzione dell'applicazione. Con PaaS, una società può distribuire applicazioni senza incorrere agli imprevisti associati e ai continui costi di manutenzione e gestione dell’infrastruttura sottostante. L'organizzazione utente ha il controllo delle applicazioni. I tipi di offerte PaaS possono variare a seconda di quale opzione funziona meglio per il tipo di azione ricercata. Ad esempio, alcune aziende offrono una combinazione di Cloud PaaS e SaaS, fornendo alle aziende la possibilità di personalizzare l'applicazione confezionata. Pur essendo in grado di ottimizzare l'applicazione, si può rendere il modello SaaS più attraente; il problema è però che quando combinato con una offerta PaaS, SaaS diventa meno portatile. Le ricche offerte PaaS consentono a un'organizzazione di supportare l'intero ciclo di sviluppo applicativo. I vantaggi che il PaaS porta sono: 25 La possibilità di scalare, in alto e in basso, a seconda delle necessità. Per Software Oriented Architecture si intende un’architettura software adatta a supportare l'uso di servizi Web per garantire l'interoperabilità tra diversi sistemi così da consentire l'utilizzo delle singole applicazioni come componenti del processo di business e soddisfare le richieste degli utenti in modo integrato e trasparente. 23 - La semplicità di installazione e distribuzione delle nostre applicazioni. Fatturazione pay-as-you-go (fatturazione a seconda dell’utilizzo), senza barriere iniziali. Non è richiesta alcuna installazione di software sulla propria macchina, si utilizza un browser web. Il servizio è multi-tenant (utilizzabile da più utenti). Non sono più richieste specifiche competenze per sviluppare applicazioni Web. Gli svantaggi PaaS comportano un certo rischio di lock-in (accordo esclusivo), se l'offerta di servizi necessitano di interfacce proprietarie o linguaggi di sviluppo; e la possibilità che la flessibilità delle offerte non possa soddisfare le esigenze di alcuni utenti le cui esigenze in rapida evoluzione. Esempi di PaaS sono SalesForce.com, Windows Azure, Joyent (Public Cloud utilizzata anche da Facebook e LinkedIn) e Google Apps. IaaS L’Infrastructure as a Service (o IaaS), detto anche Hardware as a Service, copre una vasta gamma di funzioni, da singoli server, alle reti private, unità disco, vari dispositivi di memorizzazione a lungo termine così come server di posta, server di nomi di dominio, nonché i sistemi di messaggistica. Tutti questi possono essere procurati on demand e spesso includono le spese di licenza del software per sistemi operativi e la necessità del software associato installato sui server. Le organizzazioni possono così realizzare una completa infrastruttura di calcolo utilizzando IaaS on demand. Questo modello di servizio consente alle organizzazioni di utenti a rinunciare alla realizzazione di attrezzature per un nuovo data center per gestire crescenti esigenze operative. L'azienda ottiene la necessaria infrastruttura IT - server, sicurezza, immagazzinamento e reti da un fornitore di servizi Cloud. Mentre una compagnia utente può eseguire applicazioni, database, sistemi operativi e altri software al di sopra delle infrastrutture selezionate, non ha alcun controllo diretto o l'accesso a tali macchine. Il fornitore di servizi Cloud gestisce quindi l'infrastruttura, compresa qualsiasi scala verso l'alto o verso il basso, se necessario. I servizi messi a disposizione quindi si possono dividere in tre categorie: - Dispositivi: server aziendali, dispositivi di immagazzinamento, di rete e sicurezza. Impianti e strutture: alloggiamenti per dispositivi, data center, sistemi di raffreddamento, generatori di potenza e sistemi di backup e sicurezza. Sistemi di gestione: monitoraggio delle prestazioni (on-site o da remoto) e modifica delle impostazioni in caso di problemi. Si può infine dire che IaaS è simile nel concetto a un tradizionale servizio di hosting dedicato, con due importanti differenze: l’organizzazione per attingere ad un comune insieme di dati altamente scalabili di risorse, e la possibilità di pagare solo ciò che è utilizzato su base utilità (pay- as-you-go). In altre parole, le aziende possono aumentare la produttività, eliminando i 24 costi di utilizzo. Esempi di Infrastructure as a Service sono ICloud (Storage ed applicazioni accessibili da browser o cellulare), MobileMe (Cloud Computing progettato per iPhone ed iPad da Apple), Rackspace (soluzioni di Private Cloud), Amazon Web Services (con EC2 per l'acquisto di capacità di calcolo e S3 per lo storage come servizi principali, sia come Paas che come IaaS). Qualsiasi servizio fornito dal Cloud può riguardare uno dei tre modelli di erogazione discussi. Gli utenti finali utilizzano in genere SaaS e PaaS, mentre i team di sviluppo software e i dipartimenti IT utilizzano principalmente IaaS. IDaaS Proprio come il Cloud ha una risposta per tutte le tecnologie dell'informazione, propone una risposta anche per il problema delle password. Identity as a Service (IDaaS) mira non solo a dare single sign-on (SSO, singolo accesso), la convenienza per gli utenti finali, ma anche la semplicità di outsourcing di IT e di gestibilità. Pionieri in questo mercato sono Oracle e Verizon, mentre The Open Group , Four Bridges Forum (4BF) e SAFE-BioPharma sono le tre organizzazioni professionali che hanno compiuto i maggiori progressi nell’ultimo periodo26. Negli Stati Uniti, il National Strategy for Trusted Identities in Cyberspace (NSTIC), parte del National Institute of Standards and Technology, è un'iniziativa governativa per promuovere la creazione di un ecosistema di identità. A livello di sviluppo, il più ampiamente riconosciuta IDaaS API è Initiative For Open Authentication (OATH) e l’algoritmo HOTP (una one-time password standard). Non si può ancora prospettare come sarà il lavoro dopo la dismissione delle password di autenticazione; in particolare è da definire la concorrenza di ingegneria sul mercato, in quanto le astrazioni e gli algoritmi matematici per la sicurezza sono stati definiti. In questo ambito la gestione delle identità sarà una delle più ampie sfide sempre, oltre all’alternativa strutturazione informatica si dovranno far fronte a gravi questioni giuridiche visto il suo impatto sulla privacy e sulla sicurezza delle persone. 1.5 I modelli di distribuzione [NO] Quando si decide di scegliere per le soluzioni offerte dal Cloud Computing, un'azienda deve effettuare varie considerazioni sul tipo di modello da utilizzare per i propri servizi Cloud. Questa scelta è fondamentale e decisiva: si decide quale sia la priorità dell'azienda, se preferire i bassi costi o l’elevata sicurezza e la privacy dei dati. I modelli di distribuzione del Cloud Computing sono principalmente tre: - 26 Public Cloud: dette anche External Cloud, mettono a disposizione le risorse, da parte del Cloud provider, come servizi per il pubblico utilizzo. In questo caso l'infrastruttura è di proprietà di un service provider, che eroga servizi pubblici adottabili da Cfr. Technology and Innovation Award del 2011 all’indirizzo http://unctad.org/en/docs/tir2011_en.pdf.