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?
Ecco una breve panoramica per capire cos’è, come funziona e perché conviene.
Indice degli argomenti
“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
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.
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.
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.
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.
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
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.
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.
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
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.
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).
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.
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.
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.
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).
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).
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).
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).
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.
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.
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).
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 come nasce e soprattutto perché. Facciamo un piccolo esempio parlando della nascita di AWS.
Uno dei motivi che portarono all’adozione di un primo sistema di cloud computing fu la necessità di alleggerire i carichi di lavoro dei data center. Come puoi immaginare, all’aumentare degli utenti connessi ad internet, sovraccarichi e down divennero un problema piuttosto comune per le aziende di grandi dimensioni e Jeff Bezos per primo fece i conti con questo problema ad Amazon.
Quando i picchi di traffico del suo e-commerce raggiunsero soglie insostenibili, il CEO di Amazon decise di trovare una soluzione scalabile che gli avrebbe permesso di continuare a crescere senza rischiare di perdere reputazione a causa di malfunzionamenti e guasti. Messa a punto un’imponente infrastruttura cloud per le sue esigenze, decise poi di sfruttarla appieno mettendola sul mercato secondo il modello IaaS. E fu così che nacque AWS, ovvero gli Amazon Web Services, servizi di cloud computing oggi distribuiti globalmente grazie ad una rete di AWS Partner, un network di società certificate da Amazon.
Prima di proseguire facciamo una breve sintesi di quanto detto sopra.
Con il cloud puoi:
Sovrastimare o sottostimare le risorse può significare perdere importanti occasioni di crescita, un rischio che il cloud elimina alla radice. Ma anche se tu fossi in grado di gestire un enorme data center locale, il cloud continuerebbe ad essere la migliore scelta.
Ecco alcuni dei principali vantaggi del cloud computing:
A differenza di un data center tradizionale, le infrastrutture cloud garantiscono il funzionamento dei tuoi 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.
Una delle caratteristiche essenziali del Cloud è la possibilità di essere gestito in modo autonomo. Nessun 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.
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.
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 la possibilità di scalare le capacità della tua infrastruttura in ogni momento avendo sempre le idee chiare sui costi delle tue risorse.
Costruiamo insieme il tuo successo
Ascolta l'articolo |
Angelo Lombardo