← Tutti gli episodi
Copertina di Il nemico si chiama rete
Stagione 71 · Episodio 002

Il nemico si chiama rete

24 settembre 2026 5:07
0:00 5:07

Ciao, e benvenuto nella seconda puntata della settantunesima stagione. Nella prima abbiamo detto che i sistemi distribuiti nascono per superare i limiti di una macchina sola, e che il prezzo da pagare è la rete. Oggi guardiamo in faccia proprio lei, la rete, perché è il nemico da cui discende tutto il resto. Se c'è una sola idea che devi portarti a casa da questa stagione, è questa: la rete è inaffidabile, sempre, e chi la dà per scontata costruisce castelli sulla sabbia.

Partiamo dall'errore mentale più comune, quello che facciamo tutti all'inizio. Quando due programmi girano sulla stessa macchina e uno chiama l'altro, la chiamata è istantanea e sicura: parte e arriva, punto. Il nostro cervello, per abitudine, tratta anche la chiamata di rete allo stesso modo: mando il messaggio, arriva. È una comodità mentale, ed è una trappola. Perché la chiamata di rete non è come quella locale: assomiglia molto di più a spedire una lettera in un paese lontano, con un servizio postale capriccioso. E su quella lettera non hai quasi nessuna garanzia. Il fatto che il novantanove per cento delle volte arrivi liscia ti inganna: è proprio quell'abitudine a ingannarti quando arriva l'uno per cento.

Vediamo tutte le cose che possono andare storte, perché sono più di quante pensi. La lettera può arrivare in ritardo, e non sai mai quanto: a volte un istante, a volte un tempo lunghissimo, senza preavviso. Può perdersi del tutto, e sparire nel nulla. Può arrivare in doppia copia, perché qualcuno l'ha rispedita pensando fosse persa. Può arrivare fuori ordine, dopo una lettera spedita più tardi. E poi c'è la cosa più insidiosa di tutte: puoi mandare la lettera e non ricevere risposta, e a quel punto non sai cosa sia successo. È andata persa la tua lettera? È arrivata, ma si è persa la risposta? O l'altro sta ancora pensando? Da fuori, questi tre casi sono identici, e non c'è modo di distinguerli con certezza.

Nota bene quest'ultimo punto, perché è la radice di metà dei problemi della stagione. Il silenzio non ti dice niente. Se mandi un messaggio e non ricevi risposta, il tuo sistema è nell'ignoranza più totale: non sa se l'operazione è stata fatta o no. E dovrà comunque decidere qualcosa. Aspetta ancora? Rimanda il messaggio, rischiando di far fare la stessa cosa due volte? Si arrende? Questa incertezza, il non poter mai sapere con sicurezza cosa è accaduto dall'altra parte, non è un difetto che si può correggere: è una proprietà fondamentale del mandare messaggi a distanza.

E c'è di peggio, il caso che tiene svegli gli ingegneri di notte: la rete si spezza. Non un singolo messaggio perso, ma il filo stesso interrotto tra due gruppi di macchine. Le filiali di Roma e di Milano funzionano perfettamente, ognuna al lavoro, ma la linea tra loro è morta. Roma non sente Milano, e conclude che Milano sia caduta. Milano non sente Roma, e conclude che sia caduta Roma. Sono entrambe vive, entrambe attive, e ognuna crede di essere l'unica sopravvissuta. Questa è la partizione della rete, ed è lo scenario da incubo, perché non c'è nessuno, in nessun punto, che veda l'intero quadro e possa dire chi ha ragione. Non esiste un arbitro che guardi tutto dall'alto.

C'è una lista famosa, in questo campo, delle bugie che ci raccontiamo sulla rete, e la trovi nei materiali della puntata. Sono le cose che diamo per scontate quando programmiamo con leggerezza: che la rete sia affidabile, che i messaggi arrivino subito, che la banda sia infinita, che nessuno stia origliando, che tutto resti immutato. Ognuna di queste comode assunzioni è falsa, e ognuna, prima o poi, presenta il conto. Un sistema distribuito serio è, in gran parte, una lunga e paziente risposta a ciascuna di queste bugie: cosa faccio quando la rete è lenta, cosa faccio quando un messaggio si perde, cosa faccio quando la linea si taglia.

Voglio lasciarti con il modo giusto di pensare alla rete, perché è un cambio di mentalità che ti fa fare un salto. Smetti di considerare la rete come un tubo che di solito funziona e ogni tanto ha un problema. Consideralo, invece, come un avversario: qualcosa che farà del suo peggio nel momento peggiore, e che devi mettere in conto da subito, non come eccezione ma come normalità. Chi progetta bene un sistema distribuito non spera che la rete sia buona: parte dal presupposto che sia cattiva, e costruisce qualcosa che regga lo stesso. La domanda giusta non è se qualcosa andrà storto sulla rete, ma quando, e cosa farà il tuo sistema in quel momento.

Per oggi ci fermiamo qui. Abbiamo messo a fuoco il nemico centrale: la rete, e la trappola di trattarla come una chiamata locale. Un messaggio spedito a distanza può ritardare in modo imprevedibile, perdersi, duplicarsi, arrivare fuori ordine; e soprattutto puoi restare senza risposta senza sapere se l'operazione è avvenuta o no, perché tre casi diversi da fuori sembrano identici. Il caso peggiore è la partizione: il filo tra due gruppi di macchine si spezza, e ognuno crede di essere l'unico sopravvissuto. Le comode bugie sulla rete presentano tutte il conto, e la mentalità giusta è trattare la rete come un avversario, non come un tubo affidabile. Nella prossima puntata: che ore sono? Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.