10月9日、Cloudflareが「Deno is joining Cloudflare」と題した記事を公開した。Node.jsの生みの親であり後継ランタイムDenoの創設者でもあるRyan Dahl、そして非同期I/Oライブラリlibuvの作者としてNode.jsの基盤を支えてきたBert Belderを中心とするDenoチームが、Cloudflareに合流する。両者の接点は「競合関係」ではなく、むしろCloudflareが長年解決できずにいた技術的空白を、DenoチームがOSSで埋めていたことにある。
その空白とは、Cloudflare Workersのランタイム実装をセルフホスト可能にする仕組みだ。Workersはすでにworkerdとしてオープンソース化されているが、スケーラブルなDurable Objects実装が欠けており、本格的なセルフホスティングは事実上困難だった。DenoチームはCloudflare合流前に、まさにその部分を補う**celld**をOSSとして公開していた。
「ロックイン」批判への正面回答
Cloudflare Workersに対しては、「一度使うと移行が困難なロックイン罠だ」という批判がネット上で根強い。特にDurable Objectsは、APIが異なるだけでなくアーキテクチャレベルで設計が独自であり、他のプラットフォームへの移行を難しくしていると指摘されてきた。
Cloudflareはこの批判を正面から否定する。
Workersが異なるのは、それが優れているからだ。世界数百箇所でアプリケーションを動かすことを極めてシンプルかつ安価に実現できる。この価格設定はトリックではなく、競合より効率的な新しいアーキテクチャを本当に作り上げ、そのコスト削減を反映した結果だ。
もう一つの反論として、Cloudflareはworkerdのオープンソース化を挙げる。workerdは並行実装ではなく、本番環境で実際に動いているコードそのものだ。2022年にShopifyのOxygenなど「OSSでなければ採用できない」という大口顧客の要求に応える形でオープンソース化を決断した経緯があり、実際にworkerdを使って他サービスへ移行した元顧客も存在するという。「オープンソースで逃げ道を用意することは良いビジネスだ」とCloudflareは明言している。
workerdの「隠れた弱点」とcelldの登場
workerdは本番利用を意図してリリースされたが、普及は進まなかった。Cloudflareはその理由を率直に認める。「エコシステムやツール整備が不十分だった。コミュニティが適応してくれることを期待したが、そうはならなかった」。
技術的な弱点も開示している。workerdにはDurable Objectsのスケーリング実装が欠けている。ローカルテスト用のシングルインスタンス動作はできるが、スケールアウトには対応していない。Cloudflare本番環境のDurable Objects実装は世界数百拠点・SREチーム依存の巨大なシステムであり、セルフホスティング用途には転用できないためだ。コードベースにはリリース当初からTODOコメントが残り続けていたという。
Denoチームはこの空白を独立したOSSプロジェクトとして埋めていた。それがcelldだ。celldはworkerdと完全な互換性を持ちながら、セルフホスト可能でスケーラブルなDurable Objects実装を備えている。Cloudflareが「自分たちで作りたかったもの」を、別の組織がOSSとして実現していた。Cloudflareが今回の合流を「喜んだ」と明かすのはこのためだ。
今後の計画
Ryan DahlとBert Belderは、workerdのセルフホスティングをファーストクラスでサポートする新しい取り組みをリードする。具体的には、celldのコードとアイデアをworkerdにマージしていく方針で、詳細は今後数ヶ月で順次発表される予定だ。
Cloudflare Workers上に構築されたアプリケーションが、将来的に自社インフラや他のクラウド上でも同等に動作する選択肢を持てるようになれば、エンタープライズ採用のハードルは大きく下がる。OSSコミュニティにとっても、特定ベンダーへの依存を前提としないWorkers互換実装が育つ起点になり得る動きだ。
詳細はDeno is joining Cloudflareを参照していただきたい。