2026-02-02 · tooling · 10 min
Synchro CRDT en P2P : ce qui marche, ce qui casse
Six mois sur exp_006. WebRTC + Yjs sans serveur d'autorité, et les pièges qu'on n'avait pas anticipés.
L'idée : pourquoi avoir un serveur d'autorité pour synchroniser un document collaboratif quand WebRTC permet du peer-to-peer direct ? On a construit l'expérience sur Yjs, qui résout les conflits déterministiquement, et on a fait passer tous les états par un mesh DataChannel.
Ce qui marche : la collaboration synchrone à 2-3 utilisateurs en même réseau local. Latence sub-50 ms, pas de serveur à payer, pas de point de défaillance central. Pour un usage type studio créatif (designers + dev sur un même brief), c'est nickel.
Ce qui casse : NAT traversal, hot-reload de pair, et surtout l'historique. Sans serveur, comment un nouveau venu rattrape le document si tous les pairs précédents sont déconnectés ? On a fini par ajouter un signaling server passif qui héberge un snapshot — donc plus tout à fait peer-to-peer, mais plus tout à fait client-serveur non plus.