Introduzione al cloud computing
Transcript
Introduzione al cloud computing
Corso di Laurea Magistrale in Ingegneria Informatica Corso di Ingegneria del Software Avanzata A. A. 2013 - 2014 Cloud computing 1 Cloud computing M. Mongiello Ingegneria del Software Avanzata Sommario • Introduzione – Stato dell’arte • Tecnologie – Principali Vendor • Architetture di cloud computing 2 Architettura Software M. Mongiello Ingegneria del Software Avanzata Definizione • Per cloud computing si intende un insieme di tecnologie informatiche che permettono l’uso di risorse hardware (storage, CPU) e software distribuite in remoto. – La rappresentazione grafica delle reti mediante l’icona della nuvola è antecedente all’introduzione di questo nuovo paradigma e viene pertanto ripresa per porre in evidenza due concetti di base del cloud computing, ovvero la rappresentazione in forma astratta della complessità topologica di Internet e l’irrilevanza di questa sua complessità, realizzando così un sistema di cui non si conoscono i meccanismi di funzionamento ma che permette l’invio e la ricezione delle informazioni. 3 Architettura Software M. Mongiello Ingegneria del Software Avanzata Caratterizzazione • Il Cloud Computing è un insieme di tecnologie informatiche che consentono di distribuire come servizi su richiesta l’accesso e l’utilizzo di risorse di elaborazione, memoria e risorse applicative, distribuite e virtualizzate in rete. • Cloud Computing può essere visto come un “ prodotto ” che nasce da tecnologie come Grid Computing, Autonomic Computing e Software as a Service, tutto integrato e reso fruibile attraverso le tecnologie proprie del Web 2.0, a partire dalla centralità del browser e dall’approccio “ Web as a platform ”. 4 Architettura Software M. Mongiello Ingegneria del Software Avanzata Altre Definizioni • Con il termine cloud computing si intende un insieme di tecnologie informatiche che permettono l’utilizzo di risorse hardware e software residenti in remoto e accessibili dall’utente tramite la rete Internet. • L’idea alla base di questa “architettura a nuvola” è quella di avere un nuovo modello di sfruttamento delle risorse offerte da Internet: – infrastrutture, software, applicazioni e processi di business dovrebbero risiedere prevalentemente sui server web (le ‘nuvole’) piuttosto che essere ‘diffusi’ sui singoli computer connessi in rete. 5 Architettura Software M. Mongiello Ingegneria del Software Avanzata 6 La nuvola Architettura Software M. Mongiello Ingegneria del Software Avanzata Caratteristiche • Si ha la possibilità di accedere a servizi (e dati annessi) attraverso Internet senza avere idea dell’infrastruttura che li supporta e li fa funzionare; • Si passa dall’utilizzo di architetture client server ad architetture basate su servizi – caratterizzate da: • accentramento dei servizi hardware e software • delocalizzazione delle risorse che consente di rendere disponibili i propri dati all’intera infrastruttura cloud. 7 Architettura Software M. Mongiello Ingegneria del Software Avanzata Architettura • Il sistema del cloud computing non è ancora regolamentato da uno standard • Generalmente prevede uno o più server reali in architettura ad alta affidabilità e fisicamente collocati presso il data center (l’unità organizzativa che coordina i servizi di gestione dei dati) del fornitore del servizio che utilizza un supervisore basato sulla tecnica di virtualizzazione [34] per distribuire i servizi. – Gli utenti di questa architettura sono essenzialmente tre: • fornitore • amministratore • cliente 8 Architettura Software M. Mongiello Ingegneria del Software Avanzata 9 Architettura Architettura Software M. Mongiello Ingegneria del Software Avanzata Utenti • Il fornitore di servizi espone delle interfacce per elencare e gestire i propri servizi. • Il cliente amministratore utilizza tali interfacce per selezionare il servizio richiesto (ad esempio un server virtuale completo) e per amministrarlo (configurazione, attivazione, disattivazione). • Il cliente finale utilizza il servizio configurato dal cliente amministratore mentre le caratteristiche fisiche dell'implementazione (localizzazione del data center) sono irrilevanti. – In determinate situazioni il cliente amministratore e il cliente finale possono coincidere come nel caso di utilizzo da parte di un cliente di un servizio di storage per effettuare il backup dei propri dati in cui il cliente provvede a configurare e utilizzare il servizio. 10 Architettura Software M. Mongiello Ingegneria del Software Avanzata Cloud computing vs Grid Computing • Il concetto di cloud computing presenta inoltre delle relazioni con quello di Grid Computing [3] – tecnologia che si è affermata dagli anni ‘90 e che ha permesso il calcolo distribuito • consente una ricerca di interazione tra sistemi di elaborazione dislocati geograficamente ai fini di una cooperazione a livello computazionale tale da permettere di effettuare elaborazioni, di vario tipo e finalità, altrimenti impossibili per una sola macchina. • I due sistemi si differenziano per l’utilizzo delle risorse che, nel caso del cloud, vengono allocate su richiesta nel momento in cui un cliente ne ha bisogno e non sono assegnate a prescindere dal loro utilizzo effettivo. 11 Architettura Software M. Mongiello Ingegneria del Software Avanzata Tipi di servizio • L’accesso ad un servizio da parte di un’azienda che era di tipo – on premise: il servizio era ospitato su macchine dedicate e completamente controllate Diventa – on demand: il servizio è ospitato su uno o più server di un provider esterno (nel cloud) e viene richiesto con modalità di pagamento pay-per-use. 12 Architettura Software M. Mongiello Ingegneria del Software Avanzata Categorie di serivizi • Attualmente, la maggior parte dei servizi utilizzati da un’azienda è di tipo on premise: – file server, database, posta elettronica sono usualmente ospitati su server aziendali e quindi anche le applicazioni aziendali più personalizzate sono costruite con la stessa logica per la necessità di dover accedere ai dati che risiedono su server aziendali. 13 Architettura Software M. Mongiello Ingegneria del Software Avanzata Requisiti • Generalmente, il fornitore dei servizi che mette a disposizione l’infrastruttura cloud colloca un gruppo di server configurati in modo di garantire: – alta affidabilità • l’elevata affidabilità è tipicamente una delle funzionalità che gli utenti richiedono ad un servizio di cloud computing – scalabilità • quando si costruisce un cloud, si deve tenere anche in considerazione la scalabilità. • Questi due aspetti introducono complessità nella progettazione di un sistema cloud, tuttavia: – permettono di ridurre successivamente i problemi derivanti da rotture hardware o problemi software – consentono di aumentare rapidamente la capacità del cloud. 14 Architettura Software M. Mongiello Ingegneria del Software Avanzata Innovazione del cloud • Un’architettura cloud impone un cambiamento nell’infrastruttura: – i dati non sono più residenti in locale sul proprio PC ma sono distribuiti “sulla nuvola” e accessibili da qualsiasi dispositivo • Si tratta di una nuova piattaforma che sostituisce il normale sistema operativo in cui le nuove applicazioni (si parla di software come servizi) non vanno più installate sul proprio computer ma sono accessibili in the Cloud come servizi a pagamento. 15 Architettura Software M. Mongiello Ingegneria del Software Avanzata Cenni storici • L’utilizzo del termine CLOUD è datato primi anni novanta ed è legato all’ambito della comunicazione telefonica, in cui vengono collocati “nella nuvola” i circuiti elettrici che servono alla permutazione del traffico, sia audio che dati, celandoli agli utilizzatori finali che risultano così a conoscenza solo dei dispositivi d’ingresso e d’uscita della comunicazione. • Verso la fine degli anni novanta, con la continua crescita dell’utenza consumer di Internet, si ha una forte spinta innovativa e iniziano a circolare i primi servizi on demand sulla rete, nasce il Software as a Service (SaaS) [11] che per molti anni sarà l’unica forma disponibile di cloud computing. 16 Architettura Software M. Mongiello Ingegneria del Software Avanzata Cenni storici • Uno dei primi casi è da attribuire a Salesforce.com [4] che realizzò un modello di business basato su servizi a richiesta e sulla personalizzazione di tali servizi da parte dell’utenza finale senza avere alcuna competenza specifica, concetto questo che incontrò notevoli pareri favorevoli. • Nel 2005 una svolta sostanziale viene attuata da Amazon con la modernizzazione dei propri datacenter 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 risorse computazionali “on demand”: nascono così gli Amazon Web Services [5]. 17 Architettura Software M. Mongiello Ingegneria del Software Avanzata Cenni storici • Nello stesso anno Microsoft con Hotmail e Google con Gmail si orientano verso il Software as a Service, proponendo un efficiente pannello di amministrazione online della propria casella di posta elettronica, ponendo le basi per il declino dei client come ad esempio Outlook. • A partire dal 2006 Google comincia a focalizzare la propria attenzione verso il cloud, andando a progettare alcuni servizi con lo scopo di poter creare una suite di applicazioni da utilizzare online. 18 Architettura Software M. Mongiello Ingegneria del Software Avanzata Cenni storici • Nel 2008 il termine comincia a diventare popolare anche fra i non addetti ai lavori e persino i Mass Media iniziano a rivolgervi l’attenzione, considerando questo approccio come il futuro del web. • A conferma del cambiamento in atto, nell’estate del 2008, l’autorevole Gartner [6] ha espresso in maniera inequivocabile come le aziende cambino il loro assetto dalla vecchia tipologia in cui posseggono in loco hardware e software, verso un modello innovativo in cui i servizi necessari vengono reperiti da terzi solo su richiesta, pagando in relazione all’effettivo utilizzo 19 Architettura Software M. Mongiello Ingegneria del Software Avanzata Cenni storici • Attualmente il cloud computing non va più considerato come il futuro del Business Information Technology (IT) ma piuttosto come il presente, avendo ormai raggiunto un notevole livello di utilizzo. 20 Architettura Software M. Mongiello Ingegneria del Software Avanzata Vantaggi • Accesso multi-postazione: con una struttura virtuale, non presente in alcun modo sui propri computer, si garantisce l’accessibilità al servizio richiesto da più postazioni differenti; – ad esempio, per controllare la posta aziendale da casa è sufficiente collegarsi al servizio mail via web ed accedere tramite le credenziali di cui si è in possesso. 21 Architettura Software M. Mongiello Ingegneria del Software Avanzata Vantaggi • Facilità di aggiornamento del software: se prima un qualsiasi aggiornamento dell’applicazione andava effettuato su ogni singola macchina in cui era installata, con questa architettura la società fornitrice dovrà semplicemente aggiornare i propri file e ogni utente avrà in tempo reale le modifiche disponibili. – A trarne beneficio sono: • gli utenti finali, che vedono ridurre i costi annuali di assistenza e aggiornamento oltre a non doversi più preoccupare dell’eventuale obsolescenza dell’applicazione utilizzata; • le aziende produttrici di software, che potranno superare le difficoltà di installazione delle proprie applicazioni legate a problemi di portabilità o di obsolescenza delle macchine. • Si torna quindi a parlare di thin client, ossia macchine con limitate capacità, ma in grado di accedere in modo efficace ad Internet per usufruire dei servizi in rete. 22 Architettura Software M. Mongiello Ingegneria del Software Avanzata Vantaggi • Riduzione del costo di acquisto: solitamente un software venduto sotto forma di servizio remoto ha un costo considerevolmente più basso rispetto al caso in cui richiede l’installazione in locale: – Ad esempio, i servizi di storage o di elaborazione risultavano più costosi e con molte difficoltà di reperimento nello scenario precedente al cloud computing. • Il principio in base al quale si paga solo quello che si consuma (pay-per-use) permette alle imprese di non avere un investimento capitale iniziale, ma solamente spese operative. 23 Architettura Software M. Mongiello Ingegneria del Software Avanzata Svantaggi • Affidamento dei dati a terzi: è il principale aspetto limitante del cloud computing, in quanto i vantaggi derivanti dalle tecnologie di cloud computing mettono le aziende nella condizione di affidare i propri dati alle società fornitrici di servizi e questa situazione può portare eventuali rischi ed implicazioni a livello di sicurezza e privacy. • Una possibile soluzione è quella di adottare alcune contromisure lato client: – ad esempio • eseguire una crittografia dei dati prima di riversarli in rete • oppure stipulare precisi accordi di sicurezza con l’azienda fornitrice 24 Architettura Software M. Mongiello Ingegneria del Software Avanzata Svantaggi • Limitazione in caso di assenza di connettività: se la connessione è attiva tutto funziona perfettamente ma, nel caso in cui si verifica un problema dovuto ad esempio all’operatore telefonico, tutti gli utenti del cloud non potrebbero più accedere ai servizi, di conseguenza si dovrà far ricorso a servizi che prevedano alcune funzionalità di base utilizzabili anche in assenza di connessione Internet (come Google Gears [7]) o attivare più contratti di fornitura d’accesso alla rete. • I servizi di cloud computing utilizzano architetture ridondanti e personale qualificato al fine di evitare malfunzionamenti del sistema e di ridurre la probabilità di guasti visibili dall’utente finale. 25 Architettura Software M. Mongiello Ingegneria del Software Avanzata Vantaggi vs Svantaggi • In definitiva, quando ci si trova sul punto di valutare l’utilizzo delle tecnologie cloud per le proprie esigenze, è sempre consigliabile: • valutare il vantaggio (economico e non solo) • valutare i possibili rischi (economici e non solo) – cercare di effettuare la scelta migliore per i propri bisogni considerando i rischi accettabili e i vantaggi ottenibili. 26 Architettura Software M. Mongiello Ingegneria del Software Avanzata Curva del miglioramento tecnologico • Si è osservato che sia il tasso di miglioramento della performance di una tecnologia sia il suo tasso di diffusione nel mercato tendono a seguire l’andamento di una curva a S: – Nella fase iniziale il miglioramento della performance è lento perché i principi di base della tecnologia sono stati compresi solo parzialmente. – In seguito, quando aumenta la conoscenza della tecnologia, il miglioramento comincia ad essere più rapido. – Infine, quando la tecnologia si avvicina al proprio limite naturale, la curva tende ad appiattirsi. • Il cloud computing non ha ancora raggiunto la maturità necessaria per poter essere considerata una tecnologia dominante. 27 Architettura Software M. Mongiello Ingegneria del Software Avanzata 28 Curva del miglioramento tecnologico Architettura Software M. Mongiello Ingegneria del Software Avanzata Stato attuale • Si può quindi classificare il cloud computing in questo modello mediante il pallino nella parte bassa della S molto vicino alla fase iniziale della stessa, in quanto sono oltre 4 anni che insistentemente sta avvenendo una promozione mediatica del fenomeno e numerosi analisti interpellati sul cloud hanno considerato questa architettura come un’innovazione in grado di contribuire all’uscita dalla crisi economica da parte delle aziende. 29 Architettura Software M. Mongiello Ingegneria del Software Avanzata Tecnologie alla base del cloud computing (1/2) • la tecnologia sviluppata per i web e gli application server: – si possono riconoscere in un tale sistema computazionale le diverse funzioni attribuite ad un application server, quali la presentation, la business e la data logic, con la differenza che esse sono ora distribuite su sistemi cooperanti; – le soluzioni innovative per la gestione di grandi moli di dati: • il Cloud Computing utilizza le funzioni tipiche dei motori di ricerca per identificare, indicizzare e memorizzare le informazioni; – Rich Internet Application (RIA) che hanno portato in dote le tecnologie per permettere di accedere ai servizi informatici mediante interfacce utente molto ricche ed accattivanti ottenute attraverso browser; • esse si sono poi arricchite anche con la possibilità di operare anche quando l’utente non è connesso, come proposto, ad esempio, da Google Gears o da Adobe Air; 30 Architettura Software M. Mongiello Ingegneria del Software Avanzata Tecnologie (2/2) – i principi delle Service Oriented Architecture (SOA) che hanno permesso di organizzare le componenti computazionali distribuite, in modo tale da poterle identificare, allocare e ottimizzare per fornire funzionalità agli utenti; – l’autonomic computing che consente di arricchire i server e le funzionalità con la capacità di autogestirsi, in modo da limitare il bisogno di intervento umano nelle aree proprie della gestione (Configuration, Accouting, Performance e Security). 31 Architettura Software M. Mongiello Ingegneria del Software Avanzata Tipologie di cloud Essenzialmente si possono distinguere tre tipologie generali di cloud [8]: • Private cloud: dati e processi sono gestiti dentro l’organizzazione proprietaria senza restrizioni di banda di rete, questioni di sicurezza e requisiti legali che le reti pubbliche e aperte possono comportare. L’azienda proprietaria può decidere se consentire o meno a determinati utenti, che ne fanno richiesta, di accedere e utilizzare la propria infrastruttura; • Public cloud: descrive il Cloud Computing nel tradizionale significato, ossia le risorse sono dinamicamente fornite in modo granulare e selfservice su Internet, via web applications, web services, da un provider terzo che condivide risorse in remoto; • Hybrid cloud: combina i due modelli di cloud precedentemente illustrati, ossia l’ambiente è composto di provider multipli interni ed esterni. 32 Architettura Software M. Mongiello Ingegneria del Software Avanzata Politiche e tecniche gestionali • Identity Management, per la gestione dell’identità e dei profili d’utente, ad esempio mediante l’adozione di soluzioni quali OpenId, Liberty Alliance; • Accounting delle risorse utilizzate, anche considerando prestazioni per gestire micropagamenti: un esempio è rappresentato da Amazon per l’accesso al Simple DB; • Sicurezza della trasmissione e accesso ai dati, come meccanismi di autenticazione sicura e meccanismi di crittografia. 33 Architettura Software M. Mongiello Corso di Laurea Magistrale in Ingegneria Informatica Corso di Ingegneria del Software Avanzata A. A. 2013 - 2014 Categorie di servizi 34 Architettura Software M. Mongiello Ingegneria del Software Avanzata 35 Panorama Cloud Architettura Software M. Mongiello Ingegneria del Software Avanzata Categorie di servizi • IaaS (Infrastructure as a Service ) • PaaS (Platform as a Service ) • SaaS (Software as a Service) 36 Architettura Software M. Mongiello Ingegneria del Software Avanzata 37 Categorie di servizi Architettura Software M. Mongiello Ingegneria del Software Avanzata IaaS • Infrastructure as a Service (IaaS): • in questo caso la nuvola nasconde un’intera infrastruttura tecnologica che potrà essere utilizzata dall’utente per i propri scopi; • in particolare, vengono messe a disposizione dell’utente, in forma di servizi e in modo dinamico (secondo le necessità), risorse come schede LAN, CPU, memoria. – Il modello più comune è il caso di un data center il cui accesso viene permesso anche all’utenza esterna per poterne sfruttare capacità di calcolo o di immagazzinamento di grosse quantità di dati. 38 Architettura Software M. Mongiello Ingegneria del Software Avanzata PaaS • Platform as a Service (PaaS): – questa categoria racchiude tutti quei servizi che occorrono in fase di sviluppo di un’applicazione o di un servizio web: • si utilizza in remoto una piattaforma software che può essere costituita da diversi programmi, librerie, etc. • se prima tutto ciò era disponibile previo download ed installazione nella propria macchina di determinati software, ora tutto questo è disponibile sottoforma di servizi accessibili in remoto, permettendo in alcuni casi notevole risparmio di risorse economiche. 39 Architettura Software M. Mongiello Ingegneria del Software Avanzata SaaS • Software as a Service (SaaS): • riguarda la fornitura di un software condiviso tra tutti gli utenti (a meno di configurazione di funzionalità opzionali) ed accessibile attraverso un Web browser. • tramite l’ausilio di questa tecnologia sta avvenendo un lento migrare dai software tradizionali che si installano localmente nelle nostre macchine, ad applicazioni web, o meglio servizi, accessibili tramite un semplice browser che sta di fatto diventando l’equivalente del terminale anni ‘80. – Il servizio applicativo può essere fruito in una duplice maniera: • in modalità singola istanza (architettura multi-tenant), in cui appunto una sola istanza dell’applicativo gestisce più clienti, • in modalità multi istanza (architettura single-tenant), in cui ogni utente (tramite tecnica di virtualizzazione) viene servito mediante una specifica istanza applicativa. 40 Architettura Software M. Mongiello Ingegneria del Software Avanzata 41 Single / multi tenant Architettura Software M. Mongiello Ingegneria del Software Avanzata esempi • Esempi di servizi che sono già disponibili sul mercato, secondo la modalità SaaS, sono i servizi applicativi di base come CRM (Customer Relationship Management), back-up dei dati centralizzati, mail e archiviazione. • Passando dal generale allo specifico, è possibile dividere il SaaS in due categorie principali: – Servizi line of business, rivolti alle aziende di tutte le dimensioni che costituiscono spesso soluzioni personalizzate per assistere processi aziendali come contabilità o relazioni con i clienti. Questi servizi vengono solitamente venduti ai clienti sotto forma di abbonamento. – Servizi consumer, rivolti al pubblico, vengono talvolta venduti sotto forma di abbonamento, altre volte vengono invece forniti gratuitamente e finanziati tramite pubblicità. 42 Architettura Software M. Mongiello Ingegneria del Software Avanzata Costi e tariffazione • Il costo del servizio dipende dal livello di utilizzo; la modalità di pagamento più diffusa è legata al numero di utenti abilitati all’accesso, con eventuali altri costi che dipendono da risorse aggiuntive o da eventuali funzioni abilitate. • Questo modello di tariffazione è particolarmente vantaggioso per le aziende in forte crescita o in contesti ad elevata fluttuazione della domanda, e in alcuni casi la tariffazione è legata al tempo di utilizzo, come ad esempio nelle applicazioni per il web-conferencing. • Sono spesso previsti anche costi di attivazione. 43 Architettura Software M. Mongiello Ingegneria del Software Avanzata Costi e tariffazione • Per le applicazioni che necessitano di significative attività di setup, i migliori provider definiscono con chiarezza le tariffe per i servizi di supporto specificando in modo chiaro quali sono queste attività e la loro durata. • Oltre alle attività di setup e configurazione, i servizi di attivazione – da pagare one-shot all’attivazione – includono anche il caricamento iniziale dei dati. • I costi di setup sono ovviamente superiori per quelle particolari applicazioni che richiedono anche la disponibilità di ambienti di sviluppo e test. 44 Architettura Software M. Mongiello Ingegneria del Software Avanzata Ripartizione del budget • In un’organizzazione tipica il budget destinato al settore IT (Information Technology) viene speso in tre aree principali: – Software - Programmi e dati che l’organizzazione utilizza per le elaborazioni informatiche. – Hardware - Computer desktop, server, componenti di rete e dispositivi mobili che consentono l’accesso al software. – Servizi professionali - Persone e organizzazioni che garantiscono l’efficienza del sistema, ovvero personale di supporto tecnico, consulenti e fornitori. 45 Architettura Software M. Mongiello Ingegneria del Software Avanzata Budget • Di queste tre aree, quella del software è la più direttamente coinvolta nella gestione delle informazioni, obiettivo finale di ogni organizzazione IT. • L’hardware e i servizi professionali, per quanto componenti vitali dell’ambiente IT, possono essere considerati mezzi per il conseguimento di un fine, in quanto consentono al software di produrre il risultato finale desiderato, ovvero la gestione efficiente delle informazioni. • In altri termini, qualsiasi organizzazione acquisirebbe volentieri funzionalità software aggiuntive che non richiedano l’acquisto di nuovo hardware, mentre nessuna acquisterebbe nuovo hardware senza che vi sia l’esigenza di adottare un nuovo software. • In un ambiente IT in cui viene utilizzato software eseguito in sede, la maggior parte del budget viene solitamente speso per l’hardware e per i servizi professionali, mentre solo una parte marginale viene investita nel software (come mostrato in figura ). 46 Architettura Software M. Mongiello Ingegneria del Software Avanzata Budget • Budget tipico di un ambiente IT basato su software sviluppato internamente 47 Architettura Software M. Mongiello Ingegneria del Software Avanzata Budget • In questo modello il budget destinato al software viene speso principalmente per copie con licenza di software aziendale confezionato e di software line of business personalizzato. • Il budget per l’hardware viene speso per i computer portatili e desktop da fornire agli utenti, per i server che contengono dati e applicazioni e per la componentistica di rete. Il budget per i servizi professionali viene destinato al personale di supporto, affinché provveda alla distribuzione e al supporto del software e dell’hardware, nonché ai consulenti e alle risorse di sviluppo che facilitano la progettazione e la creazione di sistemi personalizzati. 48 Architettura Software M. Mongiello Ingegneria del Software Avanzata Budget in un modello basato su Saas • In un’organizzazione basata principalmente sul modello SaaS, la ripartizione del budget IT si presenta in modo molto diverso (come riportato in figura). 49 Architettura Software M. Mongiello Ingegneria del Software Avanzata Ripartizione del budget • In questo modello il fornitore SaaS ospita le applicazioni critiche e i relativi dati in server centrali dislocati presso la propria sede e supporta l’hardware e il software con personale dedicato; in tal modo l’organizzazione del cliente viene sollevata dalla responsabilità di supportare il software ospitato e di acquistare e gestire l’hardware relativo. 50 Architettura Software M. Mongiello Ingegneria del Software Avanzata Osservazioni • Inoltre le applicazioni distribuite via web o tramite Smart Client gravano molto meno sui computer desktop rispetto a quanto avviene con le applicazioni tradizionali installate localmente, e in tal modo il cliente può estendere in modo significativo il ciclo di vita della tecnologia desktop. 51 Architettura Software M. Mongiello Ingegneria del Software Avanzata Vantaggi nell’uso di un modello Saas vs ASP • Il risultato finale è che una parte molto più grande del budget IT può essere destinata al software, in genere sotto forma di quota di sottoscrizione ai provider SaaS. • Usualmente questi servizi utilizzano un’interfaccia con Web Services che consente l’interoperabilità con altri applicativi seguendo i principi SOA (Service Oriented Architecture). • E’ opportuno precisare le differenze tra il SaaS e gli ASP (Application Service Provider), un modello in base al quale si sosteneva che qualsiasi software potesse essere in realtà trasformato in un servizio, così da permetterne la fruizione da remoto evitando tutti gli inconvenienti connessi alla sua gestione tradizionale. – In questo modello, che ha trovato maggiore diffusione con i Web browser, nella maggior parte dei casi, il provider ha semplicemente proposto delle applicazioni tradizionali centralizzandole presso la propria infrastruttura e sollevando il cliente dalle operazioni di manutenzione. – Benché questo modello abbia alleggerito il cliente da tale responsabilità, non ha comunque eliminato il costo iniziale di progetto ed i lunghi tempi di attivazione. 52 Architettura Software M. Mongiello Ingegneria del Software Avanzata Saas vs ASP • Il cliente ha comunque dovuto acquistare licenze perpetue, pagare il costo dell’hosting e siglare un adeguato accordo di manutenzione; • Il provider deve continuare a gestire differenti versioni del software, in modo da andare incontro alle specifiche esigenze della singola azienda e ciò si traduce comunque in costi e potenziali criticità per il cliente. • Questi sono i principali motivi del limitato successo del modello ASP. 53 Architettura Software M. Mongiello Ingegneria del Software Avanzata Svantaggi del Saas • Di contro, il modello SaaS abilita i provider a sviluppare e gestire le sue soluzioni in modo più economico e scalabile per soddisfare le esigenze dei propri clienti e consente al fornitore di raggiungere elevati livelli di affidabilità gestendo una versione comune e consolidata del software in modo più efficiente. • In questo caso si sposta dal cliente (che può accedere con facilità alle applicazioni senza dover fare grandi investimenti in licenze SW e HW) al fornitore l’onere dell’installazione e la responsabilità di mantenere l’applicazione efficiente ed in sicurezza. • Dal punto di vista dell’architettura, le applicazioni SaaS possono essere rappresentate come in figura successiva in cui sono riportati i componenti essenziali. 54 Architettura Software M. Mongiello Ingegneria del Software Avanzata Architettura del Saas • Componenti fondamentali di un’architettura Saas sono: – Gli Smart Client – il livello di presentazione • possono richiamare delle interfacce esposte dai servizi di elaborazione che avviano un flusso di lavoro sincrono o una transazione che richiamerà altri servizi aziendali che interagiscono con i rispettivi archivi dati per leggere e scrivere i dati aziendali. – I servizi di protezione sono responsabili del controllo degli accessi ai servizi software per gli utenti finali. – I servizi di metadati costituiscono per gli utenti il mezzo principale per personalizzare e configurare l’applicazione in base alle proprie esigenze. • I servizi e gli Smart Client interagiscono quindi con i servizi di metadati per recuperare queste informazioni che descrivono le configurazioni di ogni utente. 55 Architettura Software M. Mongiello Ingegneria del Software Avanzata 56 Architettura del Saas Architettura Software M. Mongiello Ingegneria del Software Avanzata Ulteriore categorizzazione • Questa classificazione dei servizi cloud non è univoca e standardizzata, ma risulta la più comunemente definita; infatti si fa talvolta riferimento ad altri livelli che non rientrano nella gerarchia precedente ma che si focalizzano su alcuni specifici aspetti del servizio offerto. – AaaS (Application as a Service): ci si riferisce alla fornitura di un’applicazione standalone come servizio del cloud – BPaaS (Business Process as a Service): un modello per la condivisione di processi di business nell’ambito del cloud computing (un esempio di BPaaS è il test del software che è un processo di business molto importante nel ciclo di vita dello sviluppo del software) – HaaS (Hardware as a Service) fa riferimento alla condivisione di hardware o anche di un datacenter in forma di servizio cui abbonarsi che permette alle imprese di costruire e gestire questi datacenter o, in generale, di fruire di risorse hardware con notevoli vantaggi per le imprese stesse. 57 Architettura Software M. Mongiello Ingegneria del Software Avanzata IaaS-providers • Amazon Web Services – Il principale provider di servizi IaaS è Amazon, nota come azienda di e-business, • costituisce un riferimento per il cloud computing all’interno del quale offre servizi: – IaaS integrando nell’ambito degli AWS (Amazon Web Services) – piattaforma di servizi web interamente basata su una infrastruttura di cloud computing, – tre componenti (servizi sempre erogati in modalità on-demand) disponibili via Web Services: 58 Architettura Software M. Mongiello Ingegneria del Software Avanzata Amazon IaaS provider • S3 (Simple Storage Service), relativa alla virtualizzazione di risorse di storage • EC2 (Elastic Compute Cloud), relativa alla virtualizzazione di risorse di elaborazione • SQS (Simple Queue Service), relativa alla virtualizzazione di risorse di comunicazione 59 Architettura Software M. Mongiello Ingegneria del Software Avanzata Amazon S3 • Il servizio S3 [12], lanciato negli USA nel marzo 2006, permette di archiviare un qualsiasi numero di file con il solo limite relativo alla loro dimensione che deve essere compresa tra 1 byte e 5 GigaByte; il costo è di 15 centesimi di dollaro per Giga memorizzato al mese per gli utenti statunitensi, 10 centesimi di euro per gli utenti europei. • Questo servizio è utilizzato non solo da privati ma anche da aziende di varia entità, come da grandi aziende come ad esempio il New York Times che utilizza S3 per il proprio archivio storico. • I file archiviati finiscono nella stessa infrastruttura utilizzata da Amazon (che gestisce questo servizio tramite dei server remoti) per il proprio core business. • Occorre registrare il proprio account sul portale “Amazon Web Services Store” per utilizzare questo servizio e, specificando i dati della propria carta di credito, si può realizzare il proprio contenitore di oggetti (bucket). 60 Architettura Software M. Mongiello Ingegneria del Software Avanzata Amazon EC2 • Il servizio EC2 [13], lanciato nell’agosto 2006, offre la propria infrastruttura (si condivide la capacità di elaborazione) per ospitare le applicazioni e adattare la propria capacità di elaborazione on demand in base alle proprie esigenze; • il costo è sempre molto basso, da 10 a 80 centesimi di dollaro all’ora. • Il vantaggio principale di questo servizio è che l’utente può, a seconda delle esigenze, variare le proprie richieste e ciò è importante per ridurre i costi, visto che vengono addebitati sulla carta di credito solo i minuti effettivamente utilizzati ed il relativo traffico web. 61 Architettura Software M. Mongiello Ingegneria del Software Avanzata SQS • L’utente inizialmente prepara una macchina virtuale Xen [14] contenente l’applicazione di interesse ed il relativo ambiente di esecuzione; in particolare, all’utente sono assegnate una o più istanze AMI (Amazon Machine Image), immagini virtuali che possono ospitare uno dei seguenti sistemi operativi preconfigurati: Red Hat Enterprise Linux, Windows Server 2003, Oracle Linux, OpenSolaris, openSuse, Ubuntu, Fedora, Gentoo e Debian. • La macchina virtuale viene trasferita sull’infrastruttura S3 dove viene allocata ed eseguita su una risorsa fisica; mediante dei comandi di controllo, l’utente può avviare, monitorare, e terminare la macchina virtuale, e le macchine virtuali possono comunicare tra loro mediante il servizio SQS [15], un servizio affidabile e altamente scalabile che ospita le code per memorizzare dei messaggi mentre questi viaggiano tra i computer. 62 Architettura Software M. Mongiello Ingegneria del Software Avanzata EC2 • EC2 mette a disposizione software come i database MYSQL Enterprise (Oracle e Mysql non richiedono supplementi di prezzo), Microsoft SQL Server Standard 2005 e IBM DB2. • E’ opportuno, inoltre, specificare che EC2 fornisce una serie predefinita di tipologie di macchine virtuali che differiscono tra loro nella capacità erogata. 63 Architettura Software M. Mongiello Ingegneria del Software Avanzata Servizi Amazon • Amazon può vantare diversi casi di successo di utilizzo dei propri servizi: – Ad esempio • Facebook, per l’accesso ai dati storici, • NASDAQ, sono applicativi che vengono ospitati nella sua infrastruttura. • Un esempio efficace di utilizzo estemporaneo dei servizi Amazon è invece il caso del Washington Post, il più diffuso quotidiano di Washington che ha utilizzato i servizi di Amazon EC2 per rendere disponibili al pubblico oltre 17 mila pagine di documenti pdf, che riportavano le attività di Hillary Clinton negli anni della presidenza del marito dal 1993 al 2001. 64 Architettura Software M. Mongiello Ingegneria del Software Avanzata Osservazioni • Per realizzare questa elaborazione, sono state utilizzate circa 200 virtual machine per circa 24 ore per un totale di circa 1400 ore (tempo di utilizzo delle virtual machine), con una spesa totale di soli 144,62 dollari. • Poiché il middleware di Amazon EC2 non è disponibile, si è sviluppata (ad opera della University of California) un’alternativa denominata Eucalyptus [16] (Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems), – un’infrastruttura open-source per realizzare servizi di cloud computing usando cluster di macchine o delle normali workstation, che presenta un’interfaccia utente identica a EC2 ma un’implementazione differente e in cui la scelta della risorsa fisica su cui allocare la macchina virtuale è lasciata all’utente. 65 Architettura Software M. Mongiello Ingegneria del Software Avanzata Alternative ad Amazon • Amazon è certamente il provider di servizi IaaS più noto, ma non è l’unico ad offrire questi servizi; anzi, altri provider come GoGrid [17] (che mette a disposizione macchine virtuali di tipo Linux e Windows, in cui di default sono già preinstallati programmi come Java, Apache, PHP, Microsoft SQL Server, e MySQL) si stanno invece proponendo sul mercato con prezzi e funzionalità competitive rispetto ad Amazon offrendo, ad esempio, i servizi di load balancing e clustering gratuitamente. Questi provider sono in grado di offrire servizi infrastrutturali, memorizzazione di dati, gestione di applicativi web ed email hosting. • Un altro importante provider di servizi IaaS è Azure [18] della Microsoft che è stato inizialmente sviluppato come PaaS ma che ha recentemente consentito anche un utilizzo di tipo IaaS dove le risorse hardware vengono rese disponibili agli utenti in modalità ondemand con la possibilità di installare servizi e sistemi operativi secondo la propria volontà. 66 Architettura Software M. Mongiello Ingegneria del Software Avanzata PaaS-providers • Google App Engine • Anche un colosso come Google ha dato il suo contributo allo sviluppo delle tecnologie di cloud computing attraverso Google App Engine [19], lanciato nell’Aprile del 2008, che costituisce un servizio di tipo PaaS che permette agli sviluppatori di scrivere applicazioni e di ospitarle sui server di Google a bassi costi: costa tra i 10 e i 12 centesimi di dollaro per ogni ora di utilizzo di CPU e tra i 15 e i 18 centesimi di dollaro per GigaByte di storage. Occorre precisare che si tratta di una versione beta, che per il momento esiste un tetto massimo di 500 MegaByte e che ci sono limitazioni sui linguaggi di programmazione utilizzabili (Google App Engine mette a disposizione un ambiente Java e un ambiente Python per creare applicazioni web). Il servizio è facilmente integrabile con le applicazioni di Google e, rispetto ad Amazon, appare più vicino ad un ambiente di sviluppo software: le applicazioni App Engine sono facili da costruire, mantenere, scalare, supportando anche oscillazioni di carico (i propri dati o applicativi saranno custoditi e mantenuti nell’enorme infrastruttura informatica di Google). • • 67 Architettura Software M. Mongiello Ingegneria del Software Avanzata PaaS provider • Le Google Apps hanno 10 milioni di utenti e più di mezzo milione di aziende clienti, ma i clienti delle Google Apps sono soprattutto istituzioni pubbliche, piccole imprese e liberi professionisti, mentre non sono per ora coinvolte le grandi aziende. Per utilizzare questo servizio è opportuno conoscere alcune importanti tecnologie come HTTP, CGI, HTML, CSS e Javascript e avere un account gmail per potersi mettere in coda sull’URL http://appengine.google.com da cui si avviano le procedure per sviluppare le web application. • In pratica uno sviluppatore ha a disposizione un ambiente di sviluppo completamente integrato per costruire le proprie applicazioni e, una volta codificato lo script e uploadato tutto con il suo account, si occuperà Google dei suoi dati, dello storage, del monitoraggio. • L’aspetto saliente di questo servizio PaaS è, in definitiva, quello di fornire ciò che serve nel caso in cui non si dispone di un’infrastruttura per ospitare le proprie applicazioni web facendo riferimento a risorse hardware e software di Google. 68 Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • 69 Azure Platform La piattaforma Azure [18] [20] della Microsoft è stata ideata per poter essere impiegata in un sistema cloud sfruttando un sistema operativo specializzato, denominato Windows Azure, che viene eseguito nei cluster dei datacenter della Microsoft. Le sue mansioni fondamentali sono l’assegnazione delle risorse (o un loro sottoinsieme) ad applicativi presenti al suo interno e la gestione della potenza di calcolo e della capacità d’immagazzinamento dei dati. Windows Azure supporta inoltre diffusi standard e protocolli, tra cui SOAP, REST, XML e PHP. Questa piattaforma permette, in accordo con la definizione di PaaS, di accedere ai servizi “nascondendo” le risorse fisiche in modo da non dover conoscere dettagli come le directory sul disco, i nomi dei server, i percorsi di rete, in definitiva non è richiesto sapere dove e come sono memorizzati i dati o come sono gestite le risorse. Azure evita la forte dipendenza dai vincoli hardware consentendo agli sviluppatori di creare rapidamente e facilmente nuove applicazioni per il cloud usando le loro abilità con i prodotti Microsoft, impiegando gli ambienti di sviluppo di Visual Studio o .NET Framework. Oltre al codice di tipo .NET, Azure, nel prossimo futuro, supporterà diversi linguaggi di programmazione come Php, Perl, Python, Java. Architettura Software M. Mongiello Ingegneria del Software Avanzata Azure Service platform • L’Azure Services Platform, quindi, lascia ai suoi sviluppatori la più completa libertà nella creazione delle applicazioni, limitandosi ad offrire solamente i componenti fondamentali, come potenza di calcolo e capacità di memorizzazione. Offerta di Microsoft per il Cloud Computing 70 Architettura Software M. Mongiello Ingegneria del Software Avanzata Azure • Godendo di flessibilità e di interoperabilità, la piattaforma Azure può essere usata per progettare nuove applicazioni cloud o migliorare quelle “vecchie” equipaggiandole con capacità tipiche dell’infrastruttura cloud. • Si potranno così costruire web application che verranno integrate direttamente, tramite il proprio account, nell’infrastruttura di Windows Azure; • inoltre, tramite l’apposita interfaccia web, è possibile configurare le risorse di elaborazione che si vogliono assegnare all’applicazione che funzionerà online nei data center di Windows Azure. 71 Architettura Software M. Mongiello Ingegneria del Software Avanzata Azure service platform • Azure Services Platform è caratterizzata da una pluralità di applicativi e di servizi realizzati per eseguire specifici processi; in particolare, si possono individuare i seguenti principali componenti: • Live Services. Fornisce l’accesso ai dati e a varie applicazioni permettendo anche la sincronizzazione dei dati tra computer desktop e dispositivi, la ricerca e il download di applicazioni e molto altro ancora. • Microsoft .NET Services. Offre infrastrutture distribuite sia per i servizi di tipo cloud-based e sia per le applicazioni locali. • Microsoft SQL Services. Fornisce servizi di memorizzazione dati basati su SQL Server. • Quella della Microsoft, infine, è un’architettura cloud aperta (possibilità di personalizzazione della rete) che fornisce agli sviluppatori la capacità di scegliere il tipo di sistema su cui far girare le proprie applicazioni web, come ad esempio, sulla propria macchina, su più PC, su server o su soluzioni ibride realizzate per sfruttare il meglio delle varie realtà. 72 Architettura Software M. Mongiello Ingegneria del Software Avanzata Piattaforma Force.com • Force.com [21] è un set integrato di strumenti e servizi applicativi che gli ISV (Independent Software Vendor) e i reparti IT aziendali possono utilizzare per sviluppare applicazioni aziendali e gestirle sulla stessa infrastruttura che fornisce le applicazioni Salesforce CRM (Force.com è la piattaforma di cloud computing a livello enterprise di salesforce.com) [4]. • Attualmente sulla piattaforma Force.com (che fornisce alle organizzazioni IT un approccio radicalmente unificato agli innumerevoli problemi aziendali) sono gestite oltre 80.000 applicazioni aziendali. In particolare, Force.com include un database relazionale, un framework di sicurezza, delle API (Application Programming Interface), dei servizi web, un’interfaccia utente e altri potenti servizi che aiutano la realizzazione delle applicazioni aziendali più complesse. • Attualmente, più di 63.200 società, tra cui alcune delle organizzazioni più attente alla sicurezza come Symantec [22], utilizzano Force.com per eseguire le proprie applicazioni di business. 73 Architettura Software M. Mongiello Ingegneria del Software Avanzata Force.com • Force.com offre un modello più veloce ed economico per lo sviluppo e la distribuzione di applicazioni, ed è caratterizzato dai seguenti aspetti. - Nessun software o hardware: è sufficiente una connessione a Internet per poter accedere tramite Force.com a una potente piattaforma per applicazioni aziendali che elimina la necessità di acquistare, installare e configurare hardware e software. - Pagamento in base all'utilizzo: la piattaforma e le applicazioni eseguite (con Force.com) su di essa sono distribuite come servizio su abbonamento tramite Internet. - Risultati veloci: grazie alle possibilità offerte dalla piattaforma Force.com, le organizzazioni non devono più affrontare dei costi legati al funzionamento dell’infrastruttura e possono iniziare a creare nuove applicazioni che apportano un valore tangibile all’azienda; con costi di avviamento pari a zero, la piattaforma Force.com riduce i tempi di sviluppo e i costi operativi in modo drastico. 74 Architettura Software M. Mongiello Ingegneria del Software Avanzata SaaS-providers • Salesforce.com • Leader nelle soluzioni di CRM (che si riferisce all’insieme delle attività che un’azienda svolge per creare ed incrementare i rapporti con i propri clienti) on demand, Salesforce.com [4] accresce il successo delle aziende mettendo a loro disposizione la tecnologia più avanzata e rendendo più semplice la condivisione e la gestione delle informazioni aziendali. Dal 1999, anno della sua realizzazione Salesforce.com ha continuato a migliorare la propria offerta di soluzioni on demand e fornisce un’internazionalizzazione completa con traduzioni immediate in 12 lingue e supporto multi-valuta. In pratica Salesforce.com, azienda specializzata nel cloud computing a livello enterprise, attraverso la soluzione Salesforce CRM, ridefinisce il concetto di CRM presentando un innovativo approccio al cloud computing. Le soluzioni CRM di Salesforce.com ottimizzano e automatizzano i processi aziendali, offrono al personale aziendale un quadro chiaro e completo dei clienti, e aiutano tutto il personale a rimanere concentrato da un lato sull’acquisizione di nuovi clienti e dall’altro sul mantenimento della soddisfazione dei clienti esistenti. • • 75 Architettura Software M. Mongiello Ingegneria del Software Avanzata Saas Provider • La suite di applicazioni SaaS, disponibile all’indirizzo http://www.salesforce.com/it/products/, ha rivoluzionato le modalità con cui i clienti gestiscono e condividono le informazioni aziendali su Internet. L’idea di fondo è quella che le applicazioni Salesforce.com non vengono gestite su un’infrastruttura d’utente molto costosa e che necessita di grande manutenzione, bensì presso i centri di calcolo del gestore; il software viene fatto funzionare tramite qualsiasi Web browser e quindi può essere utilizzato facilmente come per il sistema di ordinazione di libri in Internet. • Le soluzioni on demand di Salesforce.com generano un livello di successo dei clienti senza precedenti, il tutto “senza software” e ciò implica vantaggi come l’accessibilità al sistema sempre e ovunque, aggiornamenti automatici gratuiti, nessun costo occulto e implementazione, personalizzazione e integrazione semplici e immediate. In aggiunta al suo potente e intuitivo prodotto di CRM, Salesforce.com offre un’architettura completa che consente a un’azienda di estendere a tutti i suoi settori i vantaggi delle soluzioni on demand. 76 Architettura Software M. Mongiello Ingegneria del Software Avanzata Saas Provider • L’innovativa piattaforma on demand di Salesforce.com AppExchange [23] permette a clienti e partner di creare nuove potenti applicazioni in modo semplice e veloce, personalizzare e integrare la suite Salesforce per soddisfare le loro specifiche esigenze di business, distribuire e vendere applicazioni su www.appexchange.com. Il marketplace AppExchange offre oltre 800 applicazioni e componenti preintegrati, in aree che vanno dalla gestione delle spese agli acquisti, tutti pronti per l’installazione all’interno di Salesforce CRM e creati dalla dinamica community in espansione di clienti, sviluppatori e partner di Salesforce.com. • In definitiva, l’usabilità di Salesforce ne ha facilitato l’adozione da parte degli utenti e ha rafforzato la collaborazione a livello mondiale aumentando la visibilità delle opportunità di vendita e consentendo di gestire meglio le operazioni strategiche e di concluderle con maggior efficienza. 77 Architettura Software M. Mongiello Ingegneria del Software Avanzata Salesforce • Salesforce ha permesso la semplificazione del ciclo delle vendite e la personalizzazione del sistema di CRM con rapidità per adattarlo alle variazioni delle proprie esigenze, gestendo ogni singolo aspetto del ciclo di vita del cliente e fornendo una vasta serie di strumenti di personalizzazione e integrazione per consentire alle organizzazioni di creare la soluzione più adatta alle specifiche esigenze aziendali. Senza software o hardware da installare o aggiornare, non occorre attendere settimane per essere pienamente operativi: l’operatività immediata in pochissimo tempo avrà un impatto positivo sulla propria azienda. 78 Architettura Software M. Mongiello Ingegneria del Software Avanzata Google Apps • Google Apps • Google supporta anche Google Apps [24], la suite web-based di applicazioni di messaggistica e collaborazione che si pone come obiettivi la sicurezza e l’affidabilità; in pratica Google Apps è la piattaforma di comunicazione e collaborazione realizzata e sviluppata da Google per organizzazioni di ogni tipo, dimensione e settore. • Tutti i servizi offerti (posta elettronica, calendario, documenti...) sono ospitati dai datacenter di Google sparsi per il mondo e sono erogati in modalità SaaS; di conseguenza, è possibile definire nuovi progetti strategici per il proprio business, senza trascurare il risparmio economico in termini di costi per licenze, hardware e altro ancora poichè non è più richiesta l’installazione di alcun componente hardware o software. Inoltre tutti i servizi di Google Apps risultano intuitivi e facili da usare presentando molte funzioni utilizzate nei sistemi di comunicazione più diffusi e garantendo in questo modo un elevato grado di adattabilità. 79 Architettura Software M. Mongiello Ingegneria del Software Avanzata Google • Rilevanti aspetti da sottolineare sono la ridondanza dei dati su numerosi server in diversi datacenter (maggiore affidabilità) e l’utilizzo della piattaforma di Google come sistema unico o integrato, realizzando così una convivenza di infrastrutture, temporanea o duratura. • In dettaglio, nel pacchetto Google Apps sono fornite le seguenti funzionalità. 80 Architettura Software M. Mongiello Ingegneria del Software Avanzata Google Apps • Il servizio webmail Gmail con 25 GigaByte di capacità per la mailbox di ciascun utente (200 volte la capienza della tipica casella di posta aziendale), largamente affidabile e utilizzato da decine di milioni di utenti nel mondo. Dispone di interfaccia web intuitiva, motore di ricerca email più potente del mercato, livello di protezione virus e spam elevatissimo. – L’applicazione per la gestione condivisa delle agende Google Calendar. – Google Sites rappresenta un modo rapido e gratuito per creare e condividere pagine web. – Google Talk è un servizio di Voice over IP e di messaggistica istantanea offerto da Google. – Google Docs che consente ai team di lavorare insieme e in contemporanea su documenti, presentazioni e fogli elettronici senza necessità di scambio via email delle varie versioni. – Google Video for business per la condivisione semplice e rapida di video. • Gmail, Google Docs e Google Calendar sono utilizzabili anche in modalità offline (come gli applicativi tradizionali) con allineamento dei dati e invio/ricezione delle email una volta ripristinata la connessione. 81 Architettura Software M. Mongiello Ingegneria del Software Avanzata Altri SaaS-providers • Oltre ai due provider di servizi SaaS appena esaminati che sono senz’altro quelli più noti, ve ne sono anche altri che costituiscono comunque valide alternative. • Uno di questi è Zoho [25], una company americana con una fitta rete di partner commerciali sparsi per il mondo, che propone un CRM alternativo a quello di Salesforce: la piattaforma ZOHO si pone all’utente finale come un marketplace di applicazioni dove è possibile acquistare una serie di programmi, memorizzare e condividere documenti e utilizzare applicazioni business-oriented come il CRM. L’utente può scegliere quale applicazione utilizzare e semplicemente iniziare a fruirne previa registrazione. 82 Architettura Software M. Mongiello Ingegneria del Software Avanzata Zoho • Presente in Italia con due aziende distribuite nel nord (Elatos [26] e Sinergest [27]), Zoho distribuisce, all’interno delle sue business application, un proprio CRM on demand in tecnologia SaaS che presenta interessanti caratteristiche soprattutto se analizzate in un contesto di PMI (piccole e medie imprese). • La prima che salta all’occhio è senza dubbio il prezzo: in Italia, ZOHO CRM è distribuito gratis fino a 3 utenti, dal quarto in poi si pagano 12 € per ogni utente e per ogni mese di utilizzo, sul mercato americano viene distribuito secondo la stessa filosofia ovvero gratis fino a 3 utenti, 12 $ a partire dal quarto per la Professional Edition, 25 $ per la Enterprise. 83 Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • 84 Netsuite Tra le alternative, riveste un certo interesse anche Netsuite [28] che costituisce un sistema proprietario utile per le aziende che desiderano vendere e commercializzare oggetti fisici e dei servizi, offrendo Suitescriptanche pacchetti di estensione per gli utenti che ricercano scelte personalizzate. Netsuite ha anche diversi prodotti disponibili come ad esempioNetsuite One World Netsuite One World, which connects businesses to their overseas subsidiaries, and, sistema (strutturato in diverse filiali multinazionali) progettato per gestire un business di media grandezza, e Netsuite CRM+Netsuite CRM +,which is especially useful to any user in the service industry, as it offers added functionality for customer management and interaction. che è particolarmente utile per tutti gli utenti nel settore dei servizi, in quanto offre diverse funzionalità per la gestione dei clienti. La piattaforma di Netsuite, denominata SuiteCloud, raggruppa dei prodotti, tool di sviluppo e servizi progettati per aiutare i clienti e gli sviluppatori software a trarre vantaggio dai benefici del cloud computing. Con SuiteCloud le aziende di medio livello possono eseguire le loro operazioni di core business nel cloud, consentendo di ottimizzare le operazioni e di ridurre i costi. Architettura Software M. Mongiello Ingegneria del Software Avanzata Hiveon • Ultimo caso esaminato è quello di Hiveon [29] che riveste un ruolo importante nell’ambito dello sviluppo di applicativi web: si tratta di un caso particolare di SaaS, un CMS (Content Management System) avanzato proposto come software on demand che permette la creazione di siti web tramite l’ausilio di un pannello remoto. • Si ha, quindi, a disposizione un CMS multiutente e multisito, consolidato e testato che nella sua versione base raccoglie tutte le funzioni necessarie per realizzare un sito web dotato di servizi adatti ad ogni tipo di settore. Vengono aggiunti continuamente moduli utili e importanti come blog, newsletter, news e moduli per gestire un’attività di e-commerce. • La gestione di un sito con Hiveon aggiunge valore alla propria attività grazie a nuove estensioni che semplificano di gran lunga il lavoro manuale: dalla generazione di pagine di contenuto alla gestione di layout personalizzati alla creazione di tutti i servizi online necessari alla propria azienda. 85 Architettura Software M. Mongiello Ingegneria del Software Avanzata • • 86 Ulteriori scenari di servizio abilitati Molti ritengono che la rivoluzione del cloud computing si attuerà mediante il pressoché completo trasferimento di applicazioni e dati nel sistema cloud, così come imposto dal modello SaaS. Tuttavia c’è chi sostiene che un modello ibrido [30] possa risultare più efficace: le applicazioni ed i dati “in the cloud” si affiancheranno, integrandosi, con applicazioni in esecuzione sui client e sui server interni all’azienda, realizzando il modello Software-plus-Service (S+S). Si tratta di un modello che potrebbe consentire una maggiore flessibilità nella scelta del device di accesso alle applicazioni (PC, telefono), del tipo di connessione, del luogo dove eseguire una certa logica di servizio “lato server” (in-the-cloud/on-premise), e può tenere conto degli sviluppi della tecnologia dei dispositivi dell’utente che, nel prossimo futuro, segnerà notevoli aumenti della capacità di esecuzione e memorizzazione. Ad esempio, si può considerare l’utilizzo di un cellulare nell’architettura cloud che permetta da un lato di sfruttare appieno le potenzialità di elaborazione e memoria dei cellulari di futura generazione e dall’altro di facilitare la reperibilità dei propri contenuti e servizi e la loro condivisione con altri utenti, come all’interno di una rete sociale. Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • 87 Web di dati E’ noto che il Web tradizionale è una rete di documenti collegati tra loro tramite dei link (gli URL), che permettono di realizzare un “enorme” ipertesto; accanto a questo, si sta affermando un’altra rete di informazioni, costituita da un Web di dati [43], in cui i dati sono descritti e messi in relazione tramite linguaggi formali (come RDF), possibilmente arricchiti con informazioni semantiche. La motivazione di un Web di dati nasce dalla necessità di organizzare i dati presenti in Internet non solo come una rete di documenti HTML, come nel caso del Web, o come un insieme di tabelle, come nei database tradizionali, ma come una rete di dati associati ed aggregabili. Il Web di dati è la base per abilitare applicazioni di data mining, in quanto è molto più facile reperire, estrarre e combinare le informazioni di interesse dai singoli dati e dalle loro relazioni, piuttosto che da documenti: questa visione è condivisa da due iniziative internazionali che sono Dataweb [31], sviluppato da OASIS, ed il progetto Linked Data [32] sotto il controllo del W3C. Esempi di tali Web di dati sono quelli generati a supporto di servizi altamente dinamici ed adattativi, come quelli elaborati nel contesto dell’iniziativa Wiki-city del MIT [33]. Architettura Software M. Mongiello Ingegneria del Software Avanzata Web di dati • La validità di tali dati può dipendere da condizioni spaziotemporali e il loro accesso e visibilità possono essere soggetti a complessi vincoli d’autorizzazione; tali dati devono essere opportunamente collezionati, memorizzati, correlati e resi accessibili tramite strumenti di ricerca e di navigazione. Inoltre è possibile che i nuovi dati siano opportunamente distribuiti alle applicazioni che hanno precedentemente espresso un interesse. La dinamicità, la quantità, il ritmo d’acquisizione e di distribuzione dei dati richiedono elevate capacità di elaborazione e di memorizzazione che possono essere messe a disposizione da un’infrastruttura di cloud computing. 88 Architettura Software M. Mongiello Ingegneria del Software Avanzata Data cloud • Inoltre i meccanismi coinvolti in una tale infrastruttura possono essere in grado di assorbire adeguatamente i picchi di traffico e di scalare la soluzione al crescere degli utenti e delle quantità di dati. A partire dalle informazioni strutturate secondo l’approccio del Data Web si potrebbe creare un “Data Cloud” [43], da intendersi come una rete che mette in relazione tali dati. • La sua realizzazione potrebbe utilizzare soluzioni che offrono una gestione semplice (con una visione unitaria) dei dati memorizzati sui diversi sistemi di cloud computing, anche di fornitori diversi. 89 Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • • • • • 90 Bibliografia [1] Bhaskar Prasad Rimal, Eunmi Choi, “A Taxonomy and Survey of Cloud Computing Systems”, 2009 Fifth International Joint Conference on INC, IMS and IDC, 25-27 Aug. 2009 Pp.44 - 51 [2] Liang-Jie Zhang; Qun Zhou, “CCOA: Cloud Computing Open Architecture”, 2009 IEEE International Conference on Web Services, 6-10 July 2009 Page(s): 607 - 616 [3] Ian Foster, Yong Zhao, Ioan Raicu, Shiyong Lu, “Cloud Computing and Grid Computing 360-Degree Compared”, Grid Computing Environments Workshop, 2008, Publication Date: 12-16 Nov. 2008, on page(s): 1-10 [4] http://www.salesforce.com/it/crm/ [5] http://www.amazon.com/ [6] http://www.gartner.com/technology/home.jsp [7] http://gears.google.com/ [9] Hamid R Motahari-Nezhad, Bryan Stephenson, Sharad Singhal, “Outsourcing Business to Cloud Computing Services: Opportunities and Challenges”, http://www.hpl.hp.com/techreports/2009/HPL-2009-23.pdf Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • • • • • • • 91 Bibliografia [61] Hyuck Han, Shingyu Kim, Hyungsoo Jung, Heon Y. Yeom, Changho Yoon, Jongwon Park, Yongwoo Lee, “A RESTful Approach to the Management of Cloud Infrastructure”, IEEE International Conference on Cloud Computing, 2009 [62] R. T. Fielding, “Architectural Styles and the Design of Network-based Software Architectures”, doctoral dissertation, 2000 [63] “Access Control Lists”, http://msdn.microsoft.com/en-us/library/aa374872(VS.85).aspx [64] Czarnecki, P. Jajszczyk, A. Wilkosz, M., “Comparison criteria for management information models (MIMs): a way of analyzing MIMs”, Network Operations and Management Symposium, 1996., IEEE, On page(s): 666 – 673, vol.3 [65] “Managing the Federation Service”, http://technet.microsoft.com/enus/library/cc776298(WS.10).aspx [66] Cutlip, R., and Zabeu, C., “Autonomic Computing: Strengthening Manageability for SOA Implementations”, Autonomic Computing White Paper, IBM, 2006 [67] David A. Chappell, “Enterprise Service Bus”, O’Reilly, June 2004 [68] Ghemawat S, Gobioff H, Leung ST, “The Google file system”, Proc. of the 19th ACM Symp. On Operating Systems Principles, 2003, On page(s): 29 - 43 [69] Ke Xu, Meina Song, Xiaoqi Zhang, Junde Song, “A Cloud Computing Platform Based on P2P”, IEEE International Symposium, Volume 1, 14-16, Aug. 2009, On Page(s): 427 – 432 [70] Andrew S. Tanenbaum, Maarten van Stehen,“Distributed systems: principles and paradigms”, Pearson Prentice Hall, 2007 Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • • • • • • • 92 Bibliografia [10] Frederick Chong, Gianpaolo Carraro, “Strategie architetturali per il Long Tail”, http://msdn.microsoft.com/itit/library/aa479069.aspx [11] “Il Software as a Service (SaaS)”, https://www.sideupreply.eu/upload/File/cms/content/3075_img_WhitePaper_SaaS_Reply_it.pdf-id=3075 [12] http://aws.amazon.com/s3/ [13] http://aws.amazon.com/ec2/ [14] http://xen.org/ [15] http://aws.amazon.com/sqs/ [16] http://open.eucalyptus.com/ [17] http://www.gogrid.com/ [18] http://www.microsoft.com/windowsazure/ [19] http://code.google.com/intl/it/appengine/ Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • • • • • • • 93 Bibliografia [21] http://www.salesforce.com/it/platform/ [22] http://www.symantec.com/index.jsp [23] http://www.salesforce.com/appexchange/ [24] http://www.google.com/apps/ [25] http://www.zoho.com/ [26] http://www.elatos.net/ [27] http://www.sinergest.com/ [28] http://www.netsuite.com/portal/platform/main.shtml [29] http://www.lifecode.it/it/448/hiveon.html [30] Toby Velte, Anthony Velte, Robert Elsenpeter, “Cloud Computing: A Practical Approach”, McGraw Hill Professional, 2009 Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • • • • • • • 94 Bibliografia [31] OASIS, “The Dataweb: An Introduction to XDI”, http://xml.coverpages.org/XDIIntroWhitePaper20040120.pdf [32] http://www.w3.org/DesignIssues/LinkedData.html [33] F. Calabrese, M. Colonna, P. Lovisolo, D. Parata, C. Ratti, “Real-Time Urban Monitoring Using Cellular Phones: A Case-Study in Rome”, MIT SENSEable City Laboratory Working Papers, 2007, http://senseable.mit.edu/ [34] “La Virtualizzazione”, http://www.vmware.com/it/overview/ [35] http://www.vmware.com/pdf/esx3_esxupdate.pdf [36] Thomas Erl, “SOA: principles of service design”, Prentice Hall, 2008 [37] David Bernstein, Erik Ludvigson, Krishna Sankar, Steve Diamond, Monique Morrow, “Blueprint for the Intercloud - Protocols and Formats for Cloud Computing Interoperability”, Fourth International Conference on Internet and Web Applications and Services, 2009, 328-336 [38] http://www.w3.org/ [39] Nextvalue S.r.l., “Cloud computing nelle imprese italiane: scenario, trend, opportunità”, http://www.datamanager.it/systemFiles/files/Nextvalue_ricerca%20Cloud%20Computing% 20in%20Italia.pdf [40] Oracle White paper, “Architectural Strategies for Cloud Computing”, August 2009 Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • • • • • • • 95 Bibliografia [41] Oracle White paper, “The Oracle Enterprise Architecture Framework”, October 2009 [42] Ouertani, M.Z., Parlikad, A.K., McFarlane, D.C., “Towards an approach to select an asset information management strategy,” International Journal of Computer Science and Applications, Volume 5, Issue 3b, 25-44. [44] “Ospit@ Virtuale”, http://www.impresasemplice.it/scheda_prodotto_ospita_azienda.html [45] Greg Boss, Padma Malladi, Dennis Quan, Linda Legregni, Harold Hall, “Cloud Computing”, IBM, 8 October 2007, http://download.boulder.ibm.com/ibmdl/pub/software/dw/wes/hipods/Cloud_co mputing_wp_final_8Oct.pdf [46] Sun White paper, “Take your business to a higher level, Sun cloudcomputing technology scales your infrastructure to take advantage of new business opportunities”, 2009 [48] Sun Microsystems, “Nuove funzioni di Solaris 10”, http://dlc.sun.com/pdf/819-0357/819-0357.pdf [49] ”Sun Microsystems presenta la nuova piattaforma Open Cloud”, http://it.sun.com/sunnews/press/2009/20090323.jsp [50] http://www.webdav.org/ Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • • • • • • 96 Bibliografia [51] LABShp, “Cloud – Research opportunities and challenges”, http://www.hpl.hp.com/research/cloud.html [52] “HP Cloud Assure on SaaS”, http://saas.hp.com/cloudassure [53] “Introducing HP BladeSystem Matrix”, http://h18004.www1.hp.com/products/blades/components/matrix/main.html [55] Mietzner, R.; Leymann, F.; Papazoglou, M.P., “Defining Composite Configurable SaaS Application Packages Using SCA, Variability Descriptors and Multi-tenancy Patterns”, Third International Conference on Internet and Web Applications and Services, 8-13 June 2008, Page(s): 156 – 161 [56] Hyun Jung La, Si Won Choi, and Soo Dong Kim, “Technical Challenges and Solution Space for Developing SaaS and Mash-Up Cloud Services”, IEEE International Conference on e-Business Engineering, 2009, October 21-October 23 [57] Jason Carolan, “Optimizing applications for cloud computing environments”, Sun White Paper, November 2009 [58] Frank Buschmann, Kevlin Henney, Douglas C. Schmidt, “Pattern-oriented software architecture: On patterns and pattern languages”, John Wiley and Sons, 2007 [59] http://hadoop.apache.org/mapreduce/ [60] J. Case, M. Fedor, M. Schoffstall, and J. Davin. A Simple Network Management Protocol (SNMP). RFC 1098, 1990 Architettura Software M. Mongiello Ingegneria del Software Avanzata • • • • • • • • • • • 97 Bibliografia [71] I.Stoica, R.Morris, D.Karger, F.Kaashoek, and H.Balakrishnan, “Chord: A scalable peerto-peer lookup protocol for Internet applications”, IEEE/ACM Transaction on Networking, vol.11, no.1, Feb.2003, pp.17-32 [72] Antony Rowstron and Peter Druschel, “Pastry: Scalable, decentralized object location and routing for large-scale peerto-peer systems”, IFIP/ACM International Conference on Distributed Systems Platforms (Middleware 2001) [73] Frederick Chong, Gianpaolo Carraro, Roger Wolter, “Architettura dati multi-tenant”, http://msdn.microsoft.com/it-it/library/aa479086.aspx [74] http://www.iso.org/iso/catalogue_detail.htm?csnumber=22749 [75] Tim Mather, Subra Kumaraswamy, Shahed Latif, “Cloud Security and Privacy: An Enterprise Perspective on Risks and Compliance”, O'Reilly Media, Inc., 2009 [76] http://wikis.sun.com/display/cloud/Patterns [77] http://www.citrix.com/english/ps2/products/product.asp?contentID=683392 [78] http://aws.amazon.com/cloudwatch/ [79] Microsoft, “Web Service Security: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0”, http://download.microsoft.com/download/8/d/6/8d608524-0763-48b5-840b0ae446996a14/MS_WSS_Dec_05.pdf [80] “Open Cloud Manifesto”, http://www.opencloudmanifesto.org/Open%20Cloud%20Manifesto.pdf Architettura Software M. Mongiello