- Reflect est un nouveau framework pour créer des applications web multijoueurs similaires à Figma, Notion ou Google Sheets.
- Il s’agit d’une version évoluée de Replicache, un framework de synchronisation côté client, à laquelle a été ajouté un serveur entièrement managé afin de faciliter davantage le développement d’applications multijoueurs.
- Reflect est désormais disponible publiquement pour la première fois.
- Ce framework traite le problème de la résolution des conflits dans l’édition collaborative, afin que tous les utilisateurs voient le même contenu et que les conflits se résolvent naturellement.
- Contrairement aux outils populaires de l’écosystème web comme les CRDTs (Conflict-Free Replicated Data Types), Reflect utilise une technique de résolution transactionnelle des conflits, populaire dans l’industrie du jeu vidéo.
- Les avantages et différences propres à Reflect découlent de ce choix fondamental au cœur de son moteur de synchronisation.
- Reflect utilise des fonctions JavaScript appelées mutators pour implémenter les changements, et génère des mutation records qui enregistrent l’appel de ces mutators.
- Les mutations sont appliquées localement puis transmises en continu au serveur, lequel les linéarise selon leur heure d’arrivée afin de produire l’état autoritatif suivant.
- Reflect peut gérer des applications très dynamiques et ajouter des mutations pendant qu’il attend la confirmation des précédentes.
- Ce framework nécessite un stockage de données rapide capable de rembobiner, de forker et de créer des branches, ainsi qu’un stockage rapide côté serveur capable de suivre les mutations entrantes.
- L’approche de Reflect se généralise bien et convient à de nombreuses opérations, comme l’arithmétique, les opérations sur listes ou encore l’application d’invariants de haut niveau.
- Le serveur de Reflect fait autorité : il recalcule lui-même le résultat des mutations, et tous les clients peuvent en voir le résultat.
- Cette autorité côté serveur permet une authentification fine ainsi que l’exécution d’autres types de code sur le serveur.
- Reflect apporte également des avantages comme la validation de schéma et les migrations.
- La stratégie de synchronisation de Reflect, la résolution transactionnelle des conflits, est simple, flexible et puissante, ce qui en fait un bon choix pour créer des applications multijoueurs.
1 commentaires
Avis sur Hacker News