マイクロソフト、OSを介さず仮想化ハイパーバイザ上でWasmを高速起動し実行できる「Hyperlight Wasm」、オープンソースで公開
マイクロソフトは仮想化ハイパーバイザのマイクロゲストとしてWebAssemblyランタイムを実行する「Hyperlight Wasm」をオープンソースで公開しました
Hyperlightはマイクロゲストを実現するライブラリ
Hyperlight Wasmの基盤となるHyperlightは、仮想化ハイパーバイザ上にマイクロゲストを作成するライブラリソフトウェアです。
そもそも仮想化ハイパーバイザでは一般に、ホストとなる仮想化ハイパーバイザ上にゲストとなる仮想マシンが作成され、その仮想マシン内でOSが実行され、OS上でアプリケーションが実行される、という階層構造になっています。
仮想マシンやOSなどから構成されるこうした階層構造のおかげで、アプリケーションの実行環境の互換性が保たれるわけですが、一方でこれはコンピューティングリソースの面ではオーバーヘッドであり、アプリケーションが起動するまでの時間もかかります。
Hyperlightはこのオーバーヘッドを不要にすべく、アプリケーションをハイパーバイザ上のマイクロゲストとして直接実行可能にするライブラリです。
Hyperlightは仮想化ハイパーバイザが提供するメモリとCPUリソースの一部を安全にスライスしてマイクロゲストを作成するというシンプルな仕組みです。
特定のホストマシンをエミュレートする仮想マシンも、その上で実行されるOSも提供されない代わりに、マイクロゲストの高速な起動と効率的なコンピューティングリソースの利用、そして仮想マシンレベルの安全な分離が提供されるわけです。
C言語やRust言語とHyperlightを用いてコードを記述しコンパイルすることで、コールドスタートであっても仮想化ハイパーバイザ上で超高速に起動し、安全に実行される関数(ファンクション)が実現されるのです。
Hyperlight Wasmは、Wasmをマイクロゲストとして実行
今回、オープンソースで公開されたHyperlight Wasmは、このマイクロゲストとしてWebAssemblyランタイム(Wasmtimeが採用されているようです)を用いることで、仮想化ハイパーバイザ上で仮想マシンやOSを介すことなく、超高速にWebAssemblyランタイムが起動し実行されます。
OSなどを介すことなく、仮想マシンレベルで安全に分離された環境でWebAssemblyアプリケーションが実行可能になるのです。
もちろんRustやGoなどの言語を用いてWebAssemblyバイナリをターゲットにしたバイナリを出力してWebAssemblyランタイムで実行することもできますし、RubyやJavaScriptのようなWebAssemblyで実装された言語のランタイムがある言語であれば、WebAssembly上で言語のランタイムを実行し、そこでRubyやJavaScriptのコードを実行することも可能です。
マイクロソフトによると、Hyperlight Wasmの起動には現時点で1~2ミリ秒かかり、将来的には1ミリ秒未満になるよう取り組んでいるとのこと。
これだけ高速に起動するようになると、アプリケーションの起動を高速にするテクニックとしてのウォームプールなども不要になるため、より効率の高いコンピューティングリソースの利用が期待されるとしています。
あわせて読みたい
AWS、すべてのリージョンとアベイラビリティゾーンの地理情報を明示へ
≪前の記事
シェルでコンテナの実行や操作ができる「Dagger Shell」、Docker創始者らによるDagger社からオープンソースで登場