Cloud Computing: cos’è e quali sono le aspettative attese e disattese fino ad oggi

Leggendo la comune definizione che viene data di cloud computing (Wikipedia), e possibile comprendere come non si faccia altro che parlare di tecnologie gia presenti ed impiegate da anni all'interno dei CED aziendali e delle PA. Riprendo in questo articolo la definizione generica da me scritta in questo post sulla community di HostingTalk.it: "Per cloud computing si intende l'insieme di risorse hardware, del middleware (layer di astrazione alle risorse hardware) e del software applicativo, che fornisce un determinato set di funzionalita fruibili mediante l'uso della rete." In questo articolo si prendono in esame i sistemi di cloud computing pubblici, ovvero quelli forniti da societa terze, che, pertanto, permettono all'utente finale di focalizzare la propria attenzione sul proprio core business, senza doversi preoccupare della implementazione e gestione dell'infrastruttura (hardware e software) necessaria.

Leggendo la comune definizione che viene data di cloud computing (Wikipedia), è possibile comprendere come non si faccia altro che parlare di tecnologie già presenti ed impiegate da anni all’interno dei CED aziendali e delle PA.

Riprendo in questo articolo la definizione generica da me scritta in questo post sulla community di HostingTalk.it:

“Per cloud computing si intende l’insieme di risorse hardware, del middleware (layer di astrazione alle risorse hardware) e del software applicativo, che fornisce un determinato set di funzionalità fruibili mediante l’uso della rete.”

In questo articolo si prendono in esame i sistemi di cloud computing pubblici, ovvero quelli forniti da società terze, che, pertanto, permettono all’utente finale di focalizzare la propria attenzione sul proprio core business, senza doversi preoccupare della implementazione e gestione dell’infrastruttura (hardware e software) necessaria.

Le tipologie di servizi cloud offerte

Partendo dalla definizione generica di cloud computing, sono scaturite le definizioni dei tre servizi che, solitamente, vengono forniti dalle aziende del settore: IaaS (Infrastructure as a Service), PaaS (Platform as a Service), SaaS (Software as a Service).

Essi si distinguono per il livello a cui ognuno fornisce all’utente finale accesso all’architettura cloud.
Nell’immagine che segue è schematizzata l’architettura di un sistema di cloud computing, con evidenziate le componenti presenti nei tre servizi nominati:

Schermata 2009-11-19 a 12.30.39.png

Dallo schema è possibile constatare come gli IaaS siano i servizi che permettono di avere l’accesso al livello più basso della cloud. Un’azienda fornitrice di IaaS mette a disposizione una infrastruttura hardware remota e ci fornisce la documentazione necessaria affinchè la nostra piattaforma software possa utilizzarne le risorse.

Volendo fornire un esempio concreto, un provider che mette a disposizione la propria infrastruttura, per l’esecuzione di virtual machines e per la loro gestione, è un IaaS Provider (praticamente tutti i fornitori di VPS che facciano uso di VMWare/XEN e che permettono all’utente finale di usare le proprie immagini).

Sono identificabili come PaaS, invece, tutti i servizi che ci mettono a disposizione una piattaforma pronta per il deployment delle nostre applicazioni.

E’ possibile indicare come PaaS Provider gli attuali fornitori di web hosting; l’utente finale, infatti, non deve occuparsi della gestione software/hardware, ha la possibilità di usare librerie e framework preinstallati e di essere subito operativo dopo aver caricato sull’infrastruttura del fornitore la propria applicazione.

L’esempio fornito è ancora più calzante se si pensa a quei provider che forniscono soluzioni pronte all’uso, dove è necessario effettuare solo il deployment dei moduli applicativi utilizzati (ad es. provider che forniscono installazioni di JBOSS/WebShpere, dove l’utente finale deve solo effettuare il deployment della Logica di Business e del Layer di presentazione).

I SaaS, infine, sono i servizi che mettono a disposizione dell’utente finale un software completo, al più configurabile, che sopperisce a determinate richieste. Le web mail, conosciute ed utilizzate da tutti, sono un esempio di SaaS, perchè permettono di poter gestire le proprie email completamente dal web. Un altro chiaro esempio di SaaS, infine, è dato dai software da ufficio della suite Google Docs.

In definitiva, spostarsi nella cloud significa abbracciare il concetto di BPO (Business Process Outsourcing) con tutti i pregi ed i difetti che ne conseguono.

I vantaggi nell’usare un sistema cloud

Il lettore più attento avrà sicuramente già immaginato quali sono i principali pregi lato utente dell’utilizzo del cloud computing (e del modello BPO in generale), che sono riassunti di seguito.

  • Dal punto di vista economico:
  1. Abbassamento del TCO (Total Cost of Ownership): risparmio sull’acquisto, installazione, manutenzione e dismissione di hardware e software;
  2. Maggiore flessibilità: nel caso in cui servano maggiori o minori risorse è possibile effettuare un adeguamento contrattuale, cosa impossibile o limitata in caso di infrastruttura di proprietà;
  3. E’ possibile focalizzarsi sul proprio core business: non è necessario assumere personale specializzato che si occupi della gestione dell’infrastruttura, essendo quest’ultima migrata nella cloud.
  • Dal punto di vista tecnico:
  1. Maggiore scalabilità: nel caso in cui servano maggiori risorse (per picchi o quant’altro) il sistema di gestione e monitoring della cloud ha la possibilità di allocare le risorse necessarie a fronte della nuova richiesta;
  2. Dati ed applicazioni accessibili in mobilità: per la definizione stessa di cloud computing non potrebbe essere altrimenti.
  3. Maggiore sicurezza: tutti i dati sono centralizzati e sottostanno alle policy di sicurezza centralizzate create; pertanto si annulla la possibilità di una fuga di dati dovuta alla sottrazione di materiale informatico nell’azienda.
  4. Possibilità di beneficiare di piani di Disaster Recovery: se la società scelta per la fornitura dei servizi cloud lo prevede, è possibile mettersi al sicuro da eventuali problemi, che possono affliggere il data center dove sono raccolti i nostri dati, disponendo di sedi secondarie in cui sono salvati ed elaborati i nostri dati.

Sono da menzionare, inoltre, i non meno importanti benefici apportati all’ambiente: utilizzando infrastrutture cloud centralizzate è possibile ridurre il consumo energetico attraverso l’utilizzo di sistemi ad alta efficienza e/o costruendo datacenter in luoghi ad hoc (si pensi alle web farm dove si fa uso del free cooling, aiutate dal clima rigido).

Gli svantaggi e i problemi causati da una architettura cloud

Affidare la propria infrastruttura a servizi cloud non ha solo pregi, ma anche difetti che, a mio avviso, attualmente non permettono ad una azienda di poter pensare di smantellare completamente la propria infrastruttura IT a favore dell’utilizzo del cloud computing. Si pensi a:

  • La sicurezza dei dati: non avendo più sotto controllo l’infrastruttura, dobbiamo fidarci di quanto riferitoci dal nostro provider, contando sulla loro buona fede e sulla buona fede dei suoi tecnici; tecnici che avrebbero potenzialmente accesso ad un enorme mole di dati (anche sensibili ed eventualmente coperti da segreto industriale).
  • La qualità del servizio: L’infrastruttura di un provider che fornisce servizi cloud è, naturalmente, molto complessa; più un sistema è complesso, più diventa difficile comprendere e gestire i rischi sia nelle fasi di implementazione che di gestione e utilizzo. Tutto ciò si traduce in una maggiore possibilità di avere problemi tecnici che portino a disservizi. Essendo impossibile garantire ai clienti che l’infrastruttura sia bug-free, un provider serio dovrebbe necessariamente prevedere un piano di disaster recovery, che permetta di spostare tutto il workload da una infrastruttura ad un’altra (affrontando ulteriori ingenti investimenti).

Oltre a quanto descritto, bisogna pensare anche che il mantenimento di una infrastruttura complessa e solida non è affatto poco costoso; ciò comporta che le percentuali di utilizzo dell’infrastruttura debbano essere alte per avere profitti.

Allo stesso tempo, si pensi alla millantata possibilità di scalabilità estrema che alcune società vantano per IaaS/PaaS: dato che la richiesta di risorse è allocata on-demand, questo significa dover lavorare sempre con un discreto margine di risorse non allocate, il che si traduce in un ingente dispendio di denaro; cosa che cozza con quanto affermato ad inizio paragrafo.

Per quanto affermato è facilmente intuibile che avere una infrastruttura veramente scalabile, ridondata ed affidabile non è possibile con un basso investimento e/o fornendo i servizi a prezzi bassi come quelli attuali.

Della stessa mia opinione è anche il CEO di HP, Mark Hurd, che, ad Ottobre, interrogato sulle possibilità offerte dal cloud computing, ha risposto che HP non esporrebbe mai qualcosa che non sia sicuro al 100% all’esterno del perimetro dell’azienda (We (HP, ndr) wouldn’t put anything material in nature outside the firewall) .

Un esempio concreto di IaaS/PaaS: Amazon AWS

Molte sono le società che si sono affacciate sul mercato del cloud computing per fornire IaaS e PaaS; tra queste, Amazon, è quella che ha riscosso maggiore successo e che conferma quanto da me scritto in precedenza.

Prendendo visione del contratto di fornitura dei servizi, si apprende che:

a.    Amazon non è responsabile per qualsiasi perdita (dati, profitto, etc) e, comunque, in caso di richiesta di risarcimento danni, non si potrà chiedere più di quanto si è pagato attualmente per il servizio (punto 11.8)

b.    Il servizio può subire downtime in qualsiasi momento, per qualsiasi motivo (inclusi guasti hardware, mancanza di energia elettrica, manutenzione) (punto 7.1, 11.5)

c.    Il servizio può essere terminato da Amazon in qualsiasi momento, per qualsiasi ragione, dando dai 5 ai 60 giorni di preavviso (punto 3.3.2);

d.    Un task può essere bloccato o cancellato a loro discrezione senza che Amazon sia responsabile di perdita o la corruzione dei dati (punto 5.10.5).

Per quanto concerne la capacità di scalare in quanto a risorse, nel momento in cui scrivo, viene posto un limite per ogni istanza EC2 pari a quelle di un singolo nodo di computazione; pertanto, non è possibile scalare oltre 8 core e 16/32GB di ram.

Si è preso come esempio Amazon, ma, ad oggi, anche gli altri grandi player del settore non si discostano di molto ed, oggettivamente, date le scarse garanzie fornite, sarebbe da folli spostare la propria infrastruttura IT nella cloud.

SaaS, la vera rivoluzione del cloud computing

Fermo restando che i pregi ed i difetti precedentemente descritti valgono anche per i SaaS, penso che in futuro vedremo sempre più il proliferare di ASP (Application Service Provider).

Fornire un applicativo finito all’utente finale, senza che egli abbia accesso all’infrastruttura sottostante, permette al Provider di poter progettare e gestire al meglio l’infrastruttura e l’applicativo.

Un software, concepito per essere utilizzato come servizio dall’utente finale, è progettato seguendo una architettura multi-tenant, la quale permette di avere, da una parte un applicativo base comune a tutti i clienti, dall’altra tutti i dati e le personalizzazioni al software di ogni cliente.

Suddetto approccio porta i seguenti benefici di gestione:

  • Isolamento dei dati utente: ogni utente ha una propria base dati, isolata da quella degli altri clienti.
  • Backup semplificato: è possibile effettuare backup semplicemente salvando i dati di ogni cliente, non è necessario salvare intere immagini come nel caso di VM.
  • Clustering semplificato e scalabilità: l’applicativo di base può essere facilmente messo in cluster per bilanciare il carico e per avere sistemi ad alta disponibilità (HA).

Naturalmente i SaaS Provider, avendo essi stessi progettato il software, ed avendo certezza di come esso utilizzi l’infrastruttura, possono fornire maggiori garanzie a costi inferiori all’utente finale rispetto a chi offre PaaS/IaaS.

Si conclude qui questo articolo introduttivo, spero di aver chiarito le idee sui concetti fondamentali del cloud computing; per domande e commenti vi invito ad utilizzare l’apposita area del forum di HostingTalk