by George Reese

Dicembre 2010

Le componenti fondamentali del Cloud

Il mercato non ha ancora accettato una definizione univoca del cloud. Molti esperti hanno pareri discordanti. Non ci si deve pertanto sorprendere se le aziende non riescano a comprendere quali siano i passi fondanti per realizzare una infrastruttura di tipo cloud. E allora, quale può essere il consiglio migliore? Dimenticarsi innanzitutto le formule istituzionali e dogmatiche; focalizzarsi, invece, sulle componenti fondamentali che abilitano il cloud computing.

Virtualizazzione e Cloud

Molti professionisti It pensano che il cloud corrisponda alla virtualizzazione (o ancor peggio al time-sharing) e che il termine in sé sia stato partorito dalla fantasia del marketing. Nulla di tutto questo. Teoricamente il cloud può essere realizzato anche senza fare leva sulla virtualizzazione. Certo, nelle infrastrutture cloud più comuni la virtualizzazione ne rappresenta un fondamento, ma non ne è l’equivalente.
In un ambiente cloud il contributo della virtualizzazione è determinato dalla capacità di astrarre il livello fisico dell’infrastruttura e abilitare il provisioning automatico delle risorse It. Anche in una dimensione non cloud la virtualizzazione ha i suoi vantaggi. Consente per esempio di utilizzare una più ampia percentuale delle risorse rispetto a una infrastruttura fisica. Ciò che si deve tenere ben presente è che la virtualizzazione non rende di per sé disponibile l’automazione delle applicazioni, né l’erogazione on-demand e nemmeno una metrica di utilizzo.
La tecnologia che consente di trasformare l’infrastruttura virtualizzata in una vera cloud è la piattaforma. Abiquo, Cloud.com, Eucalyptus, Nimbula, OpenStack e VMware vCloud Service Director sono tutti esempi di piattaforme cloud. Quest’ultima nasconde agli utenti tutti gli aspetti del livello fisico dell’infrastruttura. Con i tool di virtualizzazione si possono definire i cluster dei server fisici che si vogliono assemblare e virtualizzare; all’atto della creazione di una virtual machine permettono poi di definire l’host cui si vuole associare una determinata virtual machine, così come installare un sistema operativo e procedere alla configurazione del network.
Le piattaforme cloud semplificano tutte queste operazioni abilitando una sorta di provisioning di un vero e proprio sistema cloud. La piattaforma permette infatti di selezionare una lista dei template dei sistemi operativi predefiniti e delle configurazioni network associando il tutto a una virtual machine che soddisfi le specifiche richieste. Si fa carico inoltre della gestione dell’host fisico sul quale viene installata la virtual machine e della capacità del data center stesso. Fornisce infine il catalogo dei template delle virtual machine e delle configurazioni.

Oltre il Cloud di base

Il cloud è di fatto costituito da una piattaforma che fa riferimento a una piattaforma di virtualizzazione. Tuttavia, in un ambiente di business reale, una soluzione di questo tipo non è sufficiente a soddisfare la maggior parte delle attività che vengono erogate dalla cloud: una volta costituita nelle sue forme primarie – piattaforma + infrastruttura – si dovrà infatti trovare il modo di gestirne l’infrastruttura e la configurazione.
Tool di infrastructure management come enStratus e RightScale permettono per esempio di integrare cloud private e pubbliche in una singola cloud virtuale. Supportano allo stesso tempo attività on-demand di provisioning e de-provisioning delle risorse, così come l’integrazione di queste ultime, soddisfando l’automazione dello stack applicativo. Le caratteristiche dei tool di infrastructure management includono funzionalità come auto-scaling, automated disaster recovery, backup management e cloud abstraction.
Il configuration management aiuta invece a compiere la transizione da ambienti It tradizionali a “devops”. Con quest’ultima si intende una filosofia operazionale che invece di essere costruita attorno a procedure e policy documentate, associa l’applicazione e il system management a script riusabili che supportano proven and repeatable automation.
Questo modello ben si adatta all’infrastruttura di cloud computing perché consente una completa programmazione delle attività relative al deployment delle risorse It. Uno strumento di gestione dell’infrastruttura usa tipicamente un tool come Chef o Puppet per abilitare il provisioning della piattaforma e soddisfare le necessità di deployment delle applicazioni.
Se si ha la necessità di eseguire il deployment di un’applicazione Lamp (Linux-Apache-MySql-Perl) in una cloud privata, saranno a questo scopo definiti i template delle virtual machine utilizzando una struttura basata sulla logica di virtualizzazione dell’infrastruttura. Il passo successivo è determinare l’architettura applicativa utilizzando un tool di gestione dell’infrastruttura. Quest’ultimo predispone l’allocamento delle virtual machine nella piattaforma cloud e, una volta acquisite, vengono disposte negli host fisici appropriati. Il cloud management tool comunica quindi al tool di configuration management di configurare ciascuna virtual machine al fine si supportare il pezzo dello stack Lamp associato. Infine, il cloud management tool effettua il deployment delle componenti applicative sulle virtual machine e il sistema è pronto per entrare in funzione.

Altre componenti Cloud

Quanto appena descritto può corrispondere a un livello di sofisticazione adatto alla maggior parte delle organizzazioni. Tuttavia, in ambienti dove è richiesta una forte flessibilità, o se si intendono mettere in produzione applicazioni che devono sostenere improvvisi e imprevedibili picchi di traffico, è bene valutare l’utilizzo di tool specifici che permettono di gestire il workflow ed effettuare test di scalabilità.