CDNとは
CDNは、複数地域の配信拠点へコンテンツを置き、利用者に近い拠点から届ける仕組みです。正式名称はContent Delivery Network(コンテンツ・デリバリー・ネットワーク)です。
元データを持つorigin(オリジン)と、利用者に近いedge(エッジ)またはPoPを組み合わせ、要求経路制御、コンテンツ分配、キャッシュ、ログ集計などを行います。
「近い拠点」は地図上の距離だけで決まりません。ネットワークの経路、遅延、混雑、障害、拠点容量、契約方針から配信候補を選びます。

四つの役割を分けて見る
DNSやAnycastなどを用い、到達性、遅延、容量、方針からエッジを選ぶ。
事前配布または最初の要求時にオリジンから取得し、更新・削除を伝える。
TLSとHTTPを受け、キャッシュ、圧縮、画像変換、オリジン転送などを行う。
要求数、転送量、該当率、エラー、応答時間を集計し、監視と課金へ使う。
該当、不一致、充填の流れ
エッジに有効な複製があればキャッシュ該当として返します。なければキャッシュ不一致となり、オリジンまたは上位キャッシュへ取りに行きます。取得した応答を保存する処理がキャッシュ充填です。
多数エッジが同時に不一致するとオリジンへ要求が集中します。要求coalescingやオリジン保護を使い、同じ対象への取得をまとめる構成があります。
DNSとAnycastは案内方法が違う
DNS方式は、名前解決への応答でCDNのホスト名やアドレスを返し、利用者を候補へ導きます。再帰リゾルバーの位置が判断材料になるため、端末そのものの位置とずれることがあります。
Anycastは複数拠点から同じIPプレフィックスを広告し、ネットワーク経路制御が到達先を選びます。どちらも「必ず物理的に最寄り」を保証する仕組みではありません。
キャッシュ鍵を増やしすぎない
通常はスキーム、ホスト、パス、問い合わせなどからキャッシュ鍵を作り、必要に応じてヘッダーやCookieを加えます。利用者ごとのCookieを無条件に含めると、キャッシュが細かく分かれて該当しません。
反対に、言語や圧縮形式、認証状態を区別しなければ別内容を誤配信します。VaryとCDN固有設定を合わせ、個人データは共有キャッシュへ置かないようにします。
更新はバージョンと削除で扱う
同じURLの内容を更新すると、各エッジの古い複製が期限まで残ることがあります。緊急時のpurge(パージ)や無効化で削除できますが、世界中へ反映する時間と失敗を考慮します。
CSSや画像は内容ハッシュ付きURLへ変更すると、新旧を安全に共存させられます。HTMLの参照先を先に新資産へ切り替え、古い資産は一定期間残します。
動的コンテンツも一部をエッジで扱える
CDNは静的ファイル専用ではありません。短時間のAPIキャッシュ、エッジでのリダイレクト、認証補助、画像変換、ストリーミングなどを提供する場合があります。ただし利用できる機能と実行場所はサービスごとに異なります。
POSTをキャッシュしない、Set-Cookie付き応答を保存しないなど、安全な既定を確認します。動的処理をエッジへ移してもデータベースの正本や認可責任が消えるわけではありません。
TLSとオリジンの保護を両方行う
利用者はエッジへHTTPS接続するため、CDNが対象ドメインの証明書を扱います。エッジからオリジンまでのTLS、証明書検証、SNIも有効にします。
オリジンを公開アドレスに置く場合、CDNの接続元だけを許可する、署名ヘッダーを検証する、専用接続を使うなどして直接迂回を防ぎます。CDNを使うだけでオリジンが自動的に非公開になるとは限りません。
可用性と費用の境界を測る
エッジ障害時に別拠点やオリジンへ切り替えるフェイルオーバーを設計します。古いコンテンツを一時的に返す古い配信は、news、価格、ソフトウェア配布で許容範囲が異なります。
転送量、要求数、キャッシュ削除、画像処理、ログ保管、オリジンからCDNへの外向き通信が費用になります。地域別該当率とオリジン負荷を一緒に見ます。
CDNの効果は「導入済み」では測れません。どのURLがどの鍵で、どのエッジに何秒保存され、不一致時にどこへ戻るかを確認します。
CDNの機能分解とHTTP cacheの確認資料:RFC 6392「A Survey of Content Distribution Network Interconnection」、RFC 9111「HTTP Caching」