Cloud Computing: cos’è e quali sono vantaggi e svantaggi

La prima cosa che salta all’occhio, a chi vuole addentrarsi nell’argomento e comprendere le offerte attualmente presenti sul mercato, è che ci sono diverse definizioni di cloud computing. C’è chi fornisce una definizione generica e chi si addentra nella descrizione dei servizi minimi che una infrastruttura cloud deve necessariamente offrire per essere definita tale.

Non essendo stato definito alcuno standard de iure, sono dell’idea che la definizione più appropriata sia quella generica.

Di seguito trovate la mia definizione di cloud computing, che ho formulato tempo addietro:

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.

Perché diversi professionisti del settore non sono d’accordo con le definizioni generiche? La risposta è molto semplice: così come è formulata, la definizione non descrive un servizio nuovo, ma può essere applicata alla maggior parte dei servizi attualmente erogati dai provider o dai CED privati.

Quindi il “cloud computing” è una trovata commerciale, escogitata dagli esperti di marketing, per svecchiare gli attuali servizi offerti? Niente di più sbagliato, perché il concetto fondamentale, alla base dei servizi cloud, è da ricercare nell’applicazione completa dell’Utility Computing.  Pagare solo quanto consumato in termini di cicli cpu/ram/spazio disco, proprio come siamo abituati a fare con l’energia elettrica o l’acqua, è indubbiamente un vantaggio: costi di start-up dell’infrastruttura quasi pari a zero e possibilità di scalare gradualmente a seconda delle necessità (on demand).

Nella definizione meno generica, invece, c’è chi dice che l’appellativo di servizio cloud può essere dato solo ed esclusivamente a quei servizi che poggiano su infrastrutture ridondate (eventualmente anche in geoclustering), che facciano uso massiccio della virtualizzazione, etc.

Molti, fuorviati dalla definizione più stringente e meno generica, pensano che basti leggere l’aggettivo “cloud” per essere sicuri di avere i propri dati in cassaforte, a basso prezzo e sempre disponibili. Ciò non è affatto vero e, pertanto, è necessario leggere attentamente i contratti e chiedere ai fornitori quali misure sono prese per evitare problemi in caso di rotture hardware o, peggio ancora, se si verificano perdite di dati.

Non mi stancherò mai di scrivere e ricordare che l’esecuzione periodica di backup è sempre un’operazione fondamentale: i piani di backup vanno progettati di pari passo con la progettazione e l’evoluzione dell’infrastruttura IT, sia essa poggiata sulle nuvole o sulla terra ferma.

IaaS, PaaS, Saas: le tipologie di servizi cloud

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:

Cloud Computing Stack IaaS PaaS SaaS

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).

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 e gli svantaggi del Cloud Computing: perché utilizzare un servizio cloud?

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

  • Dal punto di vista economico:

    • Abbassamento del TCO (Total Cost of Ownership): risparmio sull’acquisto, installazione, manutenzione e dismissione di hardware e software;
    • 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à;
    • Possibilità di 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:

    • 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;
    • Dati ed applicazioni accessibili in mobilità: per la definizione stessa di cloud computing non potrebbe essere altrimenti.
    • 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 fisica di materiale informatico nell’azienda.
    • 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 potrebbero presentarsi nel data center.

Le tecnologie alla base dei servizi cloud ed il relativo business model non hanno ancora raggiunto la maturità, infatti i reparti di ricerca e sviluppo dei provider stanno ancora lavorando attivamente per dare ai clienti il livello di servizio e la qualità richiesta dai processi aziendali più critici. I servizi cloud, inoltre, poggiano su una infrastruttura hardware estremamente complessa: più un sistema è complesso, più diventa difficile comprenderne e gestirne i rischi nelle fasi di implementazione e di dispiegamento.

Gli svantaggi nell’adottare una soluzione cloud lato utente possono essere riassunti nei seguenti punti:

  • Sicurezza

    • Non è possibile avere il pieno controllo dei dati aziendali: i principali asset di ogni azienda sono le informazioni relative ai clienti, ai prodotti ed alle procedure aziendali!
    • Non ci sono standard di sicurezza ratificati per i sistemi cloud.
    • La collocazione fisica dell’hardware e del software è sconosciuta: ispezioni e procedure di audit sono difficoltose da eseguire.
    • Rischio di perdita dei dati causati da rotture hardware o problemi ad uno degli strati di astrazione software.
  • Dipendenza (perdita di controllo):

    • Nessuna influenza sulla qualità, la frequenza e sulle tempistiche degli interventi di manutenzione operate dal provider.
    • Nessuna o poca conoscenza in merito alle procedure operate dal provider; ad es. esecuzione di backup, ripristino dei dati e procedure di disaster recovery.
    • Migrazione verso un altro provider difficoltosa: non ci sono standard che uniformino il mercato.
    • La misurazione delle risorse utilizzate e delle attività utente è completamente nelle mani del provider.
  • Flessibilità

    • E’ impossibile richiedere personalizzazioni dell’infrastruttura.
    • L’implementazione di tecnologie innovative è dettata dal provider, che potrebbe rallentarne l’adozione a seconda delle decisioni prese dalla sua governance aziendale.
  • Costi

    • Costi indiretti (ad esempio il rispetto delle regolamentazioni/leggi oppure la gestione dei backup e dei piani di disaster recovery)
    • C’è il rischio che i costi dell’infrastruttura aumentino imprevedibilmente in futuro (questo è uno svantaggio nel momento in cui la migrazione verso un altro provider non è affatto trasparente)
  • Conoscenze:

    • Sono richieste conoscenze maggiori per implementare e gestire i contratti SLA con il provider.
  • Integrazione:

    • L’integrazione con le periferiche “locali” (come le stampanti o altri device USB) e con apparati di sicurezza è complessa (in alcuni casi impossibile).

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.

Conclusioni

Il Cloud Computing, se sfruttato in maniera opportuna, può dare significativi benefici, a patto che si tengano ben presente alcuni punti:

  • Bisogna comprendere a quali rischi si va incontro, soppesando con estrema attenzione i possibili vantaggi e svantaggi per la propria azienda.
  • L’utilizzo di una infrastruttura cloud richiede modifiche nell’organizzazione aziendale e/o del reparto IT (cambio di procedure, richiesta di nuove conoscenze, etc)
  • Bisogna studiare la documentazione messa a disposizione del provider scelto e comprendere le tecnologie che sono alla base della sua infrastruttura: solo in questo modo sarà possibile sfruttarne appieno i vantaggi.
  • E’ caldamente consigliato formulare e mantenere aggiornata una “exit strategy” nel caso in cui si renda necessario cambiare provider.
  • Si deve cercare di scegliere il provider che implementa quanti più standard open sia possibile.

NB: Questo articolo era stato precedentemente pubblicato su MyCloudBeans ( http://www.mycloudbeans.com/content/cloud-computing-vantaggi-e-svantaggi-clienti ), blog tematico che curavo in precedenza. Nel corso degli anni, l’articolo è stato citato in diverse tesi universitarie, paper e presentazioni e, pertanto, ho ritenuto utile ripubblicarlo.

Ecco alcune tesi/presentazioni in cui risulta citato l’articolo: