2026-02-02 · tooling · 10 min
Sync CRDT in P2P: cosa funziona, cosa si rompe
Sei mesi su exp_006. WebRTC + Yjs senza server di autorità, e le trappole che non avevamo previsto.
L'idea: perché avere un server di autorità per sincronizzare un documento collaborativo quando WebRTC permette il peer-to-peer diretto? Abbiamo costruito l'esperimento su Yjs, che risolve i conflitti deterministicamente, e abbiamo fatto passare tutti gli stati attraverso un mesh DataChannel.
Cosa funziona: collaborazione sincrona con 2-3 utenti sulla stessa rete locale. Latenza sub-50 ms, niente server da pagare, nessun punto di guasto centrale. Per un caso d'uso tipo studio creativo (designer + dev sullo stesso brief), pulito.
Cosa si rompe: NAT traversal, hot-reload di un peer, e soprattutto la storia. Senza server, come fa un nuovo arrivato a recuperare il documento se tutti i peer precedenti sono disconnessi? Abbiamo finito per aggiungere un signaling server passivo che ospita uno snapshot — quindi non proprio più peer-to-peer, ma neanche più client-server.