オープンソースのWebAssemblyサーバレス基盤「Wasm Workers Server 1.0」正式リリース。RubyとPythonのWASMランタイムに対応し、Ruby/Pythonでの記述が可能に
今回は「オープンソースのWebAssemblyサーバレス基盤「Wasm Workers Server 1.0」正式リリース。RubyとPythonのWASMランタイムに対応し、Ruby/Pythonでの記述が可能に」についてご紹介します。
関連ワード (抜粋、記述、起動等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
VMware Wasm Labsは、Node.jsやDenoのようにWebAssemblyやJavaScriptで記述したWorkerをサーバサイドでイベントドリブンに実行できる「Wasm Workers Server」のバージョン1.0をリリースしました。
Wasm Workers Server v1.0.0 is out. We are happy to announce the support for Python, Ruby and more languages in the future!
From now on, you can create worker-based serverless apps using any of these languages and run them in #WebAssemblyhttps://t.co/oeceLzHQTO
— Wasm Labs (@vmwwasm) February 23, 2023
Wasm Workers Serverは、WebAssemblyランタイムであるWasmtimeの上に構築されているのが特徴。
Wasm Workers Serverのディレクトリに保存されたWorkerとなるファイルが、WebブラウザなどからのHTTPリクエストによって起動、実行され、結果を返す、といった処理が可能です。
Wasm Workers Servece 1.0でRubyとPythonに対応
これまでWorkerとなるファイルは、Rustで記述されWebAssemblyにコンパイルされたWebAssemblyモジュールのファイルか、JavaScriptで記述されたファイルに限られていました。
WorkerとしてWebAssemblyに対応しているのは、Wasm Workers ServerがWebAssemblyランタイムのWasmtimeを基盤としていることから当然と言えます。
JavaScriptが実行可能なのは、Wasm Workers ServerにWebAssemblyによるJavaScriptランタイムであるQuickJSが組み込まれているからです。QuickJSがJavaScriptファイルを読み込んで実行します。
そして今回のWasm Services Worker 1.0では、この2つに加えてRubyとPythonで記述されたスクリプトもWorkerとして実行可能になりました。
これはRubyとPythonをそれぞれWebAssembly上で実行可能にするWebAssemblyランタイムを利用することで実現されました。現時点ではVMware Labsが独自にビルドしたランゲージランタイムが利用されます。
ファイルベースのルーティング機能を搭載
Wasm Workers Serviceの具体的な動きを見てみましょう。以下はデモ動画「Python and Ruby support in Wasm Workers Server v1.0.0」からの抜粋です。
Rubyで「Hello from Ruby」と返すシンプルなWorkerファイルを記述し、Wasm Workers Serverのディレクトリに「worker.rb」というファイル名で保存します。
Wasm Workers Serviceはファイルベースのルーティング機能を備えているため、ファイル名によって自動的にこのWorkerのエンドポイントが決まります。
ローカルでアクセスする場合、Webブラウザから「127.0.0.1:8080/worker」へアクセスすることで、このworker.rbにアクセスでき、実行されて「Hello from Ruby」が表示されるわけです。
Wasm Workers Service 1.0ではダイナミックルーティング機能も備わりました。今後はさらに新たなプログラミング言語への対応なども追加すると説明されています。
このようにWasm Workers Serviceは、WebAssemblyのおかげでWindows、Linux、macOSをはじめとする多くのOSに対応し、ローカルマシンやクラウド、コンテナ環境などを含むほどんな環境でも簡単にインストールして実行でき、マルチランゲージ対応に対応するシンプルなサーバレス基盤となっています。