I sistemi distribuiti sono sistemi informatici in cui più sistemi informatici lavorano efficacemente insieme come una singola unità. Esempi di sistemi distribuiti includono reti di distribuzione dei contenuti utilizzate per servire siti Web e video online, supercomputer costruiti con più potenti processori matematici e database distribuiti utilizzati in molti sistemi online. I sistemi distribuiti possono essere più resilienti, più potenti e più rapidi dei sistemi a computer singolo, ma possono anche richiedere più manutenzione e un'attenta valutazione dell'organizzazione e problemi che possono andare storti.

Vista dall'alto attraverso il vetro dell'ingegnere informatico che lavora con il laptop nel data center pieno di server rack attivi.

Vantaggi di un sistema distribuito

Esistono numerosi vantaggi potenziali nell'utilizzo di un sistema distribuito. Uno dei più facili da capire è la ridondanza e la resilienza. Se un'azienda fornisce il proprio sito Web da un set distribuito di server, anziché da un singolo server, potrebbe essere in grado di rimanere attivo anche se un server si guasta fisicamente. Se i dati vengono distribuiti tra più server o dischi, un evento comune nei moderni sistemi distribuiti, potrebbe non esserci alcuna perdita di dati anche se un dispositivo di archiviazione smette di funzionare.

Velocità e distribuzione dei contenuti

I sistemi distribuiti possono anche essere più veloci dei sistemi a computer singolo. Uno dei vantaggi di un database distribuito è che le query possono essere instradate a un server con le informazioni di un determinato utente, piuttosto che tutte le richieste devono andare a un singolo computer che può essere sovraccaricato.

Le richieste possono anche essere indirizzate a server fisicamente vicini o su una rapida connessione di rete a chiunque desideri i dati, il che può significare meno tempo e altre risorse allocate per gestire il traffico di rete e i colli di bottiglia. Questo è un evento comune nelle reti di distribuzione dei contenuti utilizzate per i media online.

Ridimensionamento e parallelismo

Una volta impostati i sistemi distribuiti per distribuire i dati tra i server coinvolti, possono anche essere facilmente scalabili. Se sono ben progettati, può essere semplice come aggiungere del nuovo hardware e dire alla rete di aggiungerlo al sistema distribuito.

I sistemi distribuiti possono anche essere progettati per il parallelismo. Questo è comune nelle operazioni matematiche per cose come la modellazione meteorologica e il calcolo scientifico, in cui più potenti processori possono dividere parti indipendenti di simulazioni complesse e ottenere la risposta più velocemente di quanto non le farebbero in serie.

Sfide di calcolo distribuito

Una grande sfida con il calcolo distribuito è che può essere difficile ragionare per i programmatori. Possono esserci sfide su come distribuire i dati per garantire che i requisiti di resilienza siano soddisfatti in varie condizioni impreviste.

Se i dispositivi devono sincronizzarsi, possono esserci dei bug difficili da individuare che li fanno attendere l'uno sull'altro per trasmettere dati o tentare accidentalmente di leggere o scrivere lo stesso pezzo di dati allo stesso tempo, causando errori.

Anche la sicurezza e la privacy possono diventare un problema con i sistemi distribuiti, poiché i dati delle persone vengono archiviati su più computer, a volte in più posizioni fisiche. I sistemi distribuiti possono anche essere eccessivi per alcune attività, utilizzando più risorse fisiche e tempi di ingegneria di quanto sia necessario.