Uno dei concetti fondamentali nel mondo dei sistemi distribuiti, oltre a scalabilità e tolleranza ai guasti, è quello della trasparenza.

Cosa intendo? Cosa succede quando ti ritrovi davanti a qualcosa di trasparente? Non la vedi! Il concetto è proprio questo, ovvero utilizzare un sistema distribuito senza sapere in che modo sono implementate (perchè tutto è nascosto) dietro le quinte le sue funzionalità.

Questo aiuta a ridurre la complessità percepita dall’utente finale, migliorando l’usabilità e la soddisfazione. Inoltre, è un vantaggio non da meno anche per gli sviluppatori che devono concentrarsi sulla propria applicazione piuttosto che sui dettagli dell’implementazione del sistema distribuito.

Se ti va di sostenere il blog, unisciti al canale Telegram dove puoi trovare un sacco di offerte sulla tecnologia interessanti, con sconti fino all'80%. Manchi solo tu: unisciti subito al canale per non perderti le prossime occasioni!

Ricorda che un sistema distribuito è una collezione di macchine indipendenti che appaiono agli utenti come un sistema singolo coerente. Ogni nodo del sistema può lavorare anche da solo e comunicare con gli altri, eventualmente tramite un software che prende il nome di middleware. Secondo Lamport, la trasparenza è fondamentale per garantire tutto ciò.

Tipo di trasparenza nei sistemi distribuiti

Un sistema distribuito può implementare la trasparenza in base a diversi aspetti. Vediamo quali sono.

Accesso

Grazie a questo tipo di trasparenza l’utente non è in grado di capire se la risorsa a cui sta accedendo è locale o remota. L’utente accede ad entrambi i tipi di risorse allo stesso modo senza notare differenze.

    Locazione

    Nasconde dove una risorsa si trovi all’interno della rete. Ad esempio, per usare Microsoft Teams scriviamo il nome logico per accedere ad una risorsa fisica senza sapere dove essa si trovi. Infatti, l’utente non deve essere consapevole della posizione fisica delle risorse per poter interagire con esse.

    Migrazione

    Non è raro che una risorsa, ovvero dati e applicazioni, possa essere spostata in una locazione differente. Il motivo principale è quello del bilanciamento del carico.

    Ad esempio, se accediamo più volte al sito www.corriere.it non è detto che ogni volta la pagina si trovi nella stessa locazione, anzi nella maggior parte dei casi questo non accade. In ogni caso, l’utente vi accede tramite nome logico quindi non può sapere ciò che accade dietro le quinte.

    Rilocazione

    La rilocazione funziona similmente alla migrazione, ma in questo caso il trasferimento avviene dinamicamente proprio nel momento in cui stiamo utilizzando la risorsa. Spesso succede nei sistemi social, come Instagram, i quali spostano i post in funzione del numero degli utenti che accedono ad un server.

    Replicazione

    La replicazione in un sistema distribuito è un concetto fondamentale in quanto permette di garantire un alto livello di tolleranza ai guasti. In questo caso, con trasparenza alla replicazione intendiamo la capacità di nascondere la presenza di repliche delle risorse.

    Un utente che utilizza un sistema distribuito, infatti, non ha alcun bisogno di sapere che ci sono multiple copie di una risorse. Ovviamente, occorre gestire nel modo più opportuno queste copie tramite meccanismi di aggiornamento che rendano i dati coerenti (e consistenti).

    È permesso accedere ad una delle repliche della risorsa, su più nodi diversi, nascondendolo. Per esempio, ogni nostro account Gmail è presente in almeno due copie, in modo tale che la nostra richiesta possa essere sempre soddisfatta anche in caso di nodo guasti.

    Concorrenza

    Tutti i sistemi moderni prevedono accesso e utilizzo contemporaneo a più utenti. La trasparenza alla concorrenza nasconde il fatto che una risorsa possa essere condivisa da più utenti in modo concorrente.

    Per esempio, più utenti potrebbero leggere un file su Dropbox allo stesso momento, pur senza saperlo. Gestire la concorrenza in lettura è abbastanza semplice (perché nulla viene modificato), diventa più complicato farlo in scrittura.

    Fallimenti

    Nasconde la presenza di fallimenti hardware o software nei nodi della rete, fornendo un modo per recuperare da errori o guasti senza che l’utente debba intervenire o notare una diminuzione significativa delle prestazioni. Non viene notificato il fatto che un server non sia accessibile, ma si reindirizza direttamente su un server in grado di soddisfare la richiesta.

    Persistenza

    Nasconde se una risorsa software è in memoria centrale o nel disco. Alcuni sistemi, per realizzare la persistenza fanno sempre una copia sul disco dei dati in memoria centrale per sopperire al fatto che sia volatile.

    Categorie: informatica