Nous construisons celld, un runtime pour les applications Cloudflare Workers et Durable Objects sur vos propres machines. Il peut s'exécuter avec un magasin d'objets compatible S3 comme seule dépendance de service externe.
celld est un système distribué. Fabriquer des systèmes distribués fiables est difficile, en partie parce que nous pouvons dépendre involontairement d'hypothèses qui ne se maintiennent pas en pratique, même lorsque nous connaissons les pièges. La liste de Peter Deutsch les huit erreurs du calcul distribué répertorie huit telles hypothèses, notamment "Le réseau est fiable" et "La latence est zéro."
Un bug peut dépendre d'une séquence particulière de messages retardés, d'écritures échouées et de redémarrages de nœuds. Ces événements peuvent se produire dans un ordre différent lors de la prochaine exécution des tests, rendant l'échec difficile à reproduire. Nous devons être capables de répéter l'exécution échouée afin que nous puissions enquêter sur la cause et vérifier si une proposition de correction résout vraiment le problème. C'est pourquoi nous utilisons la simulation déterministe (DST).
Notre simulateur est encore en développement et n'est pas inclus dans le dépôt public de celld, mais il a déjà trouvé des bugs précédemment inconnus. Dans cet article, nous passerons en revue comment fonctionne la DST dans celld et comment elle nous a aidés à trouver, reproduire et corriger l'un de ces bugs. La DST fait tourner le code de production de celld dans un environnement contrôlé par un simulateur. Une cellule dans celld exécute du code d'application et possède sa propre base de données SQLite. Au fur et à mesure que les cellules effectuent leur travail, celld gère des événements tels que des requêtes entrantes, des opérations de stockage terminées et des déclencheurs de minuterie. Le code qui sélectionne l'événement suivant est séparé du code qui le gère. Cela permet au simulateur de contrôler l'ordre des événements tout en exécutant le même code de gestion d'événements que en production.
Source: Hacker News · Résumé par HeadlinesBriefing