L'evoluzione del cloud computing

Completato

Verrà ora descritta l'evoluzione del cloud computing.

Eventi e innovazioni

Il concetto di cloud computing ha fatto la sua prima comparsa all'inizio degli anni '50, quando più accademici, tra cui Herb Grosch, John McCarthy e Douglas Parkhill concepirono l'informatica come un'utenza simile all'energia elettrica1, 2 Nel corso di alcuni decenni successivi, varie tecnologie emergenti hanno posto le basi per il cloud computing. Più recentemente, la crescita rapida del World Wide Web e l'avvento dei grandi giganti di Internet, come Google e Amazon, hanno portato alla creazione di un ambiente economico e aziendale che ha consentito al modello di cloud computing di affermarsi.

Evolution of cloud computing.

Figura 5: Evoluzione del cloud computing

Evoluzione del cloud computing

A partire dal 1960, alcune delle prime forme di computer usate dalle organizzazioni erano computer mainframe. Più utenti potevano condividere e collegarsi ai mainframe attraverso connessioni seriali di base usando dei terminali. Il mainframe era responsabile di tutta la logica, l'archiviazione e l'elaborazione dei dati, mentre i terminali connessi avevano capacità di calcolo molto limitate, se non assenti. Questi sistemi hanno continuato a essere usati diffusamente per più di 30 anni e, in qualche misura, continuano a esistere oggi.

Con la nascita del personal computing, i processori più economici, più piccoli e più potenti e la memoria hanno fatto virare la situazione nella direzione opposta, in cui gli utenti eseguivano il proprio software e archiviavano i propri dati localmente. Questa situazione ha portato a sua volta a problemi di gestione all'interno dell'ambiente IT delle organizzazioni a causa dell'inefficacia della condivisione dei dati e delle regole.

Gradualmente, grazie allo sviluppo di tecnologie di rete ad alta velocità, sono nate le reti locali (LAN), che hanno consentito la connessione e le comunicazioni tra i computer. I fornitori hanno così progettato sistemi in grado di combinare i vantaggi offerti dai personal computer e dai mainframe, ottenendo applicazioni client/server diffuse sulle reti LAN. I client in genere eseguono il software client (ed elaborano alcuni dati) o un terminale (per le applicazioni legacy) connesso a un server. Il server, nel modello client/server, è proprietario di applicazione, archiviazione e logica dei dati.

Negli anni '90, infine, si è affermata l'era delle informazioni globali con la rapida adozione di Internet. La larghezza di banda di rete è stata migliorata in base a diversi ordini di grandezza, dal normale accesso remoto all'odierna connettività fiber dedicata. Inoltre, sono emersi prodotti hardware più convenienti e più potenti. In più, l'evoluzione del World Wide Web e dei siti Web dinamici richiedeva architetture a più livelli.

Le architetture a più livelli hanno consentito la modularizzazione del software separando la presentazione dell'applicazione, la logica dell'applicazione e l'archiviazione in singole entità. Con la modularizzazione e il disaccoppiamento non è passato molto tempo prima che queste singole entità software venissero eseguite in server fisici distinti (in genere a causa delle differenze dei requisiti hardware e software). Ciò ha comportato un aumento dei singoli server nelle organizzazioni. Tuttavia, ha comportato anche uno scarso utilizzo medio dell'hardware del server. Nel 2009 International Data Corporation (IDC) ha stimato per il server x86 medio un tasso di utilizzo compreso tra circa il 5 e il 10%.3

La tecnologia delle macchine virtuali dal 2000 si è evoluta abbastanza da diventare disponibile come software commerciale. La virtualizzazione consente di incapsulare un intero server come immagine, operazione che può essere eseguita facilmente nell'hardware consentendo l'esecuzione simultanea di più server virtuali e la condivisione di risorse hardware. La virtualizzazione consente quindi di consolidare i server, migliorando di conseguenza l'utilizzo del sistema.

Allo stesso tempo, il grid computing si è affermato nella comunità scientifica come soluzione dei problemi su larga scala in modalità distribuita. Con il grid computing, le risorse del computer di più domini amministrativi funzionano all'unisono per un obiettivo comune. Il grid computing ha introdotto molti strumenti di gestione delle risorse, ad esempio utilità di pianificazione e di bilanciamento del carico, per gestire risorse di elaborazione su larga scala.

Poiché le varie tecnologie di elaborazione si sono evolute, lo stesso è avvenuto per i relativi aspetti economici. Anche ai tempi dell'informatica basata su mainframe, le aziende come IBM si offrivano di ospitare ed eseguire computer e software per diverse organizzazioni, ad esempio banche e compagnie aeree. Nell'era di Internet è diventato popolare anche l'hosting Web di terze parti. Con la virtualizzazione, tuttavia, i provider sfruttano una flessibilità senza precedenti per ospitare più client in un singolo server, condividendo hardware e risorse tra gli stessi.

Lo sviluppo di queste tecnologie, associato al modello economico di utility computing, è ciò che alla fine si è evoluto in cloud computing.

Tecnologie abilitanti

Il cloud computing sfrutta varie tecnologie abilitanti, tra cui rete, virtualizzazione e gestione delle risorse, utility computing, modelli di programmazione, calcolo parallelo, distributed computing e tecnologie di archiviazione.

Enabling technologies in cloud computing.

Figura 6: Abilitazione delle tecnologie nel cloud computing

L'avvento di tecnologie di rete ad alta velocità disponibili in tutte le aree ha contribuito notevolmente a rendere il cloud computing un paradigma praticabile. Le reti moderne consentono ai computer di comunicare in modo rapido e affidabile, il che è importante se si prevede di usare i servizi offerti da un provider di servizi cloud. In questo modo, l'esperienza utente con il software in esecuzione in un data center remoto è paragonabile all'esperienza del software in esecuzione in un personal computer. La posta elettronica Web è un esempio comune, così come il software di produttività per l'ufficio. Inoltre, la virtualizzazione è fondamentale per abilitare il cloud computing. Come già accennato, la virtualizzazione consente di gestire la complessità del cloud astraendo e condividendo le sue risorse tra gli utenti attraverso più macchine virtuali. Ogni macchina virtuale può eseguire il proprio sistema operativo e i programmi applicativi associati. La virtualizzazione per il cloud computing viene presentata in modo approfondito in un modulo successivo.

Alcune tecnologie, ad esempio i sistemi di archiviazione su larga scala, i file system distribuiti e le nuove architetture di database, sono fondamentali per la gestione e l'archiviazione dei dati nel cloud. Le tecnologie di archiviazione nel cloud sono trattate in un modulo successivo.

L'utility computing offre numerose forme di pagamento per il noleggio delle risorse di calcolo. Alcuni esempi sono il pagamento orario per risorsa, il pagamento per la velocità effettiva garantita o il pagamento per i dati archiviati al mese.

Il calcolo parallelo e il distributed computing consentono alle entità distribuite presenti nei computer in rete di comunicare e coordinare le proprie azioni per risolvere determinati problemi, rappresentati come programmi paralleli. La scrittura di programmi paralleli per i cluster distribuiti è in sé molto complessa. Per raggiungere un livello elevato di efficienza e flessibilità della programmazione nel cloud, è necessario un modello di programmazione.

I modelli di programmazione per i cloud offrono agli utenti la flessibilità di esprimere i programmi paralleli come unità di calcolo in sequenza, ad esempio le funzioni in MapReduce e i vertici in GraphLab. I sistemi di runtime di questi modelli di programmazione in genere parallelizzano, distribuiscono e pianificano unità di calcolo, gestiscono le comunicazioni tra unità e tollerano gli errori. I modelli di programmazione per il cloud sono trattati in un modulo successivo.


Riferimenti

  1. Simson L. Garfinkel (1999). Architects of the Information Society: Thirty-Five Years of the Laboratory for Computer Science at MIT Press
  2. Douglas J. Parkhill (1966). The Challenge of the Computer Utility Addison-Wesley Publishing Company, Reading, MA
  3. Michelle Bailey (2009). The Economics of Virtualization: Moving Toward an Application-Based Cost Model VMware Sponsored IDC Whitepaper

Verificare le conoscenze

1.

Quando sono emerse le idee generali su cloud computing e utility computing?

2.

Quale tecnologia consente di consolidare più server nello stesso server fisico?

3.

Quali sono le tre tecnologie abilitanti del cloud computing?

4.

I progressi in quale area hanno consentito comunicazioni più rapide, rendendo possibile il modello di cloud computing basato sul noleggio delle risorse di calcolo da un data center remoto tramite Internet?