エッジコンピューティング入門
エッジコンピューティングとは一体何でしょうか? エッジコンピューティングの利用を始めるのは、思っているよりも簡単です。このシリーズでは、Glitch と Fastly を使用し、エッジを活用して Webサイトを強化するコンセプトと、その実践方法を紹介します。
では、まずその背景から見てみましょう。
Web ホスティング
Webサイトを閲覧する際、ブラウザはサイトのコンテンツをデバイスにダウンロードします。コンテンツには、テキストや画像、その他のメディアアセットに加え、ユーザーがデバイス上で操作するページをブラウザがレンダリングする方法を定義するコードなどが含まれます。
サイトのコンテンツは、多くの場合、ユーザーから遠く離れたサーバーから送信されます。例えば、私は英国在住ですが、閲覧するサイトの多くは米国でホストされています。そのため、コンテンツは長距離を移動する必要があり、その結果レイテンシが発生します。これがエクスペリエンスのスローダウンにつながります。
キャッシュ
毎日アクセスする Webサイトがあるとします。毎回すべてのコンテンツを新たにダウンロードするのはかなりの無駄になります。特に、サイト内にはロゴなどの頻繁に変更されない画像ファイルが含まれているからです。幸いブラウザにはこのようなアセットをキャッシュする、つまりアセットの複製をデバイス上にローカルに保存する機能があります。
Webサイトの所有者は、これらのアセットをサーバーから新たにリクエストするまで、ブラウザがどのくらいの期間アセットの複製を保持するかを指定するキャッシュルールを設定できます。
ブラウザキャッシュは膨大なトラフィックを節約し、Web を高速化してくれますが、近所の住人も同じ Webサイトによくアクセスするとしたらどうでしょうか。2人とも、地球の裏側から同じコンテンツをダウンロードするのでしょうか…?
CDN
CDN (コンテンツ配信ネットワーク) は、サーバーにアセットの複製を保存することで、Web にキャッシュのレイヤーを追加します。CDN サーバーは、世界のさまざまな場所に配置されています。
私と隣人が毎日閲覧する Webサイトが CDN を使用している場合、私たちはどちらも Webサイトをホストしているサーバーよりも近くに位置するサーバーからアセットを取得できます。つまり、Webサイトをリクエストすると、はるばる米国までリクエストを送る代わりに、少なくとも一部のレスポンスを英国にある CDN サーバーから取得できるということです。
CDN を使用している Webサイトにリクエストを送信すると、以下のような処理が行われます。
コンテンツが CDN のキャッシュに保存されている場合、そこからレスポンスを受け取るため、サイトがホストされているオリジンまでリクエストを送 信する必要がなくなります。
コンテンツがキャッシュにない場合、CDN はオリジンにリクエストを送信し、コンテンツをユーザーに返します。
コンテンツがキャッシュ可能な場合、CDN はそれを保存し、今後そのサイトを訪問するユーザーが CDN から直接レスポンスを受け取れるようにします。
また、Webサイトの所有者がコンテンツを変更する場合、例えばサイトのデザインを変更し、キャッシュに保存されたバージョンをユーザーが取得するのを避けたい場合などは、キャッシュをパージすることで、新しいリクエストに対してオリジンサーバーから更新されたコンテンツを返せるようになります。新しいコンテンツが CDN のキャッシュに保存されると、後続の訪問者は近くにある CDN サーバーからそれを取得し、再び高速なユーザーエクスペリエンスを得られるようになります。
エッジ
キャッシュは、ユーザーの近くに配置されたサーバーのネットワークであるエッジネットワークを通じて Webサイトのパフォーマンスを向上させます。これらのサーバーは、アセットを返すだけでなく、コードを実行することもできます。つまり、エンドユーザーの近くで処理を実行する機能を Webサイトに実装できるということです。それが、エッジコンピ ューティングです。
エッジコンピューティングを使用すると、関連するユーザー情報を参考にユーザーの近くで Webサイトのユーザーエクスペリエンスを向上させるコードを実行する、ユーザーを中心に据えたアプリケーションを構築できます。多くの IoT (モノのインターネット) アプリケーションも、エッジを活用してユーザーのデバイスのより近くで処理を行っています。
エッジアプリケーションは、ユーザーとオリジンの間に位置し、以下を含む多くのことができます。
ユーザーからのリクエストやオリジンからのレスポンスを操作し、例えば位置情報データを含めたり、表示をパーソナライズしたりする。
ユーザーグループごとに異なるバージョンのサイトを配信する (A/B テストの実行など)。
オリジンサーバーを使わず、完全にエッジで生成されたコンテンツをユーザーに返す。
⛑️ Webサイトのホストで問題が発生した場合でも、オリジンのエラーに対処して信頼性の高いエクスペリエンスを提供する。
エッジで認証などの Webサイト機能の一部を実行する。
世界中のユーザーと瞬時にリアルタイムで通信できるようにする。
Web の未来を築く
現在、ほとんどの大規模 Webサイトはクラウドホスティングを導入しており、リソースをオンデマンドで割り当てるプロバイダーが管理するサーバー上でサイトが運営されています。これらの Web アプリケーションは多くの場合、サーバーレスです。クラウドプロバイダーが、Webサイトのプラットフォームであるサーバーインフラストラクチャのプロビジョニングも管理しています。これらのサーバーレスクラウド技術では、ソフトウェアのインターフェイスを通じてサーバーのリソースが公開されるため、コードを使用してサーバーで何が起こるかをコントロールできます。
プログラマブルなエッジは、このパターンをエッジネットワークに適用します。開発者は、ユーザーとホスティングサーバー間で起こるあらゆることをコードでコントロールできるようになります。これにより、画期的なユーザーエクスペリエ ンスを生み出す強力なアプリケーションの構築が可能になります。
エッジコンピューティングのような技術はこれまで、主に規模の大きな組織で使用されてきました。私たちは、誰もがこれらの機能に簡単にアクセスし、Fastly と Glitch を使用して Web の未来を築けるように取り組んでいます。これを実現できるステップバイステップのチュートリアルを近日中に公開する予定です。
このガイドのインタラクティブ版は、Glitch エディターの~fastly-compute-introをご覧ください。