ESI とエッジ向けに構築されたライブラリについて

コンテンツ配信ネットワークは従来、画像最適化やコンテンツフィルタリングなどの独自のアドオンを備え、独自に開発したコアプロダクト上に構築されていました。一方 Fastly は常にそれ以上のものを提供するべく努めてきました。当初より Varnish キャッシュ上にネットワークを構築していたため、お客様はエッジでのリクエストの処理方法を完全にプログラミングすることができました。しかし、Varnish の設定に使用されるドメイン固有言語である VCL の制約により、提供可能な機能には限りがありました。

そこで Compute を開発し、お客様による最適なソリューションの選択や、独自のソリューションの構築を可能にしました。開発者はライブラリを構築、共有し、最適な方法でニーズに特化したタスクを実行できます。ソリューションが適切に機能しない場合は、コードを確認してニーズに沿うよう変更することが可能です。

Fastly では以前からこうした取り組みを進めています。私は、新たな Rust クレートの構築に取り組んでいますが、これは Fastly や競合企業が以前提供していたものより柔軟な設定が可能な Edge Side Includes をサポートするソリューションです。

Edge Side Includes は十分に実証済みの手法で、数十年にもわたり非常に複雑な Web アプリケーションの配信に使用されてきました。別のドキュメントを取得してソースコードに埋め込むようエッジサーバーに伝える特殊なタグを HTML ソースに含めることで機能します。

<esi:include src="http://example.com/1.html" alt="http://bak.example.com/2.html" onerror="continue"/>

Fastly は長年にわたり、設定で ESIサブセットをサポートしてきましたが、2014年にそのことについて記事を執筆した際は、特定のリクエストに対してこの機能を有効化する方法については、サポートチームに問い合わせるよう読者に伝えなければなりませんでした。

ただし、この機能のサポートは限定的で、最先端のアプリケーションを構築するために開発者が必要とする柔軟性に欠けていました。例えば、XML 名前空間を別の何かに変更する必要がある場合、この実装を使用できず、Fastly 内で ESI タグを処理することはできませんでした。当時は、独自の実装を持ち込むことが不可能だったためです。

その後、さまざまな取り組みを経て、お客様がコンピューティングを完全にコントロールできる環境を提供できるようになり、エッジはこれまで以上にオープンになりました。

プログラム可能なソリューション

下記の例は、Fastly の新しい Rust ESI ライブラリにおいて、カスタム XML 名前空間「app」を使用して、複数のバックエンドから取得したコンテンツを含むページを生成する方法を示しています。送信されるリクエストを完全にコントロールできるため、高度なルーティングとコンテンツ操作が可能です。これらはドキュメントがユーザーにストリーミングされる際に実行されます。

自由自在なソリューション

もちろん、Rust や JavaScript などの言語を使用して、ESI をご自身で実装することは可能です。ただし、CDN が高度な機能を提供する背景には、確固たる理由があります。多くの人が同じ問題を抱えているということです。Fastly ではこうした機能の実装を記述する際、お客様のプログラムに迅速に適用可能で、すぐに活用できるソリューションを提供していますが、これはお客様を縛るためのものではありません。Fastly 以外の ESI ライブラリを使用したり、お客様独自のものと入れ替えたりすることもできます。

Fastly のお客様はすでにこのソリューションを使用して、現実的な問題の解決に取り組んでいます。とあるリテーラーのお客様は100以上の個別にキャッシュされたフラグメントを含む商品ページを構築しています。これは、エッジでの Rust のパフォーマンスがあってこそ実現できるものです。このお客様のチームは Fastly のローカルテストサーバーを使用することで、自社で迅速にコードをリリースしながら、完全性の高い Web のフロントエンドの維持にも成功しました。

実際に試してみたい場合は、上記の Fiddle のクローンを作成し、Fastly アカウントを作成する前にご自身のオリジンサーバーでテストしてください。完全なグローバルサービスを公開する準備ができたら、Compute の無料トライアルに登録いただくことで、すぐに ESI クレートの使用を開始できます。

Kailan Blanks
Developer Relations、Senior Software Engineer
投稿日

この記事は3分で読めます

興味がおありですか?
エキスパートへのお問い合わせ
この投稿を共有する
Kailan Blanks
Developer Relations、Senior Software Engineer

Kailan は Fastly の Developer Relations チームの Software Engineer として、顧客向けツールやコンテンツを担当しています。職務の一環として Fastly Developer Hub や、サーバーレスコンピューティング環境である Compute@Edge 関連のオープンソースプロジェクトも複数管理しています。プライベートでは、電動スケートボードでコーンウォール地方を回るのが趣味です。

Fastly試してみませんか ?

アカウントを作成してすぐにご利用いただけます。また、いつでもお気軽にお問い合わせください。