Serving Dynamic Content with a Modern CDN
Traditional CDNs have conditioned users into thinking content falls into two fundamental types: static and dynamic. Let's break down what each of these mean to better understand how to use them.
What is Static Content?
Static content has been defined as "whatever a traditional CDN can cache". Static content is the same for all users and is faster to deliver.
What is Dynamic Content?
Dynamic content is "everything else." This
長い間、この区別はコンテンツそのものより CDN テクノロジーに関係があると信じられてきました。従来の CDN では、明確に定義された寿命の長いコンテンツのみが「静的」とみなされ、キャッシュ可能とされていました。しかし、モダンな CDN は、キャッシュの無効化、リアルタイムメトリックス、エッジ配信といった機能を備え、以前は「動的」とされていたコンテンツがキャッシュできるようになりました。コンテンツが変わったのではなく、テクノロジーが変わったのです。
現在の課題
現在、パーソナライズされたコンテンツ (多くの場合「動的」と定義される) の重要性はますます高まっています。実際、Instapage の調査では、回答者の74%がパーソナライズされていないサイトには不満を覚えると回答しており、オンラインショッピングの利用が増えている今、パーソナライゼーションの必要性はかつてないほど高まっています。
しかし、従来の CDN では、このような動的にパーソナライズされた情報 (アカウント情報、ロケーション固有の製品、在庫の変動、ローカライズされた見出しなど) をキャッシュすることはできません。つまり、従来の CDN の顧客は、オリジンへのトラフィックが多くなるためレスポンス時間に遅延が生じるだけでなく、全レスポンスのための出口データコストを含め、インフラストラクチャにかかる費用がより高額となるのです。
キャッシュ機能以外にも、従来の CDN がキャッシュされたコンテンツをエッジで提供できない理由はいくつかあります。
可視性 : オリジンから提供されるコンテンツはメトリックスで即座に表示されますが、従来の CDN の統計情報やロギングは統合が難しく、表示されるまでに数分から数時間かかることがあります。
一貫性 : 整合性を維持して失効済みの結果を回避するためには、ある1つのコンテンツを更新する際に他のコンテンツも一緒にパージする必要があります。例えば、eコマースサイトでは、商品説明を変更する際に写真や SKU も共に変更する必要があります。
コンテンツの混在 : GraphQL のようなキャッシュフレンドリーではないテクノロジーでは、ショッピングカートのような少量のパーソナライズされたコンテンツと、カートアイテムの写真や説明文などの、大量のキャッシュ可能なコンテンツを混在させてしまうことがあります。
解決法
最先端の CDN では、リクエストに応じて変化する真に動的なコンテンツをオリジンではなくエッジから配信することができます。より多くのコンテンツをキャッシュするためのストレージプールとしても機能する大容量 POP を戦略的に配置し、よりエンドユーザーに近いところでコードを実行できるようにすることで、多くのオリジンリクエストを完全に排除することができます。
モダンな CDN は、キャッシュを即時に削除できるインスタントパージ (一部 CDN ではミリ秒単位で計測) や、選択的にコンテンツをパージする機能 (「すべてをパージ」ではなく) を備えているため、企業は従来の CDN ではキャッシュできなかった多くのコンテンツをキャッシュすることが可能になります。
さらに、最先端の CDN では統計情報とログにリアルタイムでアクセスし、API のパフォーマンスをプログラムおよびモニタリングできます。これらのメカニズムはコンテンツ配信における強力な機能であり、パフォーマンスの改善、オリジンのオフロード、全体的なインサイトの提供など、組織のアプリケーションを多面的にサポートします。
エッジでのサーバーレスコンピューティングは、これをさらに進化させるものです。私たちは、コンテンツが静的か動的かにはとらわれず、すべてをエッジで構築し、限定ユースケースのみをオリジンにプッシュするエッジファーストの考え方を推進しています (これらユースケースの高速化については、今後の記事で詳しく説明します)。
今後について
次世代のエッジ配信を見据え、私たち独自のサーバーレスコンピューティング環境である Compute@Edge では、コンテンツのスティッチングが可能です。これにより、キャッシとオリジンからのコンテンツの両方を任意に組み合わせて単一のレスポンスとし、エッジからできるだけ多くのコンテンツを提供しつつ、個々のユーザーに対するレスポンスをパーソナライズできます。Fastly のチーフアーキテクトであるショーン・リーチが、Altitude で Compute@Edge を使用して GraphQL コンテンツなどをスティッチするデモを公開しています。
これは、最新の CDN とエッジベースのサーバーレスアーキテクチャが、より動的なコンテンツを提供し、ユーザーエクスペリエンスを向上させる方法のほんの一部に過ぎません。このトピックの詳細と、最新 CDN の実用例については、最新 CDN ガイド : 現代の開発者のためのセキュリティをご覧ください。