Non ci sono dubbi: la parola cloud fa ormai parte della nostra vita. La sentiamo in radio, in TV, la leggiamo sui banner pubblicitari e sui social network. Come una vera nuvola, la rivoluzione cloud è pronta a pioverci gentilmente addosso rinfrescandoci le idee. Ma cos’è esattamente il cloud computing? Perché nasce il cloud computing? Il cloud computing conviene? Ecco una breve panoramica per capire se fa al caso nostro.

Un pò di storia

Utility Computing

“L’idea centrale è che ogni larga area metropolitana avrebbe uno o più super computer. Questi computer gestirebbero numerosi problemi contemporaneamente. Le organizzazioni avrebbero dispositivi di input/output installati in locale e comprerebbero il tempo sui computer esattamente allo stesso modo in cui un proprietario di casa acquista acqua e luce da una società di servizi. Infatti, il prezzo dipenderebbe dal tipo di servizio offerto.”

-W. F. Bauer, Computer Design from the Programmer’s Viewpoint

Uno schema congetturale di super computer, una prima idea del cloud computing.
“Ultradatic” system schematic: uno schema congetturale di super computer, da “Computer Design from the Programmer’s Viewpoint” di W. F. Bauer

Il cloud computing deriva dall’utility computing, un modello di provisioning che permette l’approvvigionamento di risorse informatiche su richiesta attraverso un sistema di pricing on-demand: si paga quello che si consuma. Deriva proprio da questo il termine “utility”, generalmente utilizzato in riferimento ad aziende pubbliche di servizi come il servizio idrico o quello elettrico.

In informatica, questo modello viene reso possibile dalla capacità dei computer di suddividere le risorse su base temporale: il cosiddetto time sharing system, in cui un computer dedica potenza di calcolo a più operazioni contemporaneamente.

Batch processing e time sharing

Per farti avere un’idea più precisa del perché il time sharing ha rappresentato una rivoluzione, qui in basso trovi un utile confronto tra il sistema time sharing ed il batch processing, sistema precedentemente utilizzato da tutti i primi computer.

  • Batch processing

Oggi forse ci sembra assurdo, ma i primi computer potevano eseguire esclusivamente un’operazione alla volta. I programmi venivano caricati usando delle schede perforate ed al termine di ogni operazione, un operatore doveva inserire manualmente un nuovo programma attraverso uno switch.

Il Batch processing fu quindi inventato per risparmiare tempo: permetteva di eseguire diverse operazioni sequenzialmente, dando in pasto al computer più schede perforate alla volta.

Queste schede venivano programmate con una perforatrice, perché scrivere i programmi direttamente al computer sarebbe stato una perdita di tempo ed uno spreco di CPU. Il computer infatti poteva essere utilizzato da un solo utente alla volta, ed un solo utente che scrive un programma al computer fa diverse pause durante le quali la CPU rimane inattiva.

  • Time sharing

Il time sharing fu quindi una rivoluzione perché permetteva l’uso del computer a più utenti contemporaneamente. In questo modo si riuscì a massimizzare l’uso della CPU minimizzando il tempo di risposta tra computer e utente.

Adesso ogni utente poteva scrivere direttamente al computer perché durante le pause, la CPU si dedicava ad un altro utente, rimanendo costantemente attiva.

L’esecuzione di più operazioni contemporaneamente era comunque un’illusione. Il processore passava da un’operazione all’altra ad una velocità tale che l’utente aveva solo la percezione di essere l’unico collegato al computer.

John McCarthy

Ma adesso ritorniamo a noi. L’idea dell’utility computing nasce dalla brillante mente dello scienziato John McCarthy, padre dell’Intelligenza Artificiale e dei primissimi sistemi di time sharing.

La sua influenza nel campo dell’informatica fu tale che Lester Earnest, suo collega e scienziato, intervistato dal Los Angeles Times in occasione della sua morte disse:

“L’evoluzione di internet non sarebbe avvenuta così rapidamente senza i sistemi di time sharing sviluppati da John. Continuiamo ad inventare nuovi nomi per questi sistemi. Li abbiamo chiamati server … adesso li chiamiamo cloud computing. Tutto ciò non è altro che time sharing. È stato John a dargli il via.”

-Lester Earnest per il Los Angeles times

McCarthy conobbe Lester Earnerst mentre lavorava ai modelli di time sharing durante la progettazione del Semi-Automatic Ground Environment (SAGE), un sistema di difesa antimissilistico che permetteva l’accesso a più utenti contemporaneamente.

Il padre dell’IA intuì subito che il time sharing avrebbe portato in futuro ad un sistema di utility computing su larga scala per scopi diversi, e rese la prima dichiarazione pubblica a riguardo durante un discorso al centennale del MIT nel 1961.

“Se questi computer diventano i computer del futuro, un giorno potrebbero essere organizzati come un’utilità pubblica, esattamente come il sistema telefonico… L’utility computing potrebbe diventare la base di un nuovo ed importante settore.”

-cit John McCarthy al centennale del MIT, 1961

John McCarthy, informatico statunitense, padre dell'IA e del cloud computing.
John McCarthy, padre dell’IA e vincitore del Premio Turing nel 1971.

Tuttavia, l’idea venne accantonata per qualche decennio in quanto le tecnologie dell’epoca non permettevano ancora la diffusione di questo modello su larga scala.

Fu infatti a partire dagli anni 2000 che il nuovo paradigma gettò le basi del futuro dell’informatica: il Cloud Computing adesso era pronto a rivoluzionare il modo in cui usiamo i computer.

Cos’è il cloud computing in 2 righe

il Cloud Computing è un modello di provisioning che permette l’utilizzo di risorse informatiche su richiesta, in qualsiasi quantità, in qualsiasi momento, da qualsiasi posizione e senza l’intervento umano.

Per una definizione più approfondita, in basso ti riporto quanto scritto dal National Institute of Standards and Technology.

La definizione del NIST

Il cloud computing è un modello che permette un accesso ubiquo, conveniente ed on-demand ad un set condiviso di risorse di computing configurabili (reti, server, storage, applicazioni e servizi) che può essere fornito rapidamente e rilasciato con il minimo sforzo di gestione o interazione dal provider. Questo modello di Cloud si compone di

  • 5 caratteristiche essenziali
  • 3 modelli di servizio
  • 4 modelli di implementazione.

Le 5 caratteristiche essenziali del Cloud Computing.

  1. Self-service su richiesta: un utente può unilateralmente fare il provisioning delle risorse, come il tempo di uso di server e storage di rete, sulla base di quanto a lui necessario, automaticamente e senza avere bisogno di interazione umana con i provider.
  2. Ampio accesso alla rete: le risorse sono disponibili sulla rete ed accessibili tramite meccanismi standard che ne promuovono l’uso da thin o thick client (dispositivi mobili, tablet, laptop e workstation).
  3. Raggruppamento delle risorse: le risorse informatiche del provider sono raggruppate per servire più utenti utilizzando un modello multi-tenant, con diverse risorse fisiche e virtuali assegnate e riassegnate dinamicamente in base alla domanda. Vi è un senso di indipendenza dalla posizione in quanto l’utente generalmente non ha alcun controllo o conoscenza sulla posizione esatta delle risorse ma può essere in grado di specificare la posizione ad un livello di astrazione superiore (ad esempio a livello di paese, stato o datacenter). Esempi di risorse includono archiviazione, elaborazione, memoria e larghezza di banda della rete.
  4. Elasticità rapida: le risorse possono essere approvvigionate e rilasciate elasticamente, in alcuni casi automaticamente, per scalare rapidamente ridimensionando in base alla domanda. Per l’utente, le capacità disponibili spesso appaiono illimitate e possono essere richieste in qualsiasi quantità in qualsiasi momento.
  5. Servizio misurato: I sistemi cloud controllano ed ottimizzano automaticamente l’utilizzo delle risorse sfruttando una capacità di misurazione ad un livello di astrazione adeguato al tipo di servizio (ad es. archiviazione, elaborazione, larghezza di banda e account utenti attivi). L’utilizzo delle risorse può essere monitorato, controllato e segnalato, garantendo trasparenza sia per il fornitore che per il consumatore del servizio utilizzato.

I 3 modelli di servizio

  1. Software as a service (SaaS): in questo modello di servizio l’utente utilizza applicazioni che vengono eseguite su un’infrastruttura cloud. Le applicazioni sono accessibili da diversi client attraverso una thin client interface come un browser web o attraverso l’interfaccia grafica di un programma. L’utente non gestisce o controlla l’infrastruttura cloud sottostante che include le reti, i server, i sistemi operativi, lo storage, e neanche le capacità delle singole applicazioni, con la possibile eccezione di alcune configurazioni utente specifiche (esempi si SaaS: Google Docs, FileCloud).
  2. Platform as a service (PaaS): in questo modello di servizio l’utente può distribuire all’interno dell’infrastruttura cloud applicazioni create o acquistate che utilizzano linguaggi di programmazione, librerie e strumenti supportati dal provider. L’utente non gestisce o controlla l’infrastruttura cloud sottostante che include le reti, i server, i sistemi operativi, lo storage ma ha controllo sulle applicazioni distribuite e sulle possibilità di configurazione per l’ambiente che le ospita (esempi di PaaS: Google App Engine).
  3. Infrastructure as a Service (IaaS): in questo modello di servizio l’utente fa il provisioning di potenza di calcolo, storage, reti ed altre fondamentali risorse in cui è in grado di distribuire ed eseguire software, che può includere sistemi operativi ed applicazioni. L’utente non gestisce o controlla l’infrastruttura cloud sottostante ma ha il controllo sui sistemi operativi, sullo storage, sulle applicazioni distribuite e possibilmente ha il controllo limitato su alcuni specifici componenti di rete (esempi di IaaS: Amazon Web Services).

I 4 modelli di distribuzione

  1. Cloud privato: l’infrastruttura cloud è predisposta ad uso esclusivo di una singola organizzazione che comprende molteplici utenti. Può essere di proprietà, gestita ed operata dall’organizzazione, da una terza parte o da una loro combinazione, e può essere posizionata in locale o non in locale (on premises/off premises).
  2. Community cloud: L’infrastruttura cloud è predisposta per l’uso esclusivo di una specifica comunità di utenti da parte di organizzazioni che hanno preoccupazioni condivise (ad es. mission, requisiti di sicurezza, politica e considerazioni sulla conformità). Può essere di proprietà, gestita ed operata da una o più delle organizzazioni della comunità, da una terza parte o da una combinazione di esse e può essere posizionata in locale o non in locale.
  3. Cloud pubblico: l’infrastruttura cloud è predisposta per un uso aperto da parte del pubblico. Può essere di proprietà, gestita ed operata da un’organizzazione aziendale, accademica o governativa o da una combinazione di queste. È posizionata in locale presso il provider del servizio cloud.
  4. Cloud ibrido: l’infrastruttura cloud si compone di due o più infrastrutture cloud distinte (privata, community o pubblica) che rimangono entità univoche, ma sono unite da una tecnologia standardizzata o proprietaria che consente la portabilità dei dati e delle applicazioni (ad esempio, il cloud bursting per il bilanciamento del carico tra le infrastrutture cloud).

Perché nasce il Cloud Computing

Dopo aver letto la breve panoramica storica e le definizioni di cloud, ti sarai fatto un’idea di cosa sia e di come funzioni. Questo comunque potrebbe non bastare a farti avere il quadro completo, ed immagino ti stia chiedendo:

“ok, ma… come nasce il cloud computing? Perché nasce il cloud computing?

Devi sapere che uno dei motivi che portarono all’adozione ed alla costruzione di un primo sistema di cloud computing fu la necessità di alleggerire i carichi di lavoro dei grandi datacenter. Come puoi immaginare, all’aumentare degli utenti connessi ad internet, sovraccarichi e down divennero un problema piuttosto comune per le aziende di grandi dimensioni.

Jeff Bezos per primo fece i conti con questo problema ad Amazon, e quando i picchi di traffico dell’ecommerce raggiunsero soglie insostenibili decise di trovare una soluzione scalabile che gli avrebbe permesso di continuare a far crescere la sua piattaforma di vendite online senza rischiare di perdere reputazione a causa di malfunzionamenti o guasti.

Messa a punto a suo uso e consumo un’imponente infrastruttura cloud capace di gestire centinaia di migliaia di accessi contemporaneamente, decise di sfruttarla appieno mettendola sul mercato secondo il modello IaaS. Nacque così AWS e cioè gli Amazon Web Services, servizi web di cloud computing oggi distribuiti globalmente grazie ad una rete di AWS Partner, un network di società certificate da Amazon.

Perché conviene: i vantaggi del Cloud Computing

Prima di continuare, ti faccio una breve sintesi di quanto scritto sopra che ti aiuterà a non perderti nelle definizioni.

il cloud computing serve a

  • Gestire risorse – reti, server, storage, applicazioni e servizi.
  • Scalabili – aumentare o diminuire la quantità di risorse in base alle esigenze.
  • Illimitate – si ha una percezione di quantità infinita.
  • In qualsiasi momento – raddoppiare o dimezzare le quantità dall’oggi al domani.
  • Da qualsiasi posizione – accedere alle risorse da qualunque dispositivo connesso alla rete.
  • Senza intervento del provider – non devo interloquire con nessun operatore per fare gli aggiustamenti che mi servono.

Queste caratteristiche, peculiarità del cloud computing, hanno un potenziale enorme ed irrinunciabile per qualsiasi impresa che voglia mettere sul mercato i propri prodotti o servizi digitali.

In effetti, perché rischiare investendo in un datacenter locale?

Sovrastimare o sottostimare le risorse può significare perdere importanti occasioni di crescita, un rischio che il cloud elimina alla radice con la sua elasticità rapida. Ma anche se tu fossi in grado di gestire un enorme datacenter, il cloud continuerebbe ad essere la migliore scelta per la tua impresa. Ecco perché:

Tolleranza ai guasti

A differenza di un comune datacenter installato in locale, le infrastrutture cloud permettono il funzionamento continuo dei tuoi prodotti e servizi digitali anche in caso disastri naturali. Un grande vantaggio del cloud è infatti la ridondanza dei server su diverse zone geografiche. Questo meccanismo garantisce una perfetta continuità di servizio agli utenti, riducendo drasticamente i danni derivanti da malfunzionamenti di qualsiasi tipo.

Gestione semplice

Una delle caratteristiche essenziali del Cloud è la possibilità di essere gestito in modo autonomo. Questo vuol dire che non dovrai più preoccuparti di avere un sistemista: puoi gestire la tua infrastruttura cloud con pochi semplici click dalla tua console dedicata o tramite API. Inoltre hai accesso alle tue risorse da qualsiasi posizione, ti basta avere un dispositivo connesso alla rete ed il gioco è fatto.

Provisioning dinamico

Fare un corretto provisioning è sempre una scommessa rischiosa, e perderla può costare caro. Grazie al cloud questo diventa un problema del passato. Le infrastrutture cloud prevedono la scalabilità elastica delle risorse: niente più previsioni sbagliate sugli investimenti in potenza o storage, avrai sempre a disposizione la quantità di risorse di cui hai bisogno e pagherai esclusivamente per le risorse utilizzate.

Costi accessibili

Startup, piccola o media impresa: il cloud è accessibile in ogni fase della vita aziendale. Grazie al modello di pricing on-demand puoi partire in piccolo e scalare la tua infrastruttura al crescere del tuo business. In questo modo non dovrai più preoccuparti di risorse sprecate o di picchi improvvisi di crescita, avrai sempre a disposizione la possibilità di scalare le capacità della tua infrastruttura ed avere sempre le idee chiare sui costi relativi alle risorse che usi.

 

CTMobi è AWS partner

Costruiamo insieme il tuo successo

AWS Select Consulting Partner Badge
CTMobi – AWS Consulting Partner

Costruiamo insieme il tuo successo