Celld: セルフホスト型の分散型Durable Objects
Celld: Self-hosted, distributed Durable Objects
Celldは、Cloudflare WorkersとDurable Objectsを自身のマシン上で実行できるオープンソースデーモンです。各オブジェクトは独自のSQLiteデータベースとして扱われ、名前でアドレス指定され、ユーザー所有のS3互換バケットにレプリケートされます。ノードはバケットのみを通じて連携し、コントロールプレーンやコンセンサスは不要です。オブジェクトごとに小さなデータベースを持つため、アプリケーションは構築によってシャーディングされ、単一共有データベースの競合や障害の影響を排除します。アイドル状態のセルはほとんどリソースを消費せずに休止します。CelldノードはV8を内蔵し、Wranglerバンドルを実行します。S3互換バケットは、デプロイメント、セルの状態、小さな所有権レコードを共有します。オブジェクトストレージのcompare-and-swapにより、メンバーシッププロトコル、障害検出器、コンセンサスサービスなしで、一度に1つのノードのみがセルを所有することが保証されます。各セルのSQLiteデータベースは継続的にバケットにレプリケートされ、セルの移動や起動時に新しい所有者がデータベースを復元して実行を再開します。バケットが永続的な真実の情報源となり、ノードは交換可能です。インストールはcurlコマンドで行い、アンインストールも同様に行えます。Dockerイメージも提供されており、AWS認証情報やS3互換エンドポイントを指定して実行できます。デプロイメントは`celld deploy`コマンドで行い、Workerコードはesbuildを使用して処理されます。ノード間の通信はTLSで暗号化されず、信頼できるプライベートネットワークまたはWireGuardやTailscaleのような暗号化されたオーバーレイ上で実行することが推奨されます。`celld diagnose`コマンドはノードのヘルスチェックを行います。圧力下では、Celldは最も使用されていないアイドルセルを永続的にレプリケートしてフェンスし、未所有として公開します。開発はRustで行われ、`cargo build`、`cargo test`、`clippy`コマンドでビルド・テストできます。コントリビューションはgit format-patchをry@deno.comに送信することで受け付けられます。
- CelldはCloudflare WorkersとDurable Objectsをセルフホストで実行できるオープンソースデーモンとして公開された
- 各オブジェクトはSQLiteデータベースとして扱われ、S3互換バケットのみを通じてノード間が連携し、コントロールプレーンやコンセンサスが不要
- 開発はRustで行われ、コントリビューションはDenoのRyan Dahl氏宛にgit format-patchで送付される形式が取られている
CelldはCloudflare WorkersとDurable Objectsの分散実行基盤をセルフホスト可能にするオープンソースデーモンであり、コントロールプレーン不要のS3ベースードアーキテクチャを特徴とする。エッジコンピューティングや分散DB領域におけるセルフホスト型インフラの民主化という観点で、既存のクラウド依存モデルからのシフト余地を示す点に注目したい。開発リードがDenoのRyan Dahl氏であることも関心を引く要素だ。