La nuvola, il cloud, e la rete Internet sono quindi strettamente collegate. La Rete, nata nel lontano 1969 con il nome di Arpanet, si è evoluta nel tempo fino al 1991, anno in cui con la definizione del protocollo http e la nascita del World Wide Web (WWW) prende il nome di Internet.
L’intento è quello di connettere tra loro più computer con lo scopo di condividere informazioni, documenti, risorse ecc. Ognuno ha la possibilità di connettersi a sistemi, server, pubblicare pagine e siti web e rendere disponibili ad altri le proprie conoscenze. La necessità di condivisione diventa la spinta per la creazione della rete. I PC quindi si possono connettere a Internet, ma nessuno (o pochi) sanno realmente cos’è, o meglio cosa c’è dietro, come mi connetto e quali sono i servizi che mi consentono di farlo. Non so dove è pubblicato il sito web che visito e non so neanche come è stato creato. Sto quindi usufruendo di un servizio che una piattaforma, qualunque essa sia, mi sta erogando. Sono un utente della rete.
Qui nasce il concetto di nuvola: non so cosa c’è dietro, non mi interessa, ma lo uso. Il Cloud Computing, anche se negli ultimi anni sembra rappresentare una evoluzione, in realtà era un concetto per molti aspetti già esistente da diverso tempo, parallelamente alla nascita di Internet.
Possiamo quindi definire con il termine Cloud Computing un insieme di risorse hardware e software che forniscono servizi su richiesta attraverso la rete Internet. Sebbene simile, non deve essere confuso con quest’ultima, in quanto il Cloud Computing è sostanzialmente un servizio fornito da un gestore di terze parti con la formula on demand. Sostanzialmente l’utente paga soltanto per quello che consuma, in termini di banda, di risorse, tempo di utilizzo, numero di transazioni ecc. Questo modello permette di creare soluzioni scalabili, performanti e affidabili anche con un basso investimento iniziale, senza cioè dover acquistare per lo startup l’hardware necessario e i servizi connessi, come il consumo di elettricità, la disponibilità di una connessione veloce e permanente a Internet, un IP fisso per rendere raggiungibili i propri server. Caratteristica fondamentale e imprescindibile del Cloud Computing è quella di fornire una infrastruttura di servizi assolutamente affidabile e scalabile. È infatti possibile, a seconda delle necessità, aumentare o diminuire i nodi in uso, oppure cambiare le caratteristiche dei server potenziando CPU e memoria.
Tutto questo è possibile perché l’infrastruttura è basata su un sistema di virtualizzazione delle risorse. La piattaforma viene eseguita su macchine virtuali opportunamente dimensionate e in grado di fornire i servizi richiesti. Ogni volta che viene richiesto di scalare utilizzando un nuovo nodo, la piattaforma si preoccupa di replicare l’applicazione sul nuovo nodo e renderlo quindi disponibile.
Ma non tutto è o può essere Cloud Computing. Attualmente esiste la possibilità di sviluppare per il cloud, ma esistono ancora tante soluzioni già in produzione negli ambienti tradizionali. Spesso le due tipologie di soluzioni, che in realtà differiscono per la piattaforma di distribuzione, devono integrarsi e comunicare tra loro. Per distinguere, vengono utilizzate due diverse terminologie. Un’applicazione distribuita secondo il modello tradizionale, su server di proprietà o su computer locali per esempio, viene definita on-premise. Una soluzione distribuita invece secondo le indicazioni del Cloud Computing viene semplicemente definita come in the cloud, o semplicemente cloud.
È bene focalizzare le due definizioni perché, sono le modalità più diffuse per indicare le differenti modalità di deployment delle applicazioni.