Fastly、JavaScriptエンジンをWebAssemblyで実装。CDNエッジのサーバレス環境「Compute@Edge」でJavaScriptサポート発表(訂正済み)

2021年7月27日

(お詫びとお知らせ:本記事はFastlyの発表と同社へのメールでの取材に基づいて執筆いたしましたが、記事公開後に同社より、回答を間違えたとの申し出がありました。そのため改めて同社から提供された情報を基に、タイトルと本文を訂正しました。訂正前の記事内容は本文最後にHTMLでコメントアウトされています。)

大手CDNベンダのFastlyは、CDNエッジで提供しているサーバレスコンピューティング環境「Compute@Edge」で、JavaScriptのサポートを発表しました。

Compute@Edgeは、同社が開発したWebAssemblyのランタイム「Lucet」をベースにした、CDNエッジでのサーバレスコンピューティング環境です。あらかじめプログラムのコードをWebAssemblyのバイナリにコンパイルしたものを実行することで、約35マイクロ秒という高速でアプリケーションが起動することを大きな特徴としています。

ただし、WebAssemblyのバイナリを生成できるプログラミング言語としてよく使われるのはGo言語やC/C++、Rustなどであり、一般にJavaScriptが使われることは滅多にありません。そのため、Compute@EdgeでもJavaScriptはサポートされていませんでした。

JavaScriptエンジンのWebAssembly版を開発

そこで同社は今回のCompute@EdgeでJavaScriptをサポートするに当たり、Compute@Edge上でWebAssembly版のJavaScriptエンジンを実行することにしました。

具体的には、FirefoxのJavaScriptエンジンであるSpiderMonkeyのWebAssembly版を開発。このWebAssembly版SpiderMonkeyをCompute@Edge上で実行することで、アプリケーションとなるJavaScriptコードの実行を実現しました。

WebAssemblyによるJavaScriptエンジンの実装と、これによる起動速度や実行速度の最適化については、先月にBytecodeAllianceのWebサイトでFastlyのLin Clark氏が技術解説をしています。

これによると、WebAssembly版のJavaScriptエンジンでも、事前初期化ツールを用いてビルド時にJavaScriptエンジンによるJavaScriptコードの初期化処理を実施し、初期化済みのバイトコードをJavaScriptエンジンに持たせることで起動時間が劇的に短縮できることを示しており、こうしたテクニックが今回のCompute@EdgeでのJavaScriptサポートでも参照されているとしています。

同社は以前から、近い将来Compute@EdgeでのJavaScriptサポートを行うと表明していました。この表明時には、AssemblyScriptを用いることで、JavaScriptからWebAssemblyバイナリを生成する計画を示していました。しかし今回発表されたJavaScriptサポートでは結局その方法ではなく、JavaScriptエンジンをWebAssemblyで実装する方法を選択することとなりました。

このエントリーをはてなブックマークに追加
follow us in feedly




カテゴリ

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本