I Quaderni del Cloud : Cosa è il Cloud Computing

Se dovessi riassumere il Cloud Computing in una sola breve sentenza direi :

 

“Il Cloud Computing rappresenta un modello di utilizzo dell’IT, dall’infrastruttura alle applicazioni, tramite servizi”

mentre in versione più estesa:

 

“Il Cloud Computing rappresenta un modello di utilizzo dell’IT, dall’infrastruttura alle applicazioni, che vede combinati alcuni trend tecnologici consolidati come la virtualizzazione, la service orientation e l’aderenza agli standard con concetti di business come pay-per-use, self-provisioning e riduzione/annullamento del Capex”

Per capire cosa sia in pratica il Cloud Computing però partirei da una tassonomia dei servizi e funzionalità del Cloud Computing oramai condivisa da tutto il mercato:

  • IaaS, Infrastructure as a Service, rappresenza lo strato del cloud di più basso livello e permette di avere come servizi il networking, Server, storage ecc..
  • PaaS, Platform as a Service, invece rappresenta una vera e propria piattaforma applicativa (o infrastruttura applicativa) su cui sviluppare applicazioni “tradizionali” o in modalità SaaS. Tale piattaforma è disponibile e gestibile tramite servizi.
  • SaaS, Software as a Service, è l’erogazione di applicazioni erogate ad end-users esterni capaci di self-provisioning e adattamento alle richieste degli utenti.

 

image

 

Questa tassonima deve essere vista quindi come una evoluzione e non una rivoluzione. Come fino ad oggi abbiamo lavorato on-premises (ovvero con server installati in casa) da oggi potremo lavorare con lo stesso approccio ma supportati dal modello del cloud computing che ci darà una garanzia di maggiore scalabilità,disponibilità on demand, condivisione di risorse (se richiesto) ed infine un modello economico più dinamico.

 

image

Tra l’altro progettare per il cloud significa usare gli standard di Internet già consolidati e conosciuti perchè ad oggi il cloud di per sé non ha (ancora) nessun proprio standard.

 

C’è però molta confusione

Oggi c’è molta confusione sul tema del Cloud! A mio avviso questa confusione è causata principalmente da tre fattori che ho ordinato per importanza:

  1. Il Cloud ha 3 dimensioni diverse (IaaS,PaaS e SaaS) con 3 diverse tipologie di audience!!
    1. IaaS si rivolge prevalentemente a sistemisti e architetti di infrastruttura.

    2. PaaS si rivolge prevalentemente a sviluppatori ed architetti di soluzioni.

    3. SaaS si rivolge ad utenti finali.

      Quindi, parlando di Cloud è essenziale capire a quale dimensione ci si stia riferendo perchè i messaggi e le considerazioni possono essere molto, ma molto diverse!!
      A questo si aggiunge il distinguo tra Private Cloud e Public Cloud che vede le 3 dimensioni precedenti deployate in Data Center privati o pubblici gestiti dai vendor.Anche in questo caso molte considerazioni divergono se si parla di Private o di Public Cloud!!
      Anche sul concetto di Private e Public credo ci sia spazio ad una precisazione : spesso si sente parlare di n public clouds. In realtà, a mio avviso, il public cloud è uno e uno solo mentre ci sono diversi fornitori di infrastrutture, piattaforme e servizi per il public cloud come ad esempio Microsoft, Google, Amazon...E’ come se si dicesse l’azienda x ha la sua internet mentre l’azienda y ha la propria internet :-)

  2. Spesso si identifica il concetto di Cloud Computing con quello di Hosting. Nulla di più sbagliato !! (ne parlo espressamente più avanti)
  3. Ogni vendor o fornitore di soluzioni Cloud presenta una propria declinazione di cosa sia il Cloud.
    Questo è sia un bene che un male. Un bene perchè ogni azienda porta la propria visione ed arricchisce il mercato, dall’altro è un male perchè soprattutto all’inizio questo crea confusione.
    Vi ricorda nulla il “ginepraio” intorno alla definizione di ESB? J Fortunatamente non siamo a questi livelli ...

Ad ogni modo, se facciamo uno sforzo ed andiamo oltre le singole definizioni dei players, ci accorgiamo che molte caratteristiche sono facilmente identificabili e comuni a tutti :

  • Resource pooling : poter disporre di risorse condivise e quindi condividerne anche i costi, ovvero un modello multi-tenant.
  • Elasticity : capacità di scalare verso l’alto ma anche verso il basso a seconda di diversi fattori esterni e per periodi di tempo definibili dall’utente garantendo lo stesso modello di business.
  • Pay-per-use : possibilità di pagare solo quando il servizio serve ed è in funzione.
  • On-demand self-service : scegliere quali servizi usare e quando.
  • Measured service : tutte le risorse, dallo IaaS al SaaS sono controllate e monitorate ad uso sia del provider che del consumer.
  • Broad network access : accesso ai servizi del cloud da qualsiasi dispositivo tramite l’uso di standard.

Quali sono i principali players?

IaaS

Vmware vCloud (ESX,Vcenter),Amazon Web Services, Microsoft (Dynamic Data Center Tookit for Hosters), GoGrid,Rackspace,…

PaaS

Microsoft Windows Azure, Google AppEngine,Force.com,LongJump,Appian…

SaaS

Microsoft BPOS, Microsoft Dynamics, Salesforce.com,Google Docs,LotusLive,…

 

On-Premises – Hosting - Cloud Computing. Quali le differenze?

Come dicevo in precedenza parte della confusione nasce dalla non chiara distinzione tra Hosting e Cloud. Ma vediamo quali sono le caratteristiche dei tre modelli di gestione dell’ IT per capirne le differenze.

 

On-Premises

- Elettricità, Connettività, HW, SW, Operations presso la propria Server Farm.

- Completo Controllo

- Completa responsabilità

- Capacità di erogazione “fisse”.

- Capitale iniziale per l’infrastruttura e la messa in opera

Hosting

- Affitto di macchine HW+SW e della connettività

- Minor controllo rispetto al on-premises

- Minori responsabilità per il cliente rispetto al on-premises

- Minori capitali iniziali

- Più flessibilità

- Costi fissi per capacità di erogazione “fissa” anche quando le macchine non fanno nulla!

Cloud Computing

- Infrastruttura multi-tenant e condivisa.

- Resource Pooling, Isolamento come caso specifico.

- On-Demand Self-service ovvero capacità di richiedere ciò di cui si ha bisogno

- Indipendenza dalla topologia di rete

- Elasticità : capacità di richiedere maggiori risorse solo quando necessarie.

- Servizi sotto controllo

- Pagamento dei servizi solo quando servono

 

Quando usare il Cloud?

Sebbene dedicherò vari post sull’argomento voglio solamente dare qualche spunto pratico per capire meglio le aree di utilizzo del cloud:

  • Scenari che richiedono alta affidabilità
    • Es: Applicazioni SaaS,
  • Applicazioni con carichi variabili
    • Es: Applicazioni di ticketing.pensiamo ad una offertissima per una partita o per un concerto... durante alcuni giorni avremo una demand altissima, mentre poi il flusso tornerà normale.
    • Applicazioni on-premises che occasionalmente hanno bisogno di extra capacity ovvero scenari dove “accendo” l’extra power fornita dal cloud solo quando mi serve.
  • Scenari che richiedono una scalabilità massiva
    • Es: Applicazioni alla Web 2.0
  • Applicazioni di breve durata
    • Es: supporto a campagne marketing focalizzate in un periodo limitato
  • Applicazioni che necessitano di processing parallelo
    • Es: applicazioni finanziarie
  • Scenari di business da testare
    • Es: applicazioni che avranno successo o falliranno nel giro di poco tempo come ad esempio start-up o addirittura lancio di progetti di una azienda consolidata che non vuole investire su HW e SW sul progetto...
  • Applicazioni che non rientrano in un data center aziendale
    • Es: Joint Venture, acquisizioni, fusioni
  • Scenari di integrazioni tra internet diverse
    • Es: Joint Venture, acquisizioni, fusioni, B2B

La lista potrebbe essere molto più lunga, ma spero di aver dato un’idea...

 

Concludendo

Vorrei concludere questo primo post della serie sul cloud computing con alcune riflessioni spot molte delle quali saranno oggetto di post dedicati:

  • Nel cloud, a differenza dei modelli on-premises e hosting, quello che compriamo sono i servizi (di infrastruttura, di piattaforma o applicativi) e non i prodotti!
  • il Cloud computing è uno di quei rari casi (almeno nel mondo dell’ IT) in cui il traino principale non è la tecnologia ma bensì i bisogni sempre più incalzanti di risorse on-demand, scalabilità e pay-per-use.
  • Tutti i modelli sopra citati possono essere integrati perchè tranne (alcune) start-up nessuna azienda giustamente vuole portare tutto il proprio IT E DATI sul Cloud.
  • Sicurezza, Interoperabilità, Privacy sono le prime domande tecnologiche che ci si pone mentre, cosa sposto nel cloud, quali modelli architetturali e di business posso adottare sono le seconde... che analizzeremo nei post successivi...

A questo punto non mi resta che lasciarvi con una “definizione ufficiale” del Cloud Computing che, spero, ora sia alquanto più chiara a tutti :

“Cloud computing is a pay-per-use model for enabling available, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, services) that can be rapidly provisioned and released with minimal management effort or service provider interaction” [National Institute of Standards and Technology]

--Mario