Cloud Computing: concetti e tecnologie

Creato il 11 febbraio 2013 da Roccosicilia @roccosicilia

Il Cloud Computing
Sul tema ho già scritto qualche post. In questa occasione vorrei esporre il tema da un punto di vista più macroscopico per spiegare cosa si intende per cloud computing e quali sono le tecnologie in campo per l’erogazione di servizi “cloud”.

Possiamo definire il cloud computing come quell’insieme di tecnologie necessarie all’erogazione di servizi in grado di ospitare ed elaborare dati grazie a sistemi e risorse informatiche collocate in reti remote, tipicamente nei Dataenter di provider che offrono tali servizi a fronte di un canone.

Nella pratica avviene che aziende specializzate nel settore informatico (come l’Application Service Provider presso cui lavora il sottoscritto) progettano e realizzano infrastrutture informatiche capaci di erogare un certo servizio attraverso la rete internet. La “novità” introdotta dal cloud computing è relativa al fatto che spesso questi servizi erano tipicamente realizzati all’interno della rete di chi li utilizza mentre nel contesto cloud tali servizi sono fruibili attraverso la rete internet (con diverse tipologie di accesso).

Ovviamente i servizi offerti possono essere molto diversi tra loro in quanto le esigenze informatiche dei clienti di questi servizi possono essere molto diverse. Il mondo del cloud si è dunque normato definendo una serie di categorie per classificare le diverse famiglie di servizi soprattutto in relazione al livello di integrazione e standardizzazione dello stesso. Le principali categorie, che prenderemo in esame nel dettaglio, ad oggi sono itentificate dai seguenti acronimi: IaaS, PaaS, SaaS.

Infrastructure as a Service
Questo paradigma è forse quello che sta alla base delle infrastruttura cloud, in qualche modo l’infrastruttura su cui poggia il servizio deve essere trasparente all’utente/cliente. Il servizio basa quindi il suo funzionamento su tecnologie in grado di mettere a disposizione dell’utenza una porzione delle risorse hardware della server farm in termini di CPU, RAM, spazio storage, network.

La tecnologia che meglio si sposa con questa esigenza è senza dubbio la virtualizzazione. In questo modo è possibile mettere a disposizione dell’utenza delle macchine virtuali a cui vengono erogate le risorse necessarie in forma di virtual hardware. Ovviamente non è sufficiente disporre di un virtual datacenter per erogare servizi IaaS, è anche necessario rendere il servizio utilizzabile da remoto all’utenza: il self provisioning.

Il concetto di self provisioning è descrivibile come la possibilità dell’utente gestire i propri ambienti virtuali e le risorse da essi allocate. In tal modo l’utente avrà la possibilità di utilizzare l’infrastruttura on-demand ed al provider verrà corrisposto un canone calcolato sulla base delle risorse effettivamente erogate all’utente (come i modelli “pay per use”).

In questo contesto il provider che eroga il servizio è responsabile dell’infrastruttura; oneri come la maintenance, l’updating, il patching e la gestione della farm sono demandati al provider il quale potrà specializzarsi su questi temi per erogare servizi sempre più efficienti. Ciò che gira all’interno delle macchine virtuali sarà invece di competenza dell’utente/cliente che le ha create e configurate. Ovviamente questo è il principio base ma è anche vero che monti provider sono anche system integrator (come nel caso della mia azienda) in grado di offrire consulenza estesa anche su diversi temi.

Software as a Service
Astraendo ancora di più si può pensare di erogare direttamente il servizio che serve all’utente invece dell’infrastruttura che gli permetterebbe di realizzarlo. Questo è il contesto del paradigma SaaS dove il provider identifica e realizza servizi informatici da erogare dalla propria infrastruttura: storage, servizi di posta e groupware, CRM, servizi personalizzati, ecc. Tecnicamente parlando tutti i servizi informatici sono erogabili tramite un’infrastruttura SaaS, è evidente che i provider erogeranno principalmente i servizi su cui c’è un interesse elevato da parte dell’utenza in modo da sviluppare servizi largamente utilizzabili.

A livello architetturale è facile immaginare che anche questo genere di servizi poggi su un sistema di virtualizzazione. In effetti il trend è questo ma la virtualizzazione non è un requisito architetturale in quanto l’erogazione di servizi legati ad un software può prescindere dal modello infrastrutturale (es: un SaaS CRM può essere erogato sia tramite un’infrastruttura basata su server fisici che su server virtuali).

Il funzionamento di tutta l’infrastruttura è, in questo caso, onere del provider in quanto l’utente finale non ha nessun coinvolvimento tecnico. Il provider si occuperà quindi della manutenzione dell’infrastruttura (come per il paradigma IaaS) e della manutenzione del software tramite cui viene erogato il servizio.

Platform as a Service
Il concetto è un po’ un ibrido, a tratti simile ai due paradigmi pocanzi presentati. PaaS si riferisce alla possibilità di mettere  a disposizione una piattaforma, ovvero un sistema preconfigurato con un certo servizio, applicazione o framework che l’utente potrà utilizzare al fine di realizzare un nuovo servizio. Per semplificare il concetto possiamo dire che corrisponde al paradigma IaaS a cui aggiungiamo degli strumenti specifici sviluppati dal provider. Un esempio abbastanza diffuso è l’erogazione di piattaforme LAMP / WAMP, il provider si prende carico di realizzare infrastruttura e piattaforma e l’utente la utilizza per erogre a sua volta un servizio.

La manutenzione dell’infrastruttura è ovviamente onere del provider e lo stesso vale per le piattaforme software erogate a servizio. E’ invece a carico del cliente tutto ciò che riguarda il software che poggia sulla piattaforma.

Modelli architetturali
Il concetto di cloud è sicuramente più facile da applicare ai modelli di business che si basano sulla vendita di servizi attraverso la rete internet, ma non necessariamente il contesto deve essere questo. Portato all’estremo, il concetto abbraccia tutte le forme di erogazione servizi che rendono all’utente trasparente l’architettura su cui questi poggiano. Possiamo quindi immaginare infrastruttura atte all’erogazione di servizi cloud all’interno delle aziende ove il cliente è l’utenza dell’azienda stessa, come possiamo immagine infrastruttura informatiche in parte interne all’azienda ed in parte esterne. In tal senso possiamo quindi parlare di Public Cloud, Private Cloud e Hybrid Cloud.

Con Public Cloud ci riferiamo a servizi cloud eserciti attraverso la rete internet. L’infrastruttura tramite cui tali servizi vengono erogati è interamente remota rispetto all’utente che ne beneficia. Il modello si può ovviamente applicare a tutte le tipologie di servizio precedentemente presentate (IaaS, PaaS, SaaS).

Con Private Cloud il contesto diventa geograficamente locale rispetto all’utente, l’infrastruttura è quindi fisicamente installata presso la sede ove sono presenti gli utenti che utilizzano i servizi cloud “interni”. Solitamente questo genere di servizi non viene erogato verso l’esterno dell’azienda se non tramite connessioni private sicure come le VPN.

Hybrid Cloud nasce dall’unione delle due esigenze e descrive le architettura che, per diverse esigenze, erogano servizi cloud utilizzando una combinazione di sistemi in Private Cloud ed in Public Cloud. Un esempio concreto di questo contesto sono le infrastruttura di Stretched Cluster o Disaster Recovery ove uno dei due siti (di solito quello di DR) è presso un’infrastruttura cloud erogata da un ente esterno all’azienda cliente a cui resta l’onere di rilasciare i servizi interni in modalità Private Cloud.