ブログに戻る

フォロー&ご登録

Compute による JavaScript サポート強化のお知らせ

Christine Cole

Senior Product Manager, Fastly

Fastly では当初より、JavaScript 仮想マシーンを WebAssembly サンドボックス内で実行することで優れた安全性とパフォーマンスを発揮する JavaScript SDK を構築してきました。Compute は分離技術を用いてプラットフォームを通過するリクエストごとにマイクロ秒単位でサンドボックスを作成して破棄します。このテクノロジーにより、スケーラビリティとパフォーマンスを損なうことなく、全体的に攻撃対象領域を最小化し、プラットフォームを通過する他のリクエストからコードを完全に切り離すことができます。

この JavaScript SDK のベータ版 (Beta) では、特定のアプリケーションワークロードにおいて Compute 上の JavaScript のパフォーマンスは他社のプラットフォームと同レベルでしたが、Fastly の Rust SDK に比べると劣っていることが分かりました。そこで Compute に改良を加え、JavaScript のランタイムのパフォーマンスを大幅に改善したほか、同プラットフォームの全体的な開発エクスペリエンスの向上を実現しました。

今回は、これらの改良を経て本番環境での使用に完全に対応可能になった JavaScript SDK の最新バージョンをご紹介します。それでは改善点について詳しく見てみましょう。

コンピューティングパフォーマンスの改善

お客様のコードを実行する際のパフォーマンスを改善するため、いくつかの重要な変更を実施しました。例えば Lucet WebAssembly ランタイム から、この2年間に多くのパフォーマンス最適化が施されてきた Wasmtime に切り替えました。 

また、ワークロードをスケジュールするより効率的なメカニズムを開発し、スケジューリングに必要なオーバーヘッドを大幅に削減しました。この変更は JavaScript のパフォーマンスにおいて特に重要で、ほとんどの JavaScript ワークロードにおいてパフォーマンスが倍に改善されます。

サービスインスタンスの作成に必要なオーバーヘッドを削減

パフォーマンスを最大限に高めるには、コードをできる限り速く実行することに加えて、リクエストの受信後、いかに速くコードの実行を開始できるかが決め手となります。そこで今回、Compute プラットフォームを大幅に改善し、新しいサービスインスタンスの作成に必要なオーバーヘッドを削減しました。これにより、最初の1バイトが到着するまでの時間 (TTFB) が短縮されました。

インスタンス化時間のばらつきを軽減

サービスがしばらく使用されていない場合に、オペレーションシステムがメモリの解放を処理する方法も強化しました。今回、加えた変更により、1回目以降のサービスインスタンス化の遅延が大幅に解消されました。 

その他の追加機能

上記の変更により、Compute プラットフォーム全体と JavaScript SDK が改善されただけでなく、その他のサポート言語にもメリットがもたらされました。さらに、JavaScript 開発者のエクスペリエンス向上に向けて以下の新しい機能を最新リリースに追加し、本番環境での使用に完全に対応できるようにしました。

ぜひお試しください

開発者の皆さんは JavaScript SDK を使用して Compute でパフォーマンスが高く、興味深いユースケースを実現しています。ある eコマース企業のお客様は、エッジからリダイレクトを配信することでオリジンサーバーの処理負荷を排除し、非常に優れたパフォーマンスを維持した結果、SEO ランキングが向上しました。また、あるメディア配信企業のお客様はダイナミック広告挿入をオンザフライで行い、レイテンシが少なく、高度にパーソナライズされたエクスペリエンスをエンドユーザーに提供しています。

JavaScript SDK の使用について詳しくは、Fastly のドキュメントDeveloper Hubサンプルコードをご覧ください。Fastly のサーバーレスプラットフォームをまだご利用でないお客様は、ぜひ無料トライアルで Compute を実際にお試しください