Kyushu: JavaScript Workersのためのセルフホスト可能なWASMサンドボックス

Kyushuは、開発者がJavaScriptまたはTypeScriptのハンドラーを記述し、それらを自己完結型のWebAssembly (Wasm) バイナリにコンパイルできるように設計されたオープンソースのCLIツールです。このアプローチにより、Node.js、Bun、またはDockerによるコンテナ化を必要とせずに、VPSやその他の環境でサーバーレススタイルの関数を実行することが可能になります。

WebAssemblyによる高性能な分離

Kyushuは、WebAssemblyサンドボックスを利用して、ワーカーをホストシステムから分離します。ハンドラーを単一のバイナリにコンパイルすることで、このツールはJavaScriptの実行に通常伴うシステム依存関係を取り除き、従来の仮想化やコンテナ化に代わる軽量な選択肢を提供します。

主な技術的特徴は以下の通りです:

  • Runtime Independence: Node.js、Bun、またはDockerを必要とせずに動作します。
  • API Familiarity: Cloudflare Workersスタイルの fetch ハンドラーを実装しており、エッジコンピューティングプラットフォームに慣れた開発者にとってコードの移植性と親しみやすさを提供します。
  • kinematics Self-Hostable: 生成されたバイナリは、kyu コマンドを使用してVPSや互換性のあるホスト上でデプロイおよび実行できます。

従来のランタイムとコンテナとの比較

従来のJavaScript環境は重いランタイムやコンテナイメージに依存していますが、Kyushuはロジックのバイナリ配布に焦点を当てています。これにより、アプリケーションロジックを直接実行可能なバイナリにコンパイルすることで、オーバーヘッドを削減し、ローカルテストを簡素化します。

コミュニティの議論では、Wasmベースの分離がコンテナやmicroVMsに対する明確な代替手段として機能することが強調されています。Wasmで6年間活動してきたユーザー @cohix が指摘しているように:

彼らはそれぞれ有用であり、異なる用途に適しています。[Wasmは] 分離/仮想化(コンテナ、microVMs、Wasm)に関して、人々に選択肢を与えます。

ユースケースとデプロイ

Kyushuは、Cloudflare Workersのようなマネージド・エッジ・プラットフォームのセルフホスト可能な代替手段として位置付けられています。これにより、開発者はサーバーレスハンドラーのデベロッパーエクスペリエンス (DX) を活用しながら、自身のインフラストラクチャを完全に制御することが可能になります。

インストールは、シンプルなシェルスクリプトを介して行われます: curl -fsSL https://kyushu.dev/install | bash

Sources