OpenWorkers: RustによるセルフホスティングのCloudflare Workers
106日前原文(openworkers.com)
概要
OpenWorkersは、V8を利用したJavaScript実行環境を自前で構築できるオープンソースランタイム。
Cloudflare Workers互換の構文とAPIをサポートし、エッジコンピューティングを自社インフラで実現。
Docker ComposeとPostgreSQLのみでシンプルなセルフホスティングが可能。
ベンダーロックイン回避とコスト予測性に重点。
今後は実行記録・リプレイによるデバッグ機能も計画。
OpenWorkersとは
- OpenWorkers:V8 Isolateを活用したJavaScript実行ランタイム
- エッジコンピューティング:自社インフラでCloudflare Workers同等の体験
- オープンソース:Rust製、自由に改変・拡張可能
- Cloudflare Workers互換:既存のWorkersコードをそのまま利用可能
主な機能
-
バインディング
- KVストレージ:get, put, delete, list
- PostgreSQL連携:データベース操作
- S3/R2互換ストレージ:オブジェクト保存
- サービスバインディング:外部サービス連携
- 環境変数・シークレット:安全な情報管理
-
Web APIサポート
- fetch, Request, Response:HTTP通信
- ReadableStream:ストリーム処理
- crypto.subtle:暗号化API
- TextEncoder/Decoder, Blob:バイナリ・テキスト処理
- setTimeout, AbortController:非同期制御
アーキテクチャ概要
- nginx:リバースプロキシ役割
- ダッシュボード:管理用UI
- APIサーバー:リクエストの受付・処理
- ログサーバー:アクセス・実行ログ管理
- Runner(複数台):V8 IsolateでJSコード実行
- PostgreSQL:永続データ保存
- NATS:メッセージキュー
- Postgate:PostgreSQL連携ゲートウェイ
- Scheduler:cronスケジューリング処理
サンドボックス・制限
- V8 Isolate:各WorkerごとにCPU(100ms)・メモリ(128MB)制限
- セキュリティ:サンドボックスによる安全な実行環境
- cron:5または6フィールドのcron構文対応
セルフホスティングの特徴
- シンプルな導入:Docker Composeファイル+1つのPostgreSQLのみで構築可能
- データ主権:全データが自社インフラ内で完結
- 予測可能なコスト:リクエストごとの従量課金なし
- ロックイン回避:ベンダー依存なし
開発の経緯と思想
- 7年超の進化:初期はvm2、次にdeno-core、現在はrusty_v8ベース
- 目的:Cloudflare Workers相当の開発体験を自社サーバーで実現
- Claudeの協力:rusty_v8への全面書き換えを実現
- 今後の展望:
- 実行記録・リプレイによる決定論的デバッグ
- さらなる互換性向上と機能追加
利用メリット
- 自社データの保護:外部にデータが流出しない
- コスト管理:予測しやすい運用費用
- Cloudflare Workers互換:移行・併用が容易
- 柔軟な拡張性:OSSならではの自由度
OpenWorkersは、エッジコンピューティングのパワーを自社インフラに持ち込みたい開発者・企業にとって、Cloudflare Workersと同等の体験をセルフホストで実現する理想的な選択肢。