セルフホスト型の分散Durable Objects/Workers実装「celld」発表

Node.jsやDenoの開発者として知られるRyan Dahl氏は2026年8月5日、セルフホスト型の分散Durable Objects/Workers実装「celld」を発表、Apache 2.0ライセンスのもとオープンソースとしてGitHub上で公開されている

celld: self-hosted, distributed Durable Objects
https://celld.dev/

celldは、サーバーサイドJavaScriptを利用者が管理するマシンで実行するステートフルな分散システム。Cloudflare Workers/Durable Objectsと同じJavaScript APIおよび設定を採用し[1]、共有データは利用者が所有するS3互換バケットに保存する。V8、S3、SQLiteLTXTokioを組み合わせて構成されている。

Durable Objectに相当する個々の永続オブジェクトは「セル(cell⁠⁠」と呼ばれ、名前とプライベートなSQLiteデータベースを持つ小さなサーバーとして動作する。セルはユーザー、ドキュメント、チャットルーム、AIエージェントといった単位で作成できる。各セルは単一スレッドで動作するため、同じセルで2件のリクエストが同時に実行されることはない[2]。ストレージ操作は同期的に実行され、途中で別の操作は割り込まない。celldがノード間の調整や状態の永続化にの際に依存するのはS3互換バケットだけで、専用の制御プレーンやサービスを必要としない。セルの所有権はバケット上のレコードで管理され、SQLiteの状態はLTX形式でバケットへ複製される。

メモリ上に読み込まれたセルは常駐(resident)状態にあり、アイドルになるとS3互換バケットへ休止(hibernate)する。Ryan氏によると、休止したセルの維持費はほぼS3上の保存コストだけになるとのこと。常駐セル1インスタンスあたりのメモリオーバーヘッドは約4MBとなる。公式サイトでは8GBのノード1台に1,000個の常駐セルを収容するモデルが紹介されているが、これをノード上限まで使った場合のコストは1セルあたり月額約0.05ドルで、大規模運用では大幅にコストダウンが可能になるという。

なお、celldは現在アルファ版の段階で、マルチテナント環境などで安全に使える状態ではない。1つのフリートで動かせるアプリケーションは1つで、ノード間のピア通信は平文HTTPでTLSを使用しないため、信頼できるプライベートネットワーク、またはWireGuard、Tailscaleなどの暗号化オーバーレイ上で運用し、公開側のTLSと利用者認証は別途用意する必要がある。S3互換バケットの認証情報は、フリート全体の管理者権限に相当する。

celldはLinux x86-64およびARM64向けのバイナリが用意されており、celld.devにあるインストーラを起動し、celldバイナリをダウンロードすることでインストールされる。Workerコードを含むプロジェクトではesbuildをPATHに用意し、S3互換オブジェクトストレージを設定して、Wranglerプロジェクトをcelld deployでデプロイする。その後、同じバケットを指定してノードを起動する。ノードを追加する場合は、同じバケット設定と、各ノードから到達できる固有の--advertiseアドレスを指定する。詳しい手順はドキュメントを参照。

おすすめ記事

記事・ニュース一覧