Sistema distribuito

Cos’è

Un sistema distribuito è un insieme di elementi computazionali autonomi collegati in rete, pur apparendo all’utente un unico sistema coerente. Generalmente chiamati nodi, questi elementi possono essere dispositivi hardware (ad esempio computer o smartphone) oppure processi software. I nodi sono programmati per raggiungere un obiettivo comune e si scambiano messaggi all’interno della rete per collaborare.

Quali problematiche affronta

Oggi molte applicazioni moderne sono così grandi che avrebbero bisogno di supercomputer per funzionare. Basti pensare a Gmail o a Netflix: nessun singolo computer è abbastanza potente da poter ospitare l’intera applicazione. Collegando più computer, la potenza di calcolo diventa quasi infinita. Senza calcolo distribuito molte applicazioni su cui facciamo affidamento oggi non potrebbero esistere.

I sistemi tradizionali sono scalabili verticalmente, cioè vi si può aggiungere più CPU o memoria a una singola macchina. La scalabilità verticale è un processo lungo, richiede dei momenti di down e raggiunge velocemente i suoi limiti.

In che modo aiuta

I sistemi distribuiti sono scalabili orizzontalmente, per esempio aggiungendo altri nodi al sistema quando è necessario. Questo processo può essere automatizzato, consentendo a un sistema di gestire un improvviso aumento di carico di lavoro o di consumo di risorse.

Un sistema non distribuito è esposto al rischio di fallimento: se un computer si blocca, si ferma il sistema intero. Un sistema distribuito può essere progettato in modo da continuare a funzionare e produrre il medesimo risultato anche se alcuni computer si bloccano.