celld 用のランタイムを構築しています。これは Cloudflare Workers と Durable Objects アプリケーションをあなたのマシンで実行します。S3 互換のオブジェクトストアを唯一の外部サービス依存関係として実行できます。
celld は分散システムです。信頼性の高い分散システムを作るのは困難です。その理由の一つは、実際の実行では成り立たない仮定に無意識に依存してしまうからです。Peter Deutsch の分散コンピューティングの 8 大謬誤 には、ネットワークは信頼でき、レイテンシはゼロ という 8 つの仮定がリストされています。
バグは、特定の遅延メッセージのシーケンス、失敗した書き込み、ノード再起動の順序に依存することがあります。これらのイベントは、次のテスト実行で異なる順序で発生する可能性があり、故障の再現が困難になります。失敗した実行を繰り返して原因を調査し、提案された修復が本当に問題を解決するか確認する必要があります。それが私たちが 決定的シミュレーションテスト (DST) を使用する理由です。
我々のシミュレータは現在開発中で、celld のパブリックリポジトリには含まれていませんが、すでに未知のバグを見つけています。この記事では、celld での DST の動作方法と、それがどのバグを見つけ、再現し、修復したかを説明します。DST はシミュレータによって制御された環境で celld の本番コードを実行します。celld のセルはアプリケーション コードを実行し、独自の SQLite データベース を持っています。セルが作業を行う間、celld はリクエストの到着、完了したストレージ操作、タイマーの発火などのイベントを処理します。次のイベントを選択するコードは、それを処理するコードとは別です。これにより、シミュレータは本番と同じイベントハンドリング コードを実行しながら、イベントの順序を制御できます。
出典: Hacker News · 要約:HeadlinesBriefing