Tecnologia e innovazione al servizio delle aziende

Cloud Computing

Nonostante il Cloud Computing si sia affermato, oltre oceano, da diversi anni, in Italia, siamo abbastanza indietro nella sua adozione. Dalle varie survey eseguite sul territorio italiano si evidenziano alcune preoccupazioni, espresse dai possibili clienti, sul suo utilizzo come, ad esempio:

  • Mancanza di fiducia nel provider: cosa fa dei nostri dati? Rispetta le normative sulla privacy e sulla sicurezza? Le prestazioni sono veramente quelle dichiarate?
  • Mancanza di “conoscenze” su cosa sia effettivamente il Cloud Computing: per molte aziende esso non è altro che la possibilità di utilizzare macchine virtuali in sostituzione di server fisici. Queste aziende sono convinte essere sul cloud ma, in realtà, non lo sono.
  • Problemi prestazioni dovuti ad una infrastruttura di rete non adeguata alle esigenze del Cloud: l’Italia è il fanalino di coda, in Europa, per l’adozione di linee internet ad alta velocità.

In realtà, il Cloud, ha un primato tutto italiano: l’utilizzo non autorizzato di servizi Cloud in azienda: quante aziende hanno policy che guidano l’utilizzo di strumenti di file sharing (Dropbox, Google Drive, One Drive,…), di servizi social (Twitter, Facebook, …) e di applicazioni mobile (sono le principali fruitrici di servizi Cloud)? L’utilizzo non controllato di questi strumenti apre “porte” verso l’esterno attraverso le quali, anche involontariamente, possono essere diffusi documenti e informazioni riservate.

Quando si parla di Cloud (in realtà bisognerebbe usare il femminile… ma è ormai prassi usare il maschile per cui mi adeguo) si vanno ad “aggregare” fra loro numerose tecnologie e numerosi paradigmi tra i quali: virtualizzazione, elaborazione distribuita, SOA, mobile,… Il seguente schema riassume questo concetto.

cloud01

Visto che non esistono standard su “come deve essere fatto un cloud”,  ci sono molti punti di vista differenti su “cosa esso sia”. Per un consulente, non è quindi possibile dire ad un cliente “tu non stai facendo cloud ma stai facendo altro” in quanto il cliente potrebbe aver adottato una “sua” definizione derivata dalle tante presenti in rete.

Per ovviare a questo problema, il consulente, deve adottare una definizione di Cloud che sia il più possibile condivisa e deve adattarla alle esigenze dei suoi clienti. In pratica esistono tantissimi cloud differenti, ognuno con le sue regole e con le sue peculiarità. La definizione, attualmente, più diffusa è quella rilasciata dal NIST (National Institute of Standarda & Tecnologies)  americano che è anche stata adottata dall’Unione Europea per l’implementazione di linee guida e raccomandazioni su come implementare un cloud sicuro a livello europeo.

cloud02

Il NIST dice che “il cloud è un modello per l’elaborazione distribuita, ubiqua, elastica e altamente scalabile“. In pratica, secondo il NIST, il cloud non è una tecnologia (esistono tecnologie abilitanti alla creazione del cloud) e non esistono applicazioni cloud (esistono applicazioni esposte sul cloud).

La definizione del NIST dice che il cloud è un modello costituito da:

  • 3 Modelli di servizio che un cloud provider può erogare ai propri clienti:
    • IaaS (Infrastructure as a Service): è un modello di fornitura in cui un’azienda esternalizza le risorse computazionali (CPU, memoria, storage, reti,…), compreso lo stoccaggio e la gestione delle stesse. Il fornitore dei servizi è il proprietario dell’attrezzatura ed è il responsabile della sua gestione e del suo mantenimento. Il cliente, di solito, paga in base all’utilizzo delle risorse;
    • PaaS (Platform as a Service): è un modello in cui un’azienda esternalizza l’utilizzo delle piattaforme di sviluppo (application server, DBMS,…) compresa la gestione delle stesse. Il fornitore dei servizi è responsabile della gestione degli stessi, dei backup, della sicurezza, degli upgrade,… L’utente, di solito, paga in base alla quantità di risorse richieste ed, eventualmente, in base alla potenza di calcolo erogata. Ci sono molti rischi di lock-in in quanto i fornitori di piattaforma tendono ad introdurre servizi e strumenti proprietari;
    • SaaS (Software as a Service): è un modello di distribuzione dove le applicazioni sono ospitate sui server di un provider e vengono fornite ai clienti tramite la rete (tipicamente Internet); il cliente paga un canone per l’utilizzo del software.
  • 4 modelli di distribuzione dei servizi:
    • Cloud pubblico: i servizi sono aperti al pubblico tramite la rete Internet e sono forniti da un provider (Cloud provider, azienda,…). Qualsiasi cliente, a patto di pagare per l’utilizzo dei servizi, può accedere al Cloud. I dati, relativi al singolo utente, rimangono privati a meno che l’utente stesso non decida di renderli pubblici; ogni cliente ha una sua partizione per i dati (tenant) e può personalizzare le applicazioni;
    • Cloud privato: l’infrastruttura Cloud è disponibile per la sola azienda e i dati sono memorizzati in tale infrastruttura; può essere gestita direttamente dall’azienda o da un fornitore esterno (in questo caso il fornitore fa hosting del cloud); tutte le risorse del Cloud sono a disposizione dell’azienda (banda di rete, potenza CPU,…) e non sono condivise con altri clienti; l’azienda ha il pieno controllo (elasticità) sul suo Cloud e può gestire, in modo autonomo, tutte le problematiche di sicurezza, prestazioni, affidabilità, …;
    • Cloud ibrido: è la combinazione fra Cloud pubblici e privati che interoperano fra loro; e informazioni non critiche, come ad esempio il portale web dell’azienda, possono essere pubblicate sul Cloud pubblico; le informazioni riservate, mission critical,… vengono, invece, pubblicate sul Cloud privato dell’azienda; le applicazioni presente sul Cloud Pubblico e quelle presenti sul Cloud Privato, possono interagire fra loro tramite servizi;
    • Cloud communitario: sono gestiti da un gruppo di utenti o aziende che condividono interessi e requisiti o che hanno una missione comune; i dati e le applicazioni sono condivisi fra tutti i membri della comunità (è comunque possibile profilare gli utenti in modo da garantire l’accesso sicuro a informazioni riservate)… non esistono quindi partizioni private di dati; il cloud è gestito in modo comunitario.
  • 5 caratteristiche essenziali senza le quali non si ha un “vero” cloud:
    • on-demand self service: l’utilizzatore del Cloud può richiedere e allocare le risorse a lui necessarie senza nessuna interazione umana con il service provider; ovviamente, all’attivazione del Cloud, l’interazione con il service provider è necessaria per le operazioni di registrazione dell’utente… questa proprietà è relativa al funzionamento runtime.
    • broad network access: i servizi forniti dal Cloud devono essere accessibili tramite la rete (di solito Internet) tramite:
      meccanismi e protocolli standard e in modo indipendente dal dispositivo di fruizione (browser, applicazione, mobile platform,…).
    • resource pooling: il service provider deve fornire le risorse con un modello multi-tenant tramite il quale: allocare le risorse in base all’effettiva necessità del cliente; personalizzare le risorse (es. il contenuto di una tabella) in base alle necessità del cliente; gestire le risorse in modo indipendente dalla loro locazione fisica;
    • rapid elasticity: le risorse devono poter scalare in modo automatico in base alle esigenze del cliente. Sono possibili diversi meccanismi: l cliente, in base alle sue necessità, varia l’allocazione delle risorse tramite una console di amministrazione fornita dal service provider; il sistema provvede all’allocazione automatica delle risorse in base all’effettivo utilizzo delle stesse da parte del cliente.
    • measured services: il service provider deve monitorare costantemente l’utilizzo delle risorse e fornire al cliente gli strumenti necessari per la verifica dei consumi in modo da garantire la massima trasparenza nell’utilizzo del sistema; in base all’effettivo utilizzo delle risorse, di solito, vengono addebitati, al cliente, i costi di utilizzo del Cloud.

In base a tale definizione si capisce come ma molte aziende che “credono” di essere sul Cloud, in realtà non lo sono.

Durante la mia attività lavorativa, in ambito Cloud, mi sono occupato, per diversi nostri clienti, della progettazione dei portali di self provisioning, della progettazione dell’infrastruttura di autenticazione distribuita tramite OAuth, SAML e XACML utilizzando strumenti di identity management opensource e commerciali e delle problematiche di monitoraggio delle infrastrutture Cloud, in particolare, per quanto riguarda l’erogazione di funzionalità di elaborazione distribuita basata su Map Reduce.