# Cloud computing

Il cloud computing, in italiano nuvola informatica o servizi nella nuvola, indica un'erogazione di servizi offerti su richiesta da un fornitore a un utente finale attraverso la rete internet (come l'archiviazione, l'elaborazione o la trasmissione dati), a partire da un insieme di risorse preesistenti, configurabili e disponibili in remoto sotto forma di architettura distribuita.

## Descrizione

Le risorse non vengono pienamente configurate e messe in opera dal fornitore appositamente per l'utente, ma gli sono assegnate, convenientemente grazie a procedure automatizzate, a partire da un insieme di risorse condivise con altri utenti lasciando all'utente parte dell'onere della configurazione. Quando l'utente rilascia la risorsa, essa viene similmente riconfigurata nello stato iniziale e rimessa a disposizione nell'insieme condiviso delle risorse, con altrettanta velocità ed economia per il fornitore.
La correttezza nell'uso del termine è contestata da molti esperti: se Rob van der Meulen e Christy Pettey vedono queste tecnologie come un'evoluzione tecnologica offerta dalla rete internet, altri, come Richard Stallman, le considerano invece come una parola ingannevole ideata dalla commercializzazione per far cadere gli utenti nel tranello dei software offerti come servizio, che spesso li privano del controllo delle loro attività informatiche.
Utilizzando vari tipi di unità di elaborazione (CPU), memorie di massa fisse o mobili come RAM, dischi rigidi interni o esterni, CD/DVD, chiavi USB eccetera, un computer è in grado di elaborare, archiviare e recuperare programmi e dati. Nel caso di computer collegati in rete locale (LAN) o geografica (WAN), la possibilità di elaborazione/archiviazione/recupero può essere estesa ad altri computer e dispositivi remoti dislocati sulla rete stessa. Sfruttando la tecnologia del cloud gli utenti collegati al fornitore possono svolgere tutte queste mansioni, anche tramite un semplice navigatore internet: ad esempio, possono utilizzare software remoti non direttamente installati sul proprio computer e salvare dati su memorie di massa in linea predisposte dal fornitore stesso (sfruttando sia reti via cavo che senza fili).

### Precisazione

La direttiva UE 2022/2555 NIS2 definisce:
* cloud "un servizio digitale che consente l'amministrazione su richiesta di un pool scalabile ed elastico di risorse di calcolo condivisibili e l'ampio accesso remoto a quest'ultimo, anche ove tali risorse sono distribuite in varie ubicazioni". Nei considerando avverte che i servizi erogati da un datacenter non è detto che siano cloud computing;
* servizio di datacenter "un servizio che comprende strutture, o gruppi di strutture, dedicate a ospitare, interconnettere e far funzionare in modo centralizzato apparecchiature informatiche e di rete che forniscono servizi di conservazione, elaborazione e trasporto di dati insieme a tutti gli impianti e le infrastrutture per la distribuzione dell'energia e il controllo ambientale".
Il termine cloud è spesso abusato o usato in maniera scorretta. Acquisire specifici spazi di archiviazione, server e servizi presso un determinato datacenter, l'housing, l'hosting non sono tecnologia cloud. Ad esempio: il cloud (rivolto alle organizzazioni) di Microsoft, Amazon, Google, per citare i principali tre operatori al mondo, è cloud nel vero senso (tecnologico) della parola (le risorse sono indistinte, condivise, distribuite e la loro localizzazione è sconosciuta al cliente). Per fare un altro esempio alla portata degli utenti: cloud è Google Workspace o Microsoft 365 o Amazon Drive Home. La differenza sta nella scalabilità ed elasticità di erogazione delle risorse, nella loro condivisione, nella distribuzione estesa (spesso non conosciuta da clienti e utenti). Un'impresa che fornisce un servizio di datacenter (localizzato in un determinato sito) potrebbe erogare risorse secondo il paradigma cloud.
In pratica: cloud è una modalità ben precisa di fruizione di risorse informatiche erogate tramite Internet.

### Figure coinvolte

Il sistema del cloud computing prevede tre fattori distinti:
* fornitore di servizi: offre servizi di server virtuali, archiviazione, applicazioni complete (per es. base di dati) generalmente secondo un modello pay per use (PPU);
* cliente amministratore: sceglie e configura i servizi offerti dal fornitore, generalmente offrendo un valore aggiunto come per esempio applicazioni software;
* cliente finale o, meglio, utente: utilizza i servizi opportunamente configurati dal cliente amministratore.
In determinati casi d'uso il cliente amministratore e il cliente finale possono coincidere: per esempio, un cliente può utilizzare un servizio di archiviazione per effettuare una copia dei propri dati; in questo caso il cliente finale provvede a configurare e utilizzare il servizio.
I principali processi su cui i diversi fornitori cominciano a proporre soluzioni in modalità cloud sono la gestione della relazione col cliente (CRM), la gestione del capitale umano (HCM) e la pianificazione delle risorse d'impresa (ERP).

### Architettura

L'architettura informatica del cloud computing prevede uno o più server reali, generalmente in architettura ad alta affidabilità (gruppi di server) e fisicamente collocati presso il centro dati del fornitore del servizio.
Il fornitore di servizi espone delle interfacce per elencare e gestire i propri servizi; il cliente amministratore utilizza tali interfacce per selezionare la risorsa necessaria (per esempio un server virtuale per eseguire un'applicazione e per amministrarla (configurazione, attivazione, disattivazione).
Il cliente finale utilizza come "servizio" la risorsa configurata dal cliente amministratore; le caratteristiche fisiche dell'implementazione (server reale, localizzazione del centro dati) sono irrilevanti.
Uno dei tanti componenti chiave di un'istanza cloud è il bucket (lett. "secchio") ovvero uno spazio per l'archiviazione dati (container).

### Servizi

Nonostante il termine sia piuttosto vago e sembri essere utilizzato in diversi contesti con significati differenti tra loro, si possono distinguere tre tipi fondamentali di servizi cloud:
* SAAS (software as a service) -Software as a service (acronimo SaaS, lett. "software come servizio", in alcuni casi anche Pay Per Use - PPU cioè lett. "pagare per l'uso") è un modello di servizio del software applicativo realizzato da un produttore che mette a disposizione un programma, direttamente o tramite terze parti, con modalità telematiche come ad esempio un'applicazione web. consiste nell'utilizzo di programmi installati su un server remoto, cioè fuori del computer fisico o dalla LAN locale, spesso attraverso un server web; quest'acronimo condivide in parte la filosofia di un termine oggi in disuso, ASP (application service provider). Un'evoluzione del SAAS in ambito mobile è stata rilasciata nel maggio 2020 sotto il nome di Cloud Service Application (CSA);
* DAAS (data as a service) - con questo servizio vengono messi a disposizione via web solamente i dati, rendendoli disponibili in vari formati e ad applicazioni diverse come se fossero presenti sul disco locale. DaaS è cugino del SaaS Software as a Service e sempre più spesso l'unione di queste due tecniche offre ulteriori opportunità di realizzazione di servizi in rete per la gestione e la condivisione di dati, informazioni e modi di elaborazione degli stessi. ai quali gli utenti possono accedere tramite qualsiasi applicazione, come se fossero residenti su un disco locale; in pratica il DAAS non è basato sul concetto di server ma di storage (conservazione dati);
* HAAS (hardware as a service) - con questo servizio l'utente invia dati a un computer, che vengono elaborati da computer messi a disposizione e restituiti all'utente iniziale.
A questi tre principali servizi possono esserne integrati altri:
* PAAS (platform as a service) - Invece che uno o più programmi singoli, viene eseguita in remoto una piattaforma software che può essere costituita da diversi servizi, programmi, librerie, ecc. Tale servizio è tipico di alcune piattaforme utilizzate per sviluppare altri programmi, quali Amazon Web Services o Microsoft Azure o Oracle PaaS. Il paradigma multi-tenant è tipico delle architetture con tecnologia PaaS.
* IAAS (infrastructure as a service) - oltre alle risorse virtuali in remoto, vengono messe a disposizione anche risorse hardware, quali server, capacità di rete, sistemi di memoria e archivio. La caratteristica dell'IAAS è che le risorse vengono istanziate su richiesta o domanda al momento in cui una piattaforma ne ha bisogno. I clienti di fornitori di risorse in IaaS sono tipicamente imprese produttrici di soluzioni software che le erogano in SaaS ai loro clienti oppure organizzazioni che dimettonono completamente o parzialmente l'hardware on premises mantenendo solo i terminali per gli utenti.
Il termine cloud computing si differenzia però da grid computing, che è invece un paradigma orientato al calcolo distribuito e, in generale, richiede che le applicazioni siano progettate in modo specifico.
Nel caso di funzionalità di memorizzazione in remoto la creazione di una copia di sicurezza è automatica, e l'operatività si trasferisce tutta in linea, mentre i dati sono memorizzati in server farm generalmente localizzate nel Paese d'origine del fornitore.
Il cloud computing rende disponibili all'utilizzatore le risorse come se fossero implementate da sistemi (server o periferiche personali) "standard". L'implementazione effettiva delle risorse non è definita in modo dettagliato, anzi l'idea è proprio che l'implementazione sia un insieme eterogeneo e distribuito – cloud, "nuvola" – di risorse le cui caratteristiche non siano note all'utilizzatore.

## Problemi, rischi e critiche

Il Cloud computing presenta numerosi aspetti sensibili, soprattutto riguardo alla volatilità delle informazioni memorizzate, l'eventuale utilizzo di crittografia e il tipo di approccio alla sicurezza IT.
Tuttavia, molti di questi aspetti potrebbero risultare poco comprensibili per gli utenti finali poiché, per loro natura, richiederebbero conoscenze di tipo informatico di livello avanzato.
I sistemi di cloud computing vengono criticati principalmente per l'esposizione degli utenti ai seguenti rischi:
1) Sicurezza informatica e privacy degli utenti:
La gestione della privacy coinvolge principalmente il titolare, che è colui che decide le finalità e le modalità del trattamento dei dati, e il responsabile, che tratta i dati per conto del titolare. Il Regolamento Generale sulla Protezione dei Dati (GDPR) richiede che il titolare designi per iscritto il responsabile del trattamento tramite un contratto dedicato (Art. 28 Reg. 679/2016).
Quando si utilizza un servizio di cloud computing per memorizzare dati personali o sensibili, si espone l'utente a potenziali problemi di violazione della privacy. I dati personali vengono memorizzati nelle Server Farms di aziende che spesso risiedono in uno Stato diverso da quello dell'utente. Il cloud provider, in caso di comportamento scorretto o malevolo, potrebbe accedere ai dati personali per eseguire ricerche di mercato e profilazione degli utenti.
La sicurezza dei dati può essere affrontata sia dai cloud provider (che forniscono servizi cloud) che dai loro clienti (aziende, organizzazioni o privati). Spesso il cloud provider non è il proprietario dei server sui quali vengono fisicamente ospitati i dati, ma si affida a fornitori esterni di servizi di hosting. Secondo quanto stabilito dall'Art 28 Reg. 679/2016, l'Hosting Provider, che gestisce i dati trasmessi dal cloud provider per conto del titolare, assume il ruolo di sub-responsabile del trattamento dei dati. Di conseguenza, il cloud provider deve ottenere il consenso del titolare del trattamento per avvalersi di un sub-responsabile. Questo significa che il cloud provider trasferisce al sub-responsabile le istruzioni fornite dal titolare tramite il contratto di designazione del responsabile. In pratica, il titolare del trattamento deve sempre mantenere il controllo dei propri dati. Per farlo, è necessario avere una chiara comprensione di tutta la catena di trattamento dei dati e garantire la loro sicurezza.
L'utilizzo di connessioni wireless aumenta il rischio per la sicurezza poiché le reti senza fili offrono una minore protezione e quindi si è maggiormente esposti ai casi di pirateria informatica. In presenza di atti illegali, come il furto o l'uso improprio dei dati personali, gli utenti possono subire gravi danni e possono incontrare difficoltà nell'ottenere soluzioni legali o rimborsi, specialmente se il fornitore di servizi risiede in un paese diverso dal loro.
Nel caso di aziende o enti pubblici, tutti i dati memorizzati nelle memorie esterne sono seriamente esposti a eventuali casi di spionaggio industriale. Ovviamente, i provider offrono sistemi di crittografia sempre più raffinati sebbene, se non diversamente concordato nel contratto, è un onere del cliente decidere di impiegarli.
2) Problemi internazionali di tipo economico e politico
Quando si affidano i propri dati ad un servizio di Cloud Computing, è importante conoscere la posizione fisica dei server che ospitano tali dati. In linea di principio, è vietato trasferire i dati verso paesi che non garantiscono un livello adeguato di protezione.
Ciò può diventare un problema quando quando dati pubblici sono raccolti e conservati in archivi privati, situati in un paese diverso da quelli degli utenti. Spesso, produzioni di importanza cruciale, informazioni personali e contenuti intellettuali vengono memorizzati in forma di dati digitali in archivi centralizzati accessibili solo in parte. Gli utenti non hanno garanzie di un libero accesso futuro a tali dati.
Un'altra problematica riguarda la localizzazione degli archivi di cloud in alcuni paesi ricchi. Se non sono disciplinati da norme internazionali specifiche ciò potrebbe:
* aumentare il divario digitale tra paesi ricchi e poveri, poiché l'accesso alle conoscenze memorizzate non sarà liberamente garantito a tutti;
* favorire principalmente grandi corporation con una distribuzione centralizzata delle risorse di conoscenza nei paesi del cloud. La proprietà intellettuale viene considerata un fattore strategico per le economie basate sulla conoscenza.
Per garantire maggiore sicurezza è preferibile che il fornitore di servizi cloud appartenga alla stessa nazione o area geografica del cliente, applicando le stesse leggi e normative sulla privacy e sicurezza. Le legislazioni variano notevolmente tra Stati Uniti e altri paesi, quindi diventa difficile soddisfare le normative nazionali con servizi cloud di altre nazioni.
3) Continuità del servizio offerto:
La continuità del servizio offerto è un aspetto importante da considerare nei contratti di cloud computing. Garantire la disponibilità dei dati personali significa assicurare un accesso tempestivo e affidabile a tali dati.
Delegando la gestione e l'elaborazione dei dati ad un servizio esterno, gli utenti si trovano limitati nel caso in cui il servizio non sia operativo (out of service).
Una grave minaccia per la disponibilità nel cloud computing è la perdita accidentale di rete tra l'utente e il fornitore o il malfunzionamento del serve causato da attacchi DoS (Denial of Service) distribuiti o altre azioni malevole. Un eventuale malfunzionamento, inoltre, colpirebbe un numero molto elevato di persone contemporaneamente, dato che questi sono servizi condivisi.
Altri rischi per la disponibilità includono guasti hardware accidentali nella rete e nei sistemi di trattamento ed archiviazione dei dati, interruzioni di corrente e altri problemi infrastrutturali.
Nonostante i migliori servizi di cloud computing utilizzano architetture ridondate e abbiano personale qualificato per minimizzare i malfunzionamenti dei sistemi e ridurre la probabilità di guasti visibili agli utenti finali, ciò non elimina del tutto il problema. Infatti la prestazione dei servizi di cloud computing dipende dalla disponibilità di una connessione Internet ad alta velocità per il download e upload dei dati. Se si verifica un'interruzione nella connessione dovuta al proprio Internet Service Provider (ISP), tutte le attività che richiedono l'accesso al cloud possono subire una completa paralisi e questo può avere un impatto significativo sulle operazioni aziendali o sulle attività personali degli utenti.
Potrebbero essere necessarie misure di backup per affrontare eventuali interruzioni della connessione e garantire la continuità delle attività nel caso in cui si verifichino problemi di connettività.
4) Difficoltà di migrazione dei dati nel caso di un eventuale cambio del gestore dei servizi cloud:
La migrazione dei dati (meglio: delle informazioni) può essere estremamente complessa nel caso di un cambio nel gestore dei servizi cloud a causa della mancanza di uno standard definito tra i provider di servizi. Questa situazione potrebbe causare gravi danni in caso di fallimento del fornitore, modifiche delle tariffe o contenziosi con il gestore dei servizi a cui ci si è affidati. Ancora più critica è la questione della migrazione dei servizi (applicazioni, middleware, sistemi operativi, piattaforme di sicurezza, etc.) da un fornitore ad un altro, specie se hanno un alto grado di personalizzazione. Pertanto, è importante valutare attentamente i rischi e considerare le conseguenze prima di effettuare una migrazione.
Inoltre va notato che la maggior parte dei fornitori di servizi di cloud non utilizza formati di dati standard e interfacce che facilitano l'interoperabilità e la portabilità tra diversi fornitori. Ciò significa che se un cliente cloud decide di migrare da un fornitore ad un altro, la mancanza di interoperabilità può rendere impossibile o estremamente difficile il trasferimento dei dati (personali) del cliente al nuovo fornitore cloud ("vendor lock-in"). Lo stesso vale per i servizi sviluppati dal cliente su una piattaforma offerta dal fornitore originario (PaaS). Pertanto è importante controllare se e come il fornitore garantisce la portabilità delle informazioni e dei servizi, al fine di evitare problemi futuri legati alla migrazione dei dati (occorre accettarlo tecnicamente e poi prescriverlo nel capitolato, specificando ambienti e tecnologie di portabilità).