15 points par GN⁺ 2023-10-05 | 2 commentaires | Partager sur WhatsApp
  • Introduction interactive aux Conflict-free Replicated Data Types (CRDT)
    • Un type de structure de données stocké sur différents ordinateurs (pairs) et pouvant être mis à jour immédiatement sans requête réseau ni confirmation auprès d'autres pairs
  • Les CRDT sont excellents pour créer des applications collaboratives riches comme Google Docs et Figma, sans nécessiter de synchronisation via un serveur central
  • Il existe deux types de CRDT : basés sur l'état et basés sur les opérations
    • Les CRDT basés sur l'état transmettent l'intégralité de l'état entre les pairs, et le nouvel état est obtenu en fusionnant tous les états
    • Les CRDT basés sur les opérations ne transmettent que les actions effectuées par l'utilisateur, qui peuvent ensuite servir à calculer le nouvel état
  • Cet article se concentre sur les CRDT basés sur l'état et explique comment construire des CRDT primitifs, comment les composer en structures de données plus complexes, puis comment créer un éditeur collaboratif de pixel art
  • Il présente le concept de Last Write Wins Register (LWW Register), un type simple de CRDT qui contient une seule valeur et utilise un timestamp pour remplacer la valeur courante par la dernière valeur écrite
  • Il présente aussi le concept de Last Write Wins Map (LWW Map), un type de CRDT plus complexe qui contient une ou plusieurs valeurs
  • Inclut un playground interactif pour aider à comprendre le fonctionnement des LWW Registers et des LWW Maps
  • Le prochain article se concentrera sur la création d'un éditeur collaboratif de pixel art à l'aide des concepts décrits dans cet article

2 commentaires

 
cosine20 2023-10-06

C’est vraiment assez intéressant. Je me demandais justement comment étaient implémentées les applications permettant une collaboration en temps réel, comme Google Docs...

 
GN⁺ 2023-10-05
Commentaire Hacker News
  • Un article salué comme une excellente introduction aux Conflict-free Replicated Data Types (CRDTs) pour les développeurs, avec des exemples de code concrets et des explications claires
  • Les CRDTs sont utilisés dans le développement de produits et, bien qu’ils puissent être difficiles à maîtriser, ils offrent des avantages comme une latence nulle et la cohérence éventuelle
  • Les CRDTs permettent des caches distribués sans logique d’invalidation, ce qui simplifie leur gestion et améliore les performances
  • Les CRDTs rendent possible la suppression d’anciennes opérations d’écriture, ce qui réduit la charge du système et permet l’edge computing
  • Cependant, l’utilisation des CRDTs pose aussi des défis, comme la difficulté de l’autorisation basée sur les rôles, la nécessité de modifier des modèles de données additifs et des problèmes de débogage
  • Des services comme Liveblocks cherchent à simplifier l’usage des CRDTs, mais peuvent être coûteux pour les développeurs indépendants
  • Les CRDTs ont été utilisés dans diverses applications, notamment des gestionnaires de campagne de TTRPG, des bases de données à synchronisation automatique et des outils de prise de notes collaboratifs
  • Les CRDTs sont considérés comme très utiles et intéressants pour la gestion des données, mais leur importance pour les applications centrées sur l’utilisateur reste sujette à débat
  • Certains soutiennent que le principal avantage des CRDTs est la collaboration en temps réel, un problème qui serait déjà résolu par des solutions centralisées comme Google Docs
  • D’autres soulignent que les CRDTs apportent aussi des avantages comme le support multi-appareils et l’accès hors ligne, tout en notant que ces fonctions sont également disponibles dans des solutions centralisées
  • Des inquiétudes subsistent aussi quant à la pérennité des données et au contrôle par l’utilisateur avec les CRDTs, car les mises à jour du modèle de données ne sont pas faciles et d’autres pairs peuvent modifier les données
  • Malgré ces débats, l’intérêt pour les CRDTs demeure soutenu, et la recherche comme le développement continuent dans ce domaine