Fastly、JavaScriptエンジンをWebAssemblyで実装。CDNエッジのサーバレス環境「Compute@Edge」でJavaScriptサポート発表(訂正済み)
(お詫びとお知らせ:本記事はFastlyの発表と同社へのメールでの取材に基づいて執筆いたしましたが、記事公開後に同社より、回答を間違えたとの申し出がありました。そのため改めて同社から提供された情報を基に、タイトルと本文を訂正しました。訂正前の記事内容は本文最後にHTMLでコメントアウトされています。)
大手CDNベンダのFastlyは、CDNエッジで提供しているサーバレスコンピューティング環境「Compute@Edge」で、JavaScriptのサポートを発表しました。
JavaScript on Compute@Edge is here.
— Fastly (@fastly) July 21, 2021
https://t.co/wSHiJfPdvf pic.twitter.com/iz7sCtMlgx
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で実装する方法を選択することとなりました。
あわせて読みたい
Facebook、次期ビルドシステムの開発でRust言語の採用を明らかに
≪前の記事
Google Cloud、オンプレミスのAnthos上のWindows Server Containerサポートを発表、プレビュー開始