CDNのエッジでJavaScriptとServiceWorkerを実行できる「Cloudflare Workers」がWebAssemblyに対応
CDNプロバイダのCloudflareは、3月にリリースした「Cloudflare Workers」を強化し、WebAssemblyの実行に対応したことを発表しました。
Cloudflare Workersは、同社が提供するグローバルなコンテンツデリバリーネットワーク(CDN)のエッジにおいて、開発者がJavaScriptのコードを配置し実行できる機能を提供します。また、HTML5の新機能として策定されたService Workerも利用可能です。
参考:JavaScriptのコードとService Workerをユーザーに近いCDNのエッジで実行可能。Cloudflareが「Cloudflare Workers」を提供開始
Service Workerとは、もともとWebブラウザに実装されバックグラウンドで起動される、いわばプログラミング可能なローカルプロキシです。ルーティングやレスポンスやキャッシングなどを操作でき、オフラインで動作するWebアプリケーションを実現する上で重要な機能を提供します。
これをCDNのエッジで提供することにより、JavaScriptで操作可能なインテリジェントなキャッシュやルーティングなどを実現できます。
これによってクライアントに対して非常に高速にレスポンスを返すことができ、またオリジンサーバの負荷を効果的に削減しつつ、広範囲に分散された高い冗長性を持つ分散システムが構築可能になります。
Cloudflare WorkersがWebAssembly対応に
今回発表されたのは、このCloudflare WorkersがWebAssemblyに対応したことです。WebAssemblyは、Webブラウザ上でネイティブコードに近い実行速度で高速に実行できるバイナリフォーマットで、C言語やGo言語、Rust言語などさまざまな言語から生成できます。
Cloudflare WorkersがWebAssemblyに対応したことで、JavaScript以外での開発が可能になることと、JavaScriptのコードよりも高速にアプリケーションが実行できるようになります。
では、どのような場合にCloudflare WorkersでWebAssemblyを用いるのか。Cloudflareのブログに投稿された記事「WebAssembly on Cloudflare Workers」では、次のように説明されています。
WASM really shines when you need to perform a resource-hungry, self-contained operation, like resizing an image, or processing an audio stream.
WASMがその能力を本当に発揮するのは、リソースを大量に消費する自己完結型の処理、例えば画像のサイズ変更や音声処理などの場面だ。
These operations require lots of math and careful memory management. While it's possible to perform such tasks in pure JavaScript — and engines like V8 have gone to impressive lengths to optimize such code — in the end nothing beats a compiled language with static types and explicit allocation.
これらの処理は多くの計算と綿密なメモリ管理が求められる。これらはJavaScriptでもできないことはないし、V8エンジンはそうした大きな処理を最適化する能力に達してもいるが、結局のところ静的型付けと明確なメモリ割り当て処理(が行えるWebAssembly)に勝るものはないのだ。
この例に挙げられているようなヘビーな処理をユーザーに近いエッジで分散して実現できるとすれば、クラウドを用いた集中処理とは異なる興味深いアプローチが実現できそうです。
あわせて読みたい
オラクル、NoSQLの自律型データベース「Autonomous NoSQL Database」提供開始
≪前の記事
Yahoo! Japanが近日中にFIDO認証に対応すると表明、パスワードを使わず生体認証などでWebブラウザからのログインを可能に