← Tutti gli episodi
Copertina di Che ore sono?
Stagione 71 · Episodio 003

Che ore sono?

24 settembre 2026 5:05
0:00 5:05

Ciao, e benvenuto nella terza puntata della settantunesima stagione. Abbiamo detto che la rete è un avversario che ritarda e perde messaggi. Oggi affrontiamo un problema che sembra banale e invece è profondissimo, e che discende proprio da quel ritardo: il tempo. In un sistema distribuito, la domanda più innocente del mondo, che ore sono, non ha una risposta. E questo, come vedrai, fa crollare un mucchio di cose che davamo per ovvie.

Partiamo dal fatto scomodo, quello che sorprende sempre. Ogni macchina ha il suo orologio interno, e quegli orologi non sono d'accordo tra loro. Ognuno va per conto suo, e col tempo si sfasa: uno corre un pelo di più, un altro un pelo di meno. Puoi provare a sincronizzarli, mandando in giro l'ora giusta, ma quel messaggio ci mette un tempo variabile ad arrivare, e quindi arriva già leggermente vecchio. Il risultato è che non esiste, da nessuna parte, un orologio unico e affidabile che dica a tutte le macchine la stessa ora nello stesso istante. Non c'è un adesso condiviso. Nella scorsa stagione, dentro una macchina sola, il tempo era uno per tutti. Qui il tempo si è frantumato.

Vediamo perché questo è un problema serio e non un dettaglio da pignoli. Immagina due filiali che modificano lo stesso dato quasi nello stesso momento. Poi arriva la domanda: quale modifica è arrivata prima, e quindi quale deve vincere? La risposta ovvia sarebbe: guardiamo l'ora sui due messaggi, e teniamo quello più recente. Ma se i due orologi sono sfasati, quell'ora è inaffidabile. Un messaggio potrebbe portare un orario più basso pur essendo stato scritto dopo, semplicemente perché l'orologio di quella filiale era indietro. Fidarsi degli orari per decidere chi ha ragione, in un sistema distribuito, è un modo raffinato per corrompere i dati.

E qui arriva l'intuizione che sposta il problema su un binario giusto. La domanda vera, quasi mai, è che ora preciso sono le cose. La domanda vera è: questo evento è successo prima o dopo quest'altro? E, spesso, la parte davvero importante è ancora più stretta: questi due eventi sono collegati, oppure no? Se la filiale di Roma prima riceve un ordine e poi lo spedisce, quei due fatti sono legati da un rapporto di causa: la spedizione non può venire prima dell'ordine, e questo lo sappiamo per certo, senza guardare nessun orologio. Ma se Roma spedisce una cosa e Milano, per conto suo, ne spedisce un'altra, senza che l'una sappia dell'altra, allora non ha nessun senso chiedersi quale sia venuta prima: sono semplicemente scollegate.

Nota questa distinzione, perché è il cuore della puntata. In un sistema distribuito gli eventi si dividono in due famiglie. Ci sono coppie di eventi legati da un filo di causa, dove uno ha potuto influenzare l'altro, e per questi l'ordine è certo e ha senso. E ci sono coppie di eventi che non si sono mai incontrati, avvenuti in posti diversi senza scambiarsi nulla, e per questi l'ordine semplicemente non esiste: chiedersi chi è arrivato prima è come chiedersi se piove più forte a Roma o a Sydney. Non c'è una risposta giusta, e va bene così. Il compito non è dare un orario a tutto, ma tenere traccia di cosa ha causato cosa.

Come si fa a tenere traccia dei rapporti di causa senza un orologio affidabile? L'idea di fondo è geniale nella sua semplicità: invece di segnare l'ora, si segna la storia. Ogni messaggio si porta dietro una specie di contatore che dice quante cose sono successe prima di lui in quella catena. Quando una filiale riceve un messaggio, aggiorna il suo contatore per ricordare che ha visto quella storia. Così, guardando i contatori, il sistema può dire con sicurezza se un evento sapeva dell'altro, cioè se poteva esserne la causa, oppure se i due sono nati indipendenti. Nei materiali trovi i nomi tecnici di questi orologi fatti di conteggi invece che di ore.

Voglio lasciarti con l'immagine che tiene tutto insieme. Pensa alla storia dell'azienda non come a una linea del tempo unica, con un unico orologio appeso al muro, ma come a un albero genealogico. Certi fatti sono figli di altri fatti: discendono da loro, e l'ordine tra genitore e figlio è indiscutibile. Altri fatti sono cugini lontani, nati in rami diversi nello stesso periodo, senza mai essersi conosciuti, e tra loro non c'è un prima e un dopo che conti. Rinunciare all'orologio unico e ragionare per parentele, per chi discende da chi, non è una sconfitta: è l'unico modo onesto di raccontare la storia di un mondo senza un adesso condiviso.

Per oggi ci fermiamo qui. Abbiamo scoperto che in un sistema distribuito la domanda che ore sono non ha risposta: ogni macchina ha il suo orologio, gli orologi si sfasano, e non esiste un adesso condiviso, mentre dentro una macchina sola il tempo era uno per tutti. Fidarsi degli orari per decidere quale modifica vince è un modo raffinato per corrompere i dati. La domanda giusta non è a che ora, ma prima o dopo, e ancora meglio: questi eventi sono legati da una causa oppure no. Gli eventi legati hanno un ordine certo, quelli scollegati non ne hanno affatto. Per tracciarlo si segna la storia con dei contatori invece dell'ora, ragionando come su un albero genealogico. Nella prossima puntata: è morto o solo lento? Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.