Introduzione
INTRODUZIONE
A post-industrial society is based on services.
La società dei servizi, per Daniel Bell, è la società dell'informazione che produce
economia della conoscenza, a valle di uno sviluppo industriale la cui curva di
evoluzione tende asintoticamente ad una soglia fisica di produzione, ormai prossima.
Ciò che maggiormente interpreta il senso di queste considerazioni, è il paradigma del
cloud computing, un modello di computazione on-demand, attraverso il quale vengono
erogati dei servizi che permettono di accedere a delle risorse distribuite in maniera
semplice, immediata e del tutto trasparente da parte di chi le utilizza.
Il modello cloud è in continua evoluzione. Sebbene si cerchi di convergere a livello
concettuale su un'unica definizione, lo stesso termine cloud è rimasto per molto tempo
strettamente legato a determinati provider e a delle stringenti soluzioni offerte dai
medesimi nel mercato IT. L'obiettivo di questo elaborato è quello di descriverne lo stato
dell'arte e di proporre un'infrastruttura di sviluppo Web Enterprise per cloud computing,
aperta, estendibile, basata su modelli di servizio ma, soprattutto, compatibile fra i cloud.
Lo sviluppo Web è l'aspetto più comune ad aziende ed enti che vogliono essere visibili
sul mercato; avere la possibilità di poter erogare dei servizi in questo senso, attraverso
un sistema altamente scalabile e largamente distribuito quale è il cloud, fornisce delle
opportunità, che fino a qualche anno fa erano prerogativa soltanto di pochi attori,
perlopiù grosse Corporation capaci di possedere ingenti quantità di hardware.
Nel corso di questo lavoro di tesi, viene fornita una descrizione teorica e formale sul
cloud computing, espresso come modello di erogazione di servizi, che a sua volta, al
suo interno, comprende dei modelli di servizio e di deployment. Nel corso della
discussione nel primo capitolo, il paradigma del cloud viene costantemente paragonato
alle griglie computazionali, per fornire un nesso storico e logico sul perché di alcune
caratteristiche e di talune soluzioni di problemi comuni alla computazione distribuita e
on-demand. Il cloud utilizza il grid computing come dorsale di comunicazione
6
Introduzione
all'interno di una totalità di modelli di computazionale preesistenti, verso un'architettura
a servizi erogati attraverso il Web. Il capitolo prosegue con la descrizione
dell'architettura del cloud, analizzando i componenti fondamentali del modello
computazionale e del modello dati attraverso la virtualizzazione delle risorse e
l'erogazione delle stesse come servizi. Viene inoltre posta una maggiore enfasi sul
sistemi di virtualizzazioni esistenti, descrivendone caratteristiche e funzionalità, e viene
infine discusso l'aspetto della sicurezza in una struttura largamente condivisa e
complessa come quella interpretata dal paradigma in esame.
Nel secondo capitolo viene fornita una vasta ed esaustiva panoramica sui modelli di
servizio IaaS e PaaS attualmente presenti sul mercato ed in letteratura, al fine perseguire
gli scopi prefissati precedentemente, ovvero ricercare tutte le possibili combinazioni dei
cloud per ottenere una piattaforma di sviluppo web aperta ed estendibile, su cloud
computing. Vengono discusse in maniera dettagliata sia l'intera offerta IaaS con
soluzioni quali Amazon, OpenNebula, Joyent, Openstack, sia le maggiori PaaS quali
App Engine, Heroku, CloudFoundry, Openshift. Nella descrizione delle varie soluzioni,
si è posta maggiore enfasi su quelle di natura open source, target naturale di una ricerca
di questo tipo, verso l'interoperabilità dei cloud. A tal fine, il capitolo si conclude con la
descrizione di DeltaCloud, un progetto il cui scopo prefissato è quello di fornire un alto
livello di astrazione nel cloud, attraverso delle API che permettono la portabilità delle
stesse applicazioni sulle maggiori soluzioni di infrastruttura.
Il terzo capitolo comprende una discussione dettagliata sulle soluzioni scelte nella fase
implementativa per realizzare il “super-modello” PaaS over IaaS, ovvero Openstack ed
Openshift le quali, per la loro natura open source e per la loro forte presa nella comunità
di sviluppatori, stanno diventando lo standard de facto di soluzioni open source,
rispettivamente di infrastruttura e di piattaforma. Viene fornita una descrizione
dettagliata su Openstack, sulle unità che lo compongono e sui modelli di deployment
ottenibili mediante il suo utilizzo. Viene inoltre posta una particolare attenzione sui
servizi di orchestrazione, Heat e Juju, ed in particolare sul primo, il quale rappresenta la
scelta di default dell'infrastruttura. L'orchestrazione delle risorse è un aspetto cruciale
nel cloud, ed Openstack espone tramite Heat dei servizi, alla stregua di tutti gli altri, per
la descrizione delle risorse e di definizione delle metriche, attraverso un sistema di
7
Introduzione
templating del tutto compatibile con AWS CloudFormation ed AWS CloudWatch,
pertanto nella direzione della portabilità verso altri cloud. Viene discussa anche
l'orchestrazione tramite Juju, che rappresenta la soluzione ideale per l'erogazione di
singoli servizi enterprise. Successivamente si è posta l’attenzione sulla PaaS di
Openshift, un progetto open source promosso da Red Hat, il cui scopo è quello di
fornire una piattaforma di sviluppo scalabile, distribuita ed estendibile, la quale esula il
contesto classico delle PaaS vincolate ai provider, e permette di studiare delle soluzioni
ad-hoc inter-cloud. Vengono discussi i componenti fondamentali dell'architettura, quali
Broker, Nodi, Cartridge e Gear, in funzione della caratteristica di auto scaling delle
applicazioni di cui viene effettuato il deploy nella piattaforma. Openshift fornisce dei
runtime comuni per il deploy di applicazioni Web Enterprise quali JavaEE, Ruby,
Python o PHP, ed inoltre, nella soluzione di cloud privato, è possibile estendere
qualsiasi runtime grazie al concetto di Cartridge.
Infine, nel quarto capitolo, viene descritta una configurazione d'infrastruttura
dimostrativa realizzata nel laboratorio di Grid computing (Gridlab), attraverso l'uso
delle versioni RDO Openstack Grizzly su un nodo host, e delle istanze Openshift Origin
orchestrate tramite Heat. Vengono analizzati i componenti necessari alla realizzazione
dell'infrastruttura ed alla procedure volte a configurare un ambiente IaaS su base
Openstack, con sistema di virtualizzazione totale assista dall'hardware basato su KVM,
su base CentOS Linux. Viene illustrato un template che effettua l'orchestrazione di una
coppia di nodi Broker/Nodo Openshift con configurazioni standard, ed attraverso un
deploy dimostrativo, vengono illustrate tutte le componenti di Openstack ed Openshift
coinvolte.
8
Capitolo 1 Cloud Computing
CAPITOLO 1. CLOUD COMPUTING
Cloud est omnis divisum in partes tres, quarum unam incolunt IaaS, aliam PaaS,
tertiam SaaS appellantur [1]
Il paradigma del cloud computing è divenuto, nel corso degli ultimi anni, uno dei più
interessanti trend nel campo del calcolo distribuito e nella condivisione delle risorse,
riuscendo a trasformare concettualmente ed empiricamente sia la produzione di beni e
servizi nel Information Technology, sia le attività di ricerca scientifica. Tale migrazione
dalle consuete e consolidate metodologie di ricerca e produzione, è stato favorito dal
modello di economia di scala alla base del cloud computing. Quest'ultimo ha avuto il
merito principale, in un settore come quello del IT in costante divenire, di avvicinare i
mezzi alle idee, attraverso un canale di comunicazione del quale non è necessario
conoscerne fattezze e funzionamento, appunto “tra le nuvole”, che permette l'accesso a
delle risorse teoricamente illimitate in maniera semplice ed intuitiva. Il cloud pertanto
supporta efficientemente la produzione industriale e la ricerca accademica, poiché
permette l'esecuzione di attività e processi in breve tempo con l'utilizzo di risorse
allocate on-demand [2].
Il termine cloud è preso in prestito dalle telecomunicazioni, quando agli inizi degli anni
90 le compagnie telefoniche offrirono servizi di VPN a banda garantita e basso costo,
grazie alla possibilità di effettuare lo switch del traffico su diversi percorsi. Tale
instradamento divenne appunto non deterministico, ovvero impossibile da calcolare
determinare a priori, e da qui nacque il concetto di servizi in cloud, che coinvolge
ormai tutto l'IT. Il concetto proprio di cloud computing viene espresso formalmente per
la prima volta in (Chelappa, 1997) e si definisce come un paradigma di calcolo
computazionale dove i limiti alla potenza di calcolo sono determinati da fattori
economici in senso stretto, piuttosto che limiti tecnici. Tuttavia la definizione formale
più completa ed accettata è quella di Foster, il quale afferma che il cloud è un paradigma
9
Capitolo 1 Cloud Computing
di calcolo distribuito di largo dominio, guidato da economia di scala, nel quale un
insieme di potenze di calcolo controllate, archiviazione dati, piattaforme e servizi
astratti, virtualizzati e dinamicamente scalabili sono rese disponibili on-demand a utenti
esterni attraverso Internet. [3]
1.1 Tipologie di Cloud Computing
Il Cloud viene suddiviso logicamente in cinque componenti essenziali, tre modelli di
deployment e tre modelli di servizio. [4]
1.1.2 Caratteristiche essenziali
Le cinque componenti essenziali sono illustrate in Fig. 1, e sono rispettivamente:
Fig. 1: Caratteristiche del Cloud Computing [4]
• Scalabile ed Elastico: nel paradigma del cloud computing, un provider non può
prevedere l'uso dei volumi o la mole di richieste di accesso ai servizi; né tanto
meno si deve far carico di problemi di tale natura. La peculiarità del servizio
erogato attraverso il cloud è la sua costante disponibilità online, detto appunto
always-on , progettato per essere altamente scalabile e flessibile. L'utente finale
ha l'impressione di avere accesso ad una quantità di risorse potenzialmente
illimitate, di cui può usufruire in qualunque quantità e tempo;
10
Capitolo 1 Cloud Computing
• Service-based: gli utenti possono disporre nel cloud di applicazioni, tempo di
CPU, archiviazione dati o processi complessi come un servizio. Ed inoltre tale
interazione avviene on-demand automaticamente senza l'intervento umano;
• Internet-based: Internet viene utilizzato come un mezzo di erogazione di
servizi offerti sul Cloud, attraverso dei Web Service con interfacce
standardizzate;
• Costi a consumo : nel paradigma del cloud è previsto il pagamento per la
quantità di servizio erogato. L'utente percepisce l'accesso di una potenza
illimitata, ma poi paga ciò che ha effettivamente utilizzato;
• Risorse condivise: I servizi cloud sono multi-tentant, ovvero esistono in un
ambiente di lavoro condiviso da più entità, sia a livello hardware, che a livello
software. Ciò può significare che una singola istanza di un software, e la
piattaforma hardware dove viene eseguita, serve più client. Vi è un'indipendenza
di locazione del software e quindi del servizio erogato, celata all'utente finale il
quale può al più decidere una macro-area geografica di pertinenza ad un più alto
livello di astrazione.
1.1.2 Modelli di Deployment nel Cloud
Il cloud viene percepito principalmente nella sua accezione più nota di servizio erogato
al pubblico da pochi provider elitari, che dispongono di un'immensa quantità di risorse
da orchestrare, attraverso il ben noto paradigma in esame. Tuttavia esistono tre modelli
di deployment nel cloud:
• Public Cloud: il cloud pubblico è reso disponibile su Internet per utenti
generici o grandi gruppi industriali, ed è tipicamente gestito da organizzazioni
che erogano servizi cloud. Tali servizi vengono offerti attraverso la rete, ed
esposti in maniera standardizzata, auto-configurante ed predisposti per il
pagamento a consumo. Il cloud pubblico appartiene ad un mercato massivo, con
una serie di servizi altamente standardizzati e con bassi margini; [5]
11
Capitolo 1 Cloud Computing
• Private Cloud: il cloud privato è operato esclusivamente per qualche
organizzazione/entità . Viene gestito direttamente da tali organizzazioni o da
terze parti con accordi di erogazioni di sevizi cloud esclusivi con queste. Al di là
del substrato tecnologico, un'importante differenza fra i grandi data center delle
corporation e i cloud privati risiede nel modello di gestione. Poiché nel modello
cloud il business vero e proprio è il cliente, il cloud privato risulta essere
essenzialmente un mercato di strumenti utilizzabili sotto licenza, di hosting e di
consulenza;
• Hybrid Cloud: il cloud ibrido è un'infrastruttura ottenuta dalla combinazione
dei cloud pubblici e privati, i quali rimangono entità distinte, ma collegate e
amalgamate da tecnologie che garantiscono la portabilità di applicazioni e dati.
Associa elementi di cloud pubblico e privato, inclusa qualsiasi combinazione di
provider e consumer, e può contenere più livelli di servizio.
Fig.2 Modelli cloud offerti [4]
Il cloud computing, come illustrato in Fig. 2, definisce a sua volta altri sub-modelli
all'interno dei modelli di cloud privato e pubblico. Queste segmentazioni, danno luogo
ad una descrizione più concisa sui vari scenari che coinvolgono provider e consumer in
un contesto cloud. Inoltre i sub-modelli implicano un livello di conoscenza e
12
Capitolo 1 Cloud Computing
specializzazione necessaria per garantire l'erogazione dei servizi cloud offerti.
Il Private Cloud contiene dunque a sua volta:
• Exploratory cloud: coinvolge le organizzazioni che vogliono puntare sul cloud,
ma che hanno bisogno di acquisite conoscenza ed esperienza su questo settore
dell' IT, a loro inizialmente sconosciuto. Il suo valore scaturisce dalla capacità di
sviluppo di servizi cloud e dalla comprensione degli aspetti tecnici coinvolti in
un ambiente cloud, come punto di partenza per determinare dei ricavi su
investimenti fatti attraverso l'erogazione di servizi nel cloud;
• Departmental cloud: in questo modello, sia le organizzazioni che erogano
servizi nel cloud, sia i dipartimenti che usufruiscono servizi nel cloud,
appartengono alla stessa organizzazione. Nel cloud dipartimentale, lo scopo è
quello di espandere l'uso del cloud computing verso unità di business ed
operazionali. Il suo valore deriva da competenze avanzate su risorse condivise e
gestione della virtualizzazione, insieme ad un generale miglioramento della
conoscenza dei modelli offerti nel cloud;
• Enterprise cloud: come nel precedente modello, le organizzazioni di IT che
erogano servizi nel cloud e quelle consumano tali servizi fanno parte della stessa
unità enterprise, ma esistono diversi confini di gestione. Lo scopo nel cloud
enterprise è quello di eseguire dinamicamente processi aziendali time-critical
con risorse preesistenti precedentemente inutilizzate o non pienamente sfruttate.
Il valore che fornisce questo modello è dato dall'ottimizzazione degli
investimenti aziendali in termini di risorse e capacità tecnologiche. Uno degli
aspetti cruciali in un contesto cloud è quello legato alla sicurezza ed il cloud
enterprice è in questo senso ancora più restrittivo, poiché richiede che essa sia
ben definita ed implementata, oltre alla possibilità per le organizzazioni di avere
a disposizione la gestione di servizi con funzionalità addizionali, l'automazione
del provisioning e la gestione dell'autenticazione. Inoltre fondamentale è la
funzione di misura delle risorse utilizzate per garantire le operazioni di
pagamento a consumo, peculiarità intrinseca nel cloud computing.
13
Capitolo 1 Cloud Computing
Per ognuno dei tre sub-modelli di cloud privato, sia l'unità di business che quella
operazionale risiedono nello stesso dominio enterprice, erogati come servizi nel cloud.
Per quanto riguardo invece il cloud pubblico, esso di suddivide ulteriormente in:
• Exclusive Cloud: tale modello è usato generalmente per fornire dei servizi
condivisi a membri di un singolo gruppo o di una singola organizzazione, come
ad esempio in consorzio universitario o più aziende con i loro relativi partner
aziendali trusted. Lo scopo è quello di fornire un accesso a partecipanti fidati,
ovvero trusted, al fine di garantire loro la possibilità di utilizzare le proprio
applicazioni critiche. Gli utenti riconosciuti possono usufruire dei servizi
attraverso la loro relazione con questa struttura organizzativa ad ombrello,
fintanto che tale organizzazione ha degli accordi con il provider cloud. Le
caratteristiche distintive critiche del cloud pubblico esclusivo sono due. La
prima, è che il provider e l'organizzazione che usufruisce dei suoi servizi nel
cloud sono note reciprocamente e sono in grado di negoziare dei parametri di
livello di servizio. La seconda, invece, prevede che ogni risorsa fornita usata per
erogare un servizio verso l'organizzazione, sia dedicata per questo cloud
esclusivo e non condivisa con altri ambienti di delivery o altri consumer al di
fuori dell'organizzazione stessa. E' importante notare a tal proposito, che un
cloud esclusivo ed un cloud privato virtuale non sono la stessa cosa. Poiché
quest'ultimo descrive un accordo dove una singola organizzazione consumer ha
accesso esclusivo alle risorse del provider che fornisce i servizi del consumer.
Tuttavia queste risorse, risiedono in un data center che fornisce servizi a molti
altre organizzazioni consumer.
• Open Cloud: in questo modello, le organizzazioni che erogano e che
usufruiscono dei servizi non sono note fra di loro prima della presentazione di
una richiesta di servizio. La caratteristica principale di un cloud open risiede nel
contrattazione dei servizi, la quale deve essere automatizzata, e nella
definizione basata su degli standard degli eventi e nel controllo di essi da parte
del provider. Il modello open cloud richiede inoltre l'automatizzazione della
contrattazione e della riconciliazione dei livelli di servizi, ed inoltre delle
14