Introduzione al Cloud Computing
Negli ultimi mesi una delle parole più pronunciate in ambito informatico è stata "cloud", che letteralmente significa "nuvola". Come forse già sappiamo, la nuvola ha da sempre rappresentato graficamente "Internet". Non conosciamo chi e quando ha voluto per primo esprimere con la nuvola questa nuova entità verso la quale i sistemi, dapprima con semplici browser, iniziavano a connettersi; è però certo che l'intuizione ha avuto successo.
La nuvola, il cloud, e la rete Internet sono quindi strettamente collegate. La Rete, nata nel lontano 1969 con il nome di Arpanet, si è evoluta nel tempo fino al 1991, anno in cui con la definizione del protocollo http e la nascita del World Wide Web (WWW) prende il nome di Internet. L'intento è quello di connettere tra loro più computer con lo scopo di condividere informazioni, documenti, risorse ecc. Ognuno ha la possibilità di connettersi a sistemi, server, pubblicare pagine e siti web e rendere disponibili ad altri le proprie conoscenze. La necessità di condivisione diventa la spinta per la creazione della rete. I PC quindi si possono connettere a Internet, ma nessuno (o pochi) sanno realmente cos'è, o meglio cosa c'è dietro, come mi connetto e quali sono i servizi che mi consentono di farlo. Non so dove è pubblicato il sito web che visito e non so neanche come è stato creato. Sto quindi usufruendo di un servizio che una piattaforma, qualunque essa sia, mi sta erogando. Sono un utente della rete.
Qui nasce il concetto di nuvola: non so cosa c'è dietro, non mi interessa, ma lo uso. Il Cloud Computing, anche se negli ultimi anni sembra rappresentare una evoluzione, in realtà era un concetto per molti aspetti già esistente da diverso tempo, parallelamente alla nascita di Internet.
Che cos'è il Cloud Computing?
Possiamo quindi definire con il termine Cloud Computing un insieme di risorse hardware e software che forniscono servizi su richiesta attraverso la rete Internet. Sebbene simile, non deve essere confuso con quest'ultima, in quanto il Cloud Computing è sostanzialmente un servizio fornito da un gestore di terze parti con la formula on demand. Sostanzialmente l'utente paga soltanto per quello che consuma, in termini di banda, di risorse, tempo di utilizzo, numero di transazioni ecc. Questo modello permette di creare soluzioni scalabili, performanti e affidabili anche con un basso investimento iniziale, senza cioè dover acquistare per lo startup l'hardware necessario e i servizi connessi, come il consumo di elettricità, la disponibilità di una connessione veloce e permanente a Internet, un IP fisso per rendere raggiungibili i propri server. Caratteristica fondamentale e imprescindibile del Cloud Computing è quella di fornire una infrastruttura di servizi assolutamente affidabile e scalabile. È infatti possibile, a seconda delle necessità, aumentare o diminuire i nodi in uso, oppure cambiare le caratteristiche dei server potenziando CPU e memoria.
Tutto questo è possibile perché l'infrastruttura è basata su un sistema di virtualizzazione delle risorse. La piattaforma viene eseguita su macchine virtuali opportunamente dimensionate e in grado di fornire i servizi richiesti. Ogni volta che viene richiesto di scalare utilizzando un nuovo nodo, la piattaforma si preoccupa di replicare l'applicazione sul nuovo nodo e renderlo quindi disponibile.
Ma non tutto è o può essere Cloud Computing. Attualmente esiste la possibilità di sviluppare per il cloud, ma esistono ancora tante soluzioni già in produzione negli ambienti tradizionali. Spesso le due tipologie di soluzioni, che in realtà differiscono per la piattaforma di distribuzione, devono integrarsi e comunicare tra loro. Per distinguere, vengono utilizzate due diverse terminologie. Un'applicazione distribuita secondo il modello tradizionale, su server di proprietà o su computer locali per esempio, viene definita on-premise. Una soluzione distribuita invece secondo le indicazioni del Cloud Computing viene semplicemente definita come in the cloud, o semplicemente cloud. È bene focalizzare le due definizioni perché, sono le modalità più diffuse per indicare le differenti modalità di deployment delle applicazioni.
Nota
Il termine Computing non deve essere confuso con il Grid Computing, dove la potenza di calcolo di diversi computer viene unita per formare un unico computer virtuale, un meccanismo ben diverso dal fornire servizi.
Il Cloud Computing può essere suddiviso in tre grandi categorie, dipendentemente dallo scopo per cui viene creato. Abbiamo quindi:
- Infrastructure as a Service (Iaas), dove l'infrastruttura hardware, la rete, lo storage vengono resi disponibili come servizi;
- Platform as a Service (PaaS), dove è la piattaforma applicativa, il Sistema Operativo, a essere fruibile come servizio con la possibilità di sviluppare soluzioni software;
- Software as a Service (SaaS), dove l'applicazione diventa un servizio fruibile su richiesta. Immaginate Google Documents come un'applicazione, simile a Microsoft Office, che però viene resa pubblicamente accessibile come servizio sul Web.
Alcune piattaforme supportano contemporaneamente anche più di una delle tipologie elencate.
Infrastructure as a Service
La differenza tra le diverse tipologie di Cloud Computing appare sottile, ma sostanziale. L'Infrastructure as a Service (IaaS) è una tipologia di Cloud Computing basato sul consumo, come servizio, di risorse hardware. Server virtuali, potenza di calcolo, storage, reti vengono messi a disposizione per essere utilizzati senza necessariamente dover affrontare costi di acquisto di tale hardware.
Il concetto è simile al noleggio, ma con l'importante differenza della manutenzione. Chi utilizza l'infrastruttura cloud non si deve preoccupare di fare manutenzione, rinnovare l'hardware o sostituire un hard disk; deve semplicemente utilizzare un servizio scalabile e affidabile senza preoccuparsi dei meccanismi di gestione interna.
Platform as a Service
Il Platform as a Service (PaaS) rappresenta una tipologia di servizio fornito del tutto differente, anche se per molti versi simile all'IaaS. A essere fornito come servizio, questa volta, non c'è solo l'hardware, ma anche la piattaforma che astrae l'hardware stesso e permette di usufruire di un set di funzionalità che consentono di ottenere load balancing, storage, reti, Virtual Machine, deployment. Il vantaggio è quello di concentrarsi solo ed esclusivamente sullo sviluppo dell'applicazione, e non perdersi nell'analisi di problematiche legate all'ambiente in cui essa deve essere distribuita, ottenendo contestualmente dalla piattaforma la scalabilità e l'affidabilità necessaria. Come per l'IaaS, non dobbiamo preoccuparci di aggiornare il sistema operativo: viene tutto gestito dinamicamente e in modo del tutto automatico dalla piattaforma. Se in determinati periodi abbiamo carichi di picco, per esempio durante il periodo natalizio un negozio online può essere soggetto a un carico di richieste decisamente più alto, la piattaforma è in grado di adeguare la propria struttura per rispondere alle mutate esigenze, anche se temporanee. Diversamente da quanto viene fatto nelle soluzioni tradizionali, dove tutta l'infrastruttura hardware e software deve essere progettata per essere scalabile e affidabile, così da evitare problemi e interruzioni del servizio che causano ripercussioni sul business. Un'infrastruttura di Cloud Computing, invece, è progettata partendo dal presupposto che i problemi ci possono essere. È quindi in grado di risolverli autonomamente, per quanto possibile, attraverso meccanismi in grado di non bloccare il normale flusso applicativo, come la replica delle macchine virtuali.
Software as a Service
Mentre l'IaaS fornisce l'infrastruttura e il PaaS la piattaforma, il Software as a Servi-ce (SaaS) rappresenta una completa soluzione software sottoforma di servizio. Un esempio di SaaS è la piattaforma Google Documents: un insieme di applicazioni per l'ufficio, gestione di documenti, fogli di calcolo, disegno, presentazioni, interamente disponibile online e accessibili da chiunque ne è abilitato. Recentemente anche Microsoft ha rilasciato la versione di Office per il cloud chiamata Office365. In questo modo Word, Excel, PowerPoint, SharePoint, Lync ed Exchange diventano applicazioni interamente accessibili tramite Web.
|