Compute : セキュリティを損なうことなくコールドスタートなしで実行可能な JavaScript のサポートをご要望に応えて実現
これまで開発者は JavaScript を記述し、WebAssembly にコンパイルして Compute で使用することができませんでした。JavaScript は開発者の間で人気の高い言語なので、これが Compute の導入への障壁となることは分かっていましたが、安易に手を抜いたり、セキュリティとパフォーマンスのトレードオフに悩まされるようなことはしたくありませんでした。
トレードオフの理由は、従来 JavaScript 環境 (V8 など) では、最低5ミリ秒程度のレイテンシがスタートアップ時に発生するためであり、しかもこれにはアプリケーションの初期化にかかる時間は含まれていません。この「コールドスタート」が原因で、セキュリティリスクが高まり、レイテンシが増大します。
しかし幸いなことに、これらの懸念を払拭する解決策を見いだすことに成功し、WebAssembly と Computeで JavaScript を使用できるようになりました。これにより、サーバーレスのビルド環境でスピードと安全性を確保しながら、使い慣れた言語を使用してよりスピーディに Computeで構築を開始することが可能になりました。今回は、この最も人気の高いコンピューティング言語 を Compute でサポートできるようになった背景についてご紹介します。
JavaScript と Compute
インスタンスの作成に使用される JavaScript エンジンは大規模なコードベースであるため、攻撃者が JavaScript 仮想マシン経由でシステムにアクセスするのを可能にするバグが導入されやすいという問題があります。そのため、Chrome や Firefox などのブラウザは、サイトが完全に独立したプロセスで運用されるよう細心の注意を払っており、処理中のサンドボックスをセキュリティの境界として扱わないようアドバイスしています。
Fastly では、Compute で JavaScript をサポートできるようにするために、まずセキュリティの確保に注力しました。JavaScript 仮想マシンを WebAssemby のサンドボックス内で実行することで、さらなる防衛線としてより安全な境界線を外側に設置してセキュリティを強化できます。Compute は分離技術を用いてプラットフォームを通過するリクエストごとにマイクロ秒単位でサンドボックスを作成して破棄します。このテクノロジーにより、スケーラビリティとパフォーマンスを損なうことなく、全体的に攻撃対象領域を最小化し、プラットフォームを通過する他のリクエストからコードを完全に切り離すことができます。他のサーバーレスプラットフォームでは、レイテンシを隠すテクノ ロジーが使用され、リクエスト間でインスタンスが再利用されるケースがよくありますが、これにより攻撃の影響範囲が拡大するため、深刻なセキュリティリスクを伴います。
さらに私たちはパフォーマンスにも注目しました。Compute で高パフォーマンスをどう実現するかが、プラットフォームのセキュリティに直接影響するためです。もともと JavaScript 環境ではスタートアップ時にある程度のレイテンシが発生します。しかし Compute で JavaScript を使用した場合、ゼロミリ秒のコールドスタートを実現し、65以上の高パフォーマンス・サーバー・クラスターにアクセスでき、優れたスケーラビリティと卓越したコンピューティングリソースを活用してコードを実行できます。これによりアプリケーションのパフォーマンスを向上させながら、攻撃対象領域を縮小することが可能になります。Fastly では独自の手法により (詳しくは Bytecode Alliance のブログ記事を参照)、他の言語と同様にリクエストごとに新しいインスタンスを作成するアプローチを採用して JavaScript を実行することができます。通常、インスタンスの作成と、そのインスタンスで実行される JavaScript の初期化の組み合わせによりコストがかさみ、レイテンシが増えるため、このアプローチは不可能です。
今日のニーズに応えるサーバーレス JavaScript
JavaScript は至る所で使用されています。現在、JavaScript は開発者の間で最も人気のあるプログラミング言語です。Web エクスペリエンスを構築しているほぼすべての開発者が JavaScript 開発の経験があり、ブラウザ用言語の WebAssembly の採用が増えているとはいえ、現在でも多くの Web アプリケーションが JavaScript で実行されています。
Compute でこの人気の言語をサポートできるようになり、私たちも嬉しいです。JavaScript のサポートに関する詳細および使用方法については、Developer Hub をご覧ください。まだ Compute をご利用でない場合は、今すぐご登録の上、サーバーレスのパワーをぜひ実感してください。