← Tutti gli episodi
Copertina di E' morto o solo lento?
Stagione 71 · Episodio 004

E' morto o solo lento?

24 settembre 2026 5:15
0:00 5:15

Ciao, e benvenuto nella quarta puntata della settantunesima stagione. Finora abbiamo visto due nemici: la rete che perde messaggi e il tempo che si frantuma. Oggi li mettiamo insieme, e ne nasce il problema più tormentoso di tutta la materia, quello che rende i sistemi distribuiti diversi in natura da qualunque programma singolo. Una filiale smette di rispondere. La domanda è semplice, la risposta impossibile: è morta, o è solo lenta?

Partiamo da come si presenta il problema, perché è ingannevolmente banale. Una macchina manda un messaggio a un'altra e aspetta la risposta. Passa un secondo, niente. Passano dieci secondi, niente. A un certo punto deve decidere cosa pensare dell'altra. Ma ricordi la lezione della rete: il silenzio non dice niente. Quell'altra macchina potrebbe essere andata in crash, spenta, morta. Oppure potrebbe essere viva e vegeta, solo sovraccarica e lentissima a rispondere. Oppure sta benissimo, ma è il filo tra le due a essersi rotto. Da fuori, questi casi sono identici: tutto quello che vedi è silenzio.

Vediamo perché questa ambiguità non si può eliminare, per quanto ti sforzi. L'unico strumento che hai è l'attesa: fissi un limite di tempo, e se entro quel limite non arriva risposta, dichiari l'altro morto. Ma quel limite è sempre una scommessa. Se lo fai corto, dichiarerai morte macchine che erano solo un po' lente, e le taglierai fuori per sbaglio. Se lo fai lungo, aspetterai un'eternità prima di reagire a un guasto vero, e nel frattempo il servizio soffre. Non esiste il limite giusto, esiste solo un compromesso tra reagire troppo presto e reagire troppo tardi. E il limite buono ieri può diventare sbagliato oggi, perché la rete cambia umore da un momento all'altro. Stai sempre indovinando.

E qui c'è la cosa nuova, quella che nella scorsa stagione non esisteva. Dentro un solo computer, quando un programma va in crash, muore in modo pulito e definitivo: il sistema operativo se ne accorge, lo rimuove, fine. È un guasto totale e onesto. In un sistema distribuito, invece, esiste una bestia molto più strana: il guasto parziale. Una parte del sistema è morta, mentre tutto il resto funziona benissimo e continua a lavorare. Peggio: pezzi diversi del sistema hanno idee diverse su chi è vivo e chi è morto, nello stesso istante. Non c'è una verità unica sullo stato del mondo. È come se, nella stessa azienda, alcune filiali pensassero che Milano è chiusa e altre continuassero tranquillamente a mandarle ordini. E nessuno dei due gruppi ha torto: ognuno crede a ciò che ha visto dal suo punto di osservazione.

Nota quanto è pericoloso agire sulla base di una diagnosi sbagliata, perché qui si nascondono i disastri peggiori. Immagina che Roma decida, per un timeout, che la filiale capo, quella che prende le decisioni, sia morta. Allora Roma ne nomina una nuova al comando. Ma la vecchia capo non era morta affatto: era solo lenta, e adesso torna in sé, ancora convinta di comandare. Ora ci sono due capi, ognuno che dà ordini per conto suo, ognuno convinto di essere l'unico legittimo. È una delle situazioni più temute nei sistemi distribuiti, il doppio comando, e nasce esattamente da qui: dall'aver scambiato un lento per un morto.

C'è però un modo saggio di convivere con questa incertezza, ed è cambiare l'atteggiamento verso i guasti. Siccome non puoi evitarli e spesso non puoi nemmeno diagnosticarli con certezza, smetti di trattarli come eccezioni rare e vergognose. Li tratti come normalità quotidiana. Progetti ogni pezzo aspettandoti che gli altri, prima o poi, tacciano. Fai in modo che il sistema continui a funzionare anche mentre una parte è muta o incerta. E costruisci ogni azione perché sia sicuro ripeterla, visto che spesso dovrai rimandare messaggi senza sapere se il primo era arrivato. Il guasto non è più un incidente da prevenire a ogni costo: è il clima in cui il sistema vive sempre.

Voglio lasciarti con l'immagine che chiarisce l'intera faccenda, quella del telefono muto. Chiami una filiale e nessuno risponde. Cosa è successo? Hanno chiuso l'ufficio? Sono tutti in riunione e non sentono squillare? È caduta la linea telefonica in città? Dal tuo capo del filo, questi casi sono indistinguibili: senti solo lo squillo a vuoto. Puoi aspettare, puoi richiamare, puoi decidere di agire come se fossero chiusi. Ma qualunque cosa scegli, stai scommettendo su una realtà che non puoi vedere. Convivere con quel telefono muto, senza farsi paralizzare e senza prendere decisioni avventate, è metà dell'arte dei sistemi distribuiti.

Per oggi ci fermiamo qui. Abbiamo affrontato il problema più tormentoso: quando una macchina tace, non puoi sapere se è morta, se è solo lenta, o se è caduta la linea, perché da fuori i tre casi sono identici. L'unico strumento è un limite di tempo, ma è sempre una scommessa tra reagire troppo presto e troppo tardi. La novità rispetto a un computer solo è il guasto parziale: una parte muore mentre il resto lavora, e pezzi diversi hanno idee diverse su chi è vivo. Scambiare un lento per un morto porta ai disastri, come il doppio comando. La via saggia è trattare i guasti come clima normale: aspettarseli, sopravvivere a una parte muta, rendere ogni azione sicura da ripetere. Nella prossima puntata: due volte la stessa verità. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.