Dal sistema distribuito al cloud computing

Questa lezione introduce il concetto di sistema distribuito, spiegando come più computer, server e componenti software possano collaborare attraverso una rete per fornire un unico servizio. Il testo evidenzia l’importanza di scalabilità, affidabilità, disponibilità e trasparenza: l’utente percepisce il sistema come un’unica entità, anche se le risorse sono distribuite su più macchine.

Viene poi introdotto il ruolo del middleware, che facilita la comunicazione tra componenti diversi e nasconde parte della complessità dell’infrastruttura. Nella seconda parte, la lezione collega i sistemi distribuiti al cloud computing, mostrando come servizi come Spotify, Instagram e Google Drive si basino su server, data center e risorse remote accessibili via Internet.

Sistema distribuito

In molti servizi reali l’infrastruttura è molto complessa: più computer, server e componenti software collaborano tra loro per fornire un unico servizio.
 In questi casi si parla di sistemi distribuiti.

Un sistema distribuito è un modello informatico in cui più componenti, collegati attraverso una rete, collaborano tra loro per svolgere un compito o fornire un servizio. Le risorse hardware e software non si trovano tutte in un solo computer, ma sono distribuite su più macchine interconnesse (van Steen & Tanenbaum, 2023).
L’obiettivo di un sistema distribuito è sfruttare le risorse disponibili in modo efficiente, migliorando la scalabilità, l’affidabilità e la disponibilità del sistema complessivo (van Steen & Tanenbaum, 2023).
Per esempio, se un servizio è distribuito su più server, può gestire più utenti contemporaneamente e può continuare a funzionare anche se una parte dell’infrastruttura ha un problema.

Una caratteristica importante dei sistemi distribuiti è la trasparenza: utenti e sviluppatori possono percepire il sistema come un’unica entità coerente, anche se le sue risorse sono distribuite su più computer (van Steen & Tanenbaum, 2023).

In un sistema distribuito l’esistenza di più elaboratori è invisibile all’utente che ha l’impressione di avere a che fare con un unico sistema di calcolo.
Un middleware è un software che agisce come intermediario tra applicazioni o componenti software all’interno di un sistema distribuito: è grazie al middleware che l’utente percepisce la trasparenza (van Steen & Tanenbaum, 2023).
Infatti il suo scopo principale è facilitare la comunicazione, la gestione e l’interazione tra diverse parti di un sistema, specialmente quando queste parti possono risiedere in punti diversi della rete.
Molti sistemi distribuiti usano il middleware per ottenere la trasparenza.

A sinistra una rete di computer senza middleware, a destra con il middleware

Esempio
Spotify è un servizio di streaming musicale che consente agli utenti di ascoltare musica online da un vasto catalogo di brani. 
Questo servizio è fornito attraverso un’architettura distribuita, poiché i brani sono distribuiti su più server, ma l’utente non percepisce questa distribuzione e ha l’impressione di interagire con un’unica entità.

Cloud computing

Una tecnologia che sfrutta ampiamente il sistema distribuito è il cloud computing (Buyya et al., 2011).
In passato molti software venivano installati ed eseguiti principalmente in locale, cioè sul dispositivo dell’utente. 
Oggi, invece, molti servizi informatici si appoggiano a infrastrutture remote accessibili tramite Internet.

Con l’evoluzione della rete, diventata molto più veloce e sicura, i servizi informatici si stanno spostando dal software locale ai servizi web: l’utente utilizza tramite il browser l’interfaccia dell’applicazione, mentre una parte importante dell’elaborazione può essere eseguita dai server remoti, che invia all’interfaccia solo il risultato da visualizzare.

Questo cambiamento offre un vantaggio all’utente: il suo dispositivo non deve sostenere tutto il carico dell’applicazione, perché una parte del lavoro viene svolta dai server remoti.
Il concetto che si riferisce all’uso di servizi informatici attraverso la rete è chiamato cloud computing, che va oltre la semplice presenza di risorse su Internet e implica l’accesso e l’utilizzo di risorse virtuali come servizi (Mell & Grance, 2011).
Questi servizi possono includere l’archiviazione di dati, l’elaborazione dei dati, la distribuzione di applicazioni, l’analisi dei dati e molto altro.
Quindi:

  • Il cloud computing è un modello di fornitura di servizi informatici tramite Internet. Invece di usare solo risorse locali, come il disco o la potenza di calcolo del proprio computer, l’utente può utilizzare risorse remote: spazio di archiviazione, applicazioni, potenza di elaborazione, database e altri servizi.
  • Nel cloud computing, una parte importante dell’elaborazione, dell’archiviazione o della gestione del servizio avviene su sistemi remoti distribuiti. Il dispositivo dell’utente può limitarsi a mostrare l’interfaccia e inviare richieste, ma in molti casi svolge comunque anche alcune elaborazioni locali.

Con il termine cloud si indica l’insieme delle risorse hardware e software che rendono possibile il cloud computing: server, sistemi di archiviazione, reti, software e data center collegati tra loro (Liu et al., 2011; Mell & Grance, 2011).
Quindi:
Il cloud rappresenta un insieme di risorse hardware e software rendono possibile il cloud computing.

Il cloud computing è un modello concettuale che consente al dispositivo dell’utente di accedere via Internet al cloud e di usare qualche servizio

Il cloud consente agli utenti di accedere agli stessi file e alle stesse applicazioni da praticamente ogni dispositivo, perché l’elaborazione e l’archiviazione hanno luogo in server che si trovano in datacenter, invece che localmente, nel dispositivo dell’utente (Mell & Grance, 2011).
È questo il motivo per cui un utente può accedere al suo account di Instagram usando un nuovo telefono dopo che quello vecchio si è rotto e può trovare l’account ancora lì, con tutte le foto, i video e la cronologia delle conversazioni.

Esempio
Google Drive è considerato un sistema cloud per diverse ragioni:

  • Archiviazione remota: Google Drive consente agli utenti di archiviare i propri file e documenti su server remoti gestiti da Google. Questi file sono conservati sui server remoti e possono essere accessibili o sincronizzati anche sui dispositivi dell’utente.
  • Accesso da qualsiasi luogo: gli utenti possono accedere ai loro file su Google Drive da qualsiasi dispositivo connesso a Internet, come computer, tablet o smartphone. Ciò significa che possono visualizzare, modificare e condividere i loro documenti ovunque si trovino.
  • Condivisione e collaborazione: Google Drive consente agli utenti di condividere i propri file con altre persone, consentendo la collaborazione in tempo reale. Gli utenti possono lavorare insieme sugli stessi documenti e visualizzare le modifiche in tempo reale.
  • Sincronizzazione automatica: le modifiche apportate ai file su Google Drive vengono automaticamente sincronizzate tra tutti i dispositivi da cui l’utente accede al proprio account. Questo assicura che le versioni più recenti dei file siano sempre disponibili.
  • Scalabilità: Google Drive offre agli utenti uno spazio di archiviazione flessibile che può essere facilmente ampliato in base alle esigenze. Gli utenti possono scegliere di acquistare spazio di archiviazione aggiuntivo se necessario.
  • Gestione centralizzata: gli utenti possono organizzare e gestire i propri file attraverso un’interfaccia web intuitiva. Gli utenti possono creare cartelle, suddividere i file in categorie e utilizzare strumenti di ricerca per trovare rapidamente ciò che serve loro.
  • Aggiornamenti automatici: Google Drive è un servizio gestito da Google, il che significa che gli utenti beneficiano automaticamente di nuove funzionalità e miglioramenti senza dover effettuare l’installazione manuale di aggiornamenti.

Per le imprese, passare al cloud computing può ridurre alcuni costi informatici, in particolare alcuni costi fissi: ad esempio, potrebbero non dover più gestire direttamente i server necessari a quei servizi, dato che lo farà il il provider di servizi cloud che useranno (Buyya et al., 2011).
Questo è particolarmente significativo per le piccole imprese, le quali potrebbero non essere in grado di avere una propria infrastruttura interna ma possono esternalizzare i fabbisogni di infrastruttura in modo conveniente attraverso il cloud. 
Il cloud può anche rendere più facile per le imprese operare a livello internazionale, perché i dipendenti e i clienti possono accedere agli stessi file e alle stesse applicazioni ovunque essi si trovino, purché dispongano di una connessione Internet.

Il cloud si basa spesso su sistemi distribuiti perché il servizio è fornito da molte risorse coordinate tra loro: server, sistemi di archiviazione, reti e data center (Buyya et al., 2011; van Steen & Tanenbaum, 2023).
Dal punto di vista dell’utente, però, questa complessità è in gran parte nascosta: il servizio appare come un’unica applicazione accessibile da Internet (van Steen & Tanenbaum, 2023).

Elementi chiave

  • Un sistema distribuito è formato da più computer e componenti software che collaborano per offrire un unico servizio.
  • Le risorse sono distribuite su più macchine collegate in rete.
  • I principali vantaggi sono scalabilità, affidabilità e disponibilità.
  • La trasparenza fa percepire all’utente il sistema come un’unica entità.
  • Il middleware facilita la comunicazione e il coordinamento tra i diversi componenti.
  • Il cloud computing permette di usare tramite Internet risorse remote, come applicazioni, archiviazione, database e potenza di calcolo.
  • Il cloud è l’insieme di server, reti, software, sistemi di archiviazione e data center che forniscono questi servizi.
  • I servizi cloud permettono di accedere a dati e applicazioni da dispositivi diversi.
  • Il cloud facilita condivisione, sincronizzazione, collaborazione e aggiornamenti automatici.
  • Le imprese possono ridurre i costi affidando infrastrutture e manutenzione a un provider cloud.
  • Il cloud si basa spesso su sistemi distribuiti, ma la loro complessità rimane nascosta all’utente.

Scarica pdf della lezione

  • Buyya, R., Broberg, J., & Goscinski, A. M. (Eds.). (2011). Cloud computing: Principles and paradigms. Wiley. https://doi.org/10.1002/9780470940105
  • Liu, F., Tong, J., Mao, J., Bohn, R. B., Messina, J. V., Badger, M. L., & Leaf, D. M. (2011). NIST cloud computing reference architecture (NIST Special Publication 500-292). National Institute of Standards and Technology. https://doi.org/10.6028/NIST.SP.500-292
  • Mell, P., & Grance, T. (2011). The NIST definition of cloud computing (NIST Special Publication 800-145). National Institute of Standards and Technology. https://doi.org/10.6028/NIST.SP.800-145
  • van Steen, M., & Tanenbaum, A. S. (2023). Distributed systems (4th ed.). distributed-systems.net. https://www.distributed-systems.net/index.php/books/ds4/
  • Andrew S. Tanenbaum e Maarten van Steen, Sistemi distribuiti. Principi e paradigmi, 2ª ed., Pearson, 2007 — Un testo fondamentale per approfondire trasparenza, comunicazione, coordinamento, affidabilità e architetture dei sistemi distribuiti.
  • Carlo Batini, Barbara Pernici e Giuseppe Santucci (a cura di), Sistemi informativi. Vol. 5: Sistemi distribuiti, FrancoAngeli, 2004 — Approfondisce le architetture distribuite, le tecnologie middleware e l’integrazione tra sistemi differenti.
  • George Reese, Cloud computing. Architettura, infrastrutture, applicazioni, Tecniche Nuove, 2010 — Presenta disponibilità, scalabilità, costi, sicurezza e migrazione delle applicazioni verso infrastrutture cloud; alcuni dettagli tecnologici sono ormai datati.
  • Jeff Barr, Cloud Computing per applicazioni web, Apogeo, 2010 — Offre esempi pratici di archiviazione, code di messaggi e applicazioni web scalabili su AWS, anche se i servizi descritti rispecchiano l’epoca di pubblicazione.
  • Serena Sensini, Kubernetes. Guida per gestire e orchestrare i container, Apogeo, 2023 — Collega i principi dei sistemi distribuiti alla gestione concreta di nodi, servizi, autoscaling e applicazioni cloud affidabili.

Dietro un servizio di streaming

Una piattaforma musicale permette a milioni di utenti di ascoltare brani attraverso un’unica applicazione. I file musicali e i servizi necessari al funzionamento della piattaforma sono però distribuiti su numerosi server.

Rispondi alle seguenti domande:

  • Spiega perché questa piattaforma può essere considerata un sistema distribuito.
  • Individua quali elementi del sistema potrebbero trovarsi su macchine differenti.
  • Spiega quale vantaggio può offrire la presenza di più server quando aumenta il numero degli utenti.
  • Un server smette improvvisamente di funzionare, ma gli utenti continuano a utilizzare normalmente il servizio. Quale caratteristica del sistema distribuito viene evidenziata da questa situazione?
  • Gli utenti non sanno quale server contiene il brano che stanno ascoltando. Spiega quale principio dei sistemi distribuiti permette loro di percepire l’intera infrastruttura come un unico servizio.

Rendere invisibile la complessità

Un’azienda possiede cinque applicazioni che devono comunicare con diversi server distribuiti sulla rete.
Deve offrire questi servizi:

  • Nella prima versione del sistema ogni applicazione deve conoscere direttamente come comunicare con ciascun server. 
  • Nella seconda versione viene introdotto un software intermedio che gestisce la comunicazione tra applicazioni e servizi.

Analizza le due soluzioni.

  • Individua quale componente introdotto nella seconda soluzione può essere definito middleware.
  • Spiega quale problema cerca di risolvere.
  • Descrivi come cambia il rapporto tra applicazioni e server dopo la sua introduzione.
  • Spiega perché il middleware può aumentare la trasparenza del sistema.
  • Dal punto di vista dell’utente finale, descrivi quale differenza dovrebbe essere percepibile tra un sistema ben progettato con middleware e uno in cui la distribuzione delle risorse è evidente.

Applicazione locale o cloud?

Uno studio di progettazione deve scegliere come utilizzare un nuovo software.

  • Soluzione A: il programma viene installato completamente sui computer dello studio e tutti i file vengono salvati sui loro dischi.
  • Soluzione B: il programma viene utilizzato tramite Internet; i documenti vengono conservati su server remoti e una parte importante dell’elaborazione viene eseguita dall’infrastruttura del fornitore.

Confronta le due soluzioni.

  • Indica quale delle due rappresenta maggiormente un modello di cloud computing.
  • Individua quali risorse sono locali e quali remote nei due casi.
  • Spiega perché nella soluzione B il computer dell’utente potrebbe dover sostenere un carico di elaborazione inferiore.
  • Un dipendente cambia computer e vuole continuare a lavorare sugli stessi documenti. Spiega quale delle due soluzioni rende questa operazione più semplice e perché.
  • Spiega perché utilizzare un’applicazione tramite browser non significa necessariamente che il dispositivo dell’utente non svolga alcuna elaborazione.

I documenti dell’università

Un’università vuole realizzare un sistema simile a Google Drive. Ogni docente deve poter caricare documenti dal proprio computer, modificarli successivamente da un tablet e condividerli con altri docenti, che possono lavorare sugli stessi file.

Progetta concettualmente il servizio utilizzando i principi della dispensa.

  • Indica quali informazioni o elaborazioni dovrebbero trovarsi sui dispositivi degli utenti e quali potrebbero essere gestite dal cloud.
  • Spiega perché i documenti devono essere conservati su sistemi remoti se devono essere disponibili da dispositivi differenti.
  • Descrivi cosa dovrebbe accadere quando un docente modifica un documento dal tablet e successivamente lo apre dal computer.
  • Spiega quale funzione svolge la sincronizzazione automatica.
  • Spiega perché il sistema può essere considerato contemporaneamente un servizio cloud e un sistema basato su un’infrastruttura distribuita.
  • Indica quale complessità dell’infrastruttura dovrebbe essere nascosta all’utente grazie alla trasparenza.

Una piccola azienda deve scegliere

Una piccola azienda deve realizzare un nuovo servizio informatico. Ha due possibilità:

  • Soluzione A: acquistare server propri, installarli nella propria sede e occuparsi direttamente della manutenzione e degli aggiornamenti.
  • Soluzione B: utilizzare servizi cloud forniti da un provider esterno.

L’azienda prevede inoltre di crescere nei prossimi anni e di assumere dipendenti che lavoreranno da città differenti.

Valuta le due possibilità.

  • Spiega perché il tuo computer si comporta contemporaneamente da client e da server.Spiega quali costi e attività possono essere ridotti scegliendo la soluzione cloud.
  • Spiega perché il cloud può essere particolarmente interessante per una piccola impresa.
  • Il numero degli utenti del servizio aumenta rapidamente. Spiega quale vantaggio legato alla scalabilità potrebbe offrire il cloud.
  • I dipendenti devono accedere agli stessi file da città differenti. Spiega perché il cloud facilita questa modalità di lavoro.
  • Indica quali attività che nella soluzione A sarebbero responsabilità dell’azienda possono essere affidate al provider nella soluzione B.
  • Scegli una delle due soluzioni per questo caso e motiva la decisione utilizzando almeno tre concetti della dispensa.

Progettare un servizio distribuito

Devi progettare una piattaforma online utilizzata da migliaia di studenti per archiviare documenti, modificarli e consultarli da computer, tablet e smartphone.

  • Spiega perché il tuo computer si comporta contemporaneamente da client e da server.Spiega quali costi e attività possono essere ridotti scegliendo la soluzione cloud.La prima proposta prevede di installare tutto su un unico computer: applicazione, dati e gestione degli utenti.
  • Una seconda proposta prevede invece diversi server e sistemi di archiviazione collegati tramite rete, coordinati in modo da fornire agli utenti un unico servizio.

Analizza le due architetture.

  • Spiega quale delle due può essere considerata un sistema distribuito e perché.
  • Immagina che il numero degli studenti passi da 1.000 a 100.000. Spiega quale delle due architetture offre maggiori possibilità di adattamento e collega la risposta al concetto di scalabilità.
  • Immagina che una delle macchine abbia un guasto. Spiega come una progettazione distribuita potrebbe permettere al servizio di continuare a funzionare.
  • Collega questa situazione ai concetti di affidabilità e disponibilità.
  • Spiega perché l’utente non dovrebbe avere bisogno di sapere su quale macchina si trova fisicamente il proprio documento.
  • Indica quale ruolo potrebbe svolgere un middleware nel coordinamento dei diversi componenti.
  • Spiega infine perché, dal punto di vista dell’utente, un’infrastruttura composta da molte macchine può comunque apparire come una singola applicazione.

Per la realizzazione di questi materiali ho utilizzato strumenti di intelligenza artificiale generativa come supporto alla scrittura, in particolare per migliorare la forma del testo, riorganizzare i contenuti, correggere la formulazione e velocizzare alcune attività redazionali.

Lavorando autonomamente alla produzione di questi materiali, cerco infatti di automatizzare tutte le attività che possono esserlo, così da poter dedicare più tempo alla ricerca, alla progettazione e allo sviluppo dei contenuti.

L’intelligenza artificiale non determina però i contenuti dell’opera: la scelta degli argomenti, la struttura, le idee, le interpretazioni, gli esempi e l’impostazione didattica sono elaborati da me. L’IA viene quindi utilizzata principalmente come strumento di supporto alla produzione e alla revisione formale, mentre la responsabilità autoriale e progettuale dei contenuti rimane mia.

Salvo diversa indicazione, questo materiale è distribuito con licenza Creative Commons Attribuzione – Non commerciale – Condividi allo stesso modo 4.0 Internazionale (CC BY-NC-SA 4.0).

È quindi possibile condividere, ridistribuire, modificare e creare opere derivate a partire dal materiale, a condizione di attribuirne correttamente la paternità, di non utilizzarlo per scopi commerciali e di distribuire eventuali versioni modificate o derivate con la stessa licenza.

Vuoi aiutarmi a scrivere articoli come questo?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

No responses yet

Sostieni il progetto

Tutti i materiali che condivido nascono da una convinzione molto semplice: una buona formazione non dovrebbe limitarsi a insegnare quali pulsanti premere, ma aiutare a comprendere le idee, i principi e i processi che stanno dietro agli strumenti.

Per questo dedico una parte significativa del mio tempo a studiare, organizzare e produrre contenuti gratuiti dedicati al multimedia, al design e alla comunicazione visiva. Articoli, lezioni, approfondimenti e risorse che hanno l’obiettivo di rendere accessibili argomenti spesso affrontati in modo frammentario o superficiale.

Questo lavoro richiede però tempo, ricerca e cura. Ogni guida, ogni video, ogni materiale pubblicato gratuitamente è il risultato di molte ore di studio, scrittura e revisione.
Sostenere il progetto attraverso Patreon significa permettermi di continuare a produrre contenuti educativi di qualità, mantenerli accessibili al maggior numero possibile di persone e dedicare più energie alla costruzione di una risorsa che possa essere utile a studenti, professionisti e appassionati.

Se credi che una conoscenza più profonda, rigorosa e consapevole del multimedia abbia valore, il tuo contributo non sostiene soltanto il mio lavoro: aiuta a rendere queste risorse disponibili per tutta la comunità.
Grazie per il supporto e per la fiducia.

Patreon è troppo impegnativo?

Puoi sostenermi anche con una donazione libera, senza abbonamento e senza impegno.
Anche un piccolo contributo mi aiuta a continuare a creare giochi, contenuti didattici e materiali gratuiti con più libertà.

Support the project

All the materials I share stem from a very simple conviction: good training should not be limited to teaching which buttons to press, but should help people understand the ideas, principles, and processes behind the tools.

That is why I dedicate a significant portion of my time to researching, organizing, and producing free content focused on multimedia, design, and visual communication—articles, lessons, in-depth analyses, and resources aimed at making accessible topics that are often addressed in a fragmented or superficial way.

However, this work requires time, research, and care. Every guide, video, and piece of material published for free is the result of many hours of study, writing, and revision.
Supporting the project via Patreon enables me to continue producing high-quality educational content, keep it accessible to as many people as possible, and devote more energy to building a resource that benefits students, professionals, and enthusiasts alike.

If you believe that a deeper, more rigorous, and informed understanding of multimedia is valuable, your contribution does more than just support my work: it helps make these resources available to the entire community.
Thank you for your support and trust.

Is Patreon too demanding?

You can also support me with a voluntary donation—no subscription or commitment required.

Even a small contribution helps me continue creating games, educational content, and free materials with greater freedom.