← Tutti gli episodi
Copertina di Non esiste il sistema distribuito perfetto
Stagione 71 · Episodio 009

Non esiste il sistema distribuito perfetto

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

Ciao, e benvenuto nella nona puntata della settantunesima stagione. Siamo alla puntata dei conti onesti, quella in cui tiro le somme senza vendere illusioni. Per otto puntate abbiamo mostrato quanto sono potenti i sistemi distribuiti. Oggi mostro l'altra faccia, con la stessa serietà: quanto costano, quando non convengono, e perché il sistema distribuito perfetto, semplicemente, non esiste. Se c'è una puntata equilibrata in questa stagione, è questa.

Partiamo dal conto vero, quello che spesso si finge di non vedere. Distribuire ti compra due cose preziose: la scala oltre i limiti di una macchina e la resistenza ai guasti. Ma le paghi, e il prezzo è alto. Paghi in coordinamento, perché le macchine devono continuamente mettersi d'accordo, e l'accordo, l'abbiamo visto, è lento e delicato. Paghi in latenza, perché ogni passo che prima era una chiamata locale istantanea ora è un viaggio sulla rete. Paghi in complessità, perché devi gestire guasti parziali, copie che divergono, tempi che non tornano. E paghi con guasti nuovi, che su una macchina sola non esistevano proprio. Non stai eliminando la difficoltà: la stai spostando, e ingrandendo.

Ed ecco la prima regola, quella che nessuno dice abbastanza forte: non distribuire, se non sei costretto. Una macchina sola è enormemente più semplice. Niente rete di mezzo, niente accordo, niente copie da sincronizzare: la memoria è una, l'orologio è uno, se cade te ne accorgi subito e in modo pulito. Un solo buon server, oggi, è mostruosamente potente: può reggere una quantità di lavoro che sorprenderebbe chi immagina di aver bisogno di un esercito di macchine dal primo giorno. Prima di spargere il tuo sistema su tante macchine, chiediti sempre se una sola, robusta e ben fatta, non basti. Molto spesso basta, e ti risparmia un oceano di dolore.

Vediamo perché non esiste nemmeno la ricetta migliore, una volta che distribuire è davvero necessario. Non c'è un modello di coerenza che vinca sempre: la coerenza forte è giusta per i soldi e sbagliata per un feed sociale, dove la debole è perfetta. Non c'è un disegno che vada bene per tutto. Prendi la scelta tra tenere il sistema come un blocco unico oppure spezzarlo in tanti servizietti separati: il blocco unico è più semplice da capire e da mettere in piedi, ma cresce a fatica; i tanti servizi scalano in modo indipendente, ma ti scaricano addosso tutti i problemi di rete di cui abbiamo parlato, dentro casa tua. Nessuno dei due è il vincitore: dipende dalla dimensione del problema, dalla squadra, dal momento.

Nota una trappola sottile, di cui bisogna diffidare: le astrazioni che promettono di nasconderti che il sistema è distribuito. Sono comode, e ti fanno programmare come se le macchine remote fossero lì accanto, come se la rete non esistesse. Il guaio è che quella comodità regge finché tutto va bene, e si sfonda nel momento peggiore. Quando la rete rallenta, quando un pezzo cade, l'astrazione che fingeva un unico computer perde, e tu ti ritrovi a combattere proprio con i mostri che credevi di aver nascosto sotto il tappeto, per giunta senza gli strumenti per vederli. Le migliori astrazioni distribuite non ti mentono: ti ricordano, con gentilezza, che la rete è lì.

C'è un filo che attraversa molte stagioni di questo podcast, e qui trova la sua forma più netta: non esiste lo strumento migliore in assoluto, esiste quello giusto per il tuo problema. L'abbiamo detto dei database, dei linguaggi, delle architetture. Vale, forse più che altrove, per i sistemi distribuiti, perché qui il costo di scegliere per moda invece che per necessità è altissimo. Copiare l'architettura di un colosso che serve un miliardo di persone, quando tu ne servi mille, non ti rende un colosso: ti regala soltanto la sua complessità, senza nessuno dei suoi problemi che la giustificavano. La maturità è usare la dose giusta, non la dose massima.

Voglio lasciarti con il ritratto dell'ingegnere maturo, perché è il senso di tutta la puntata. Non è quello che sa costruire il sistema più grande e distribuito possibile. È quello che sa quando non farlo. È quello che rispetta la potenza dei sistemi distribuiti ma ne teme il costo, che sceglie una macchina sola quando una macchina sola basta, e che distribuisce solo quando il problema lo impone davvero, e allora lo fa con gli occhi aperti su ogni compromesso. Il sistema distribuito perfetto non esiste, e chi te lo promette o non ha capito la materia o ti sta vendendo qualcosa. Esistono solo scelte oneste, adatte al problema che hai davvero.

Per oggi ci fermiamo qui. Abbiamo fatto i conti onesti. Distribuire compra scala e resistenza ai guasti, ma si paga caro: in coordinamento, latenza, complessità e guasti nuovi. Da qui la prima regola, non distribuire se non sei costretto, perché una macchina sola e ben fatta è più semplice e spesso basta. E anche quando distribuire serve, non c'è la ricetta migliore: né un modello di coerenza né un disegno che vincano sempre, blocco unico o tanti servizi che sia. Diffida delle astrazioni che fingono che la rete non esista, perché cedono nel momento peggiore. Il filo di tante stagioni vale anche qui: la dose giusta, non la massima. Nella prossima e ultima puntata: tante macchine, un solo scopo. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.