用語辞典・サーバー・Web運営

CDN

CDNとは

CDNは、複数地域の配信拠点へコンテンツを置き、利用者に近い拠点から届ける仕組みです。正式名称はContent Delivery Network(コンテンツ・デリバリー・ネットワーク)です。

元データを持つorigin(オリジン)と、利用者に近いedge(エッジ)またはPoPを組み合わせ、要求経路制御、コンテンツ分配、キャッシュ、ログ集計などを行います。

「近い拠点」は地図上の距離だけで決まりません。ネットワークの経路、遅延、混雑、障害、拠点容量、契約方針から配信候補を選びます。

オリジンの内容を各地のエッジへ運び、利用者を健全な配信拠点へ案内する経路制御、分配、配信、accountingを組み合わせる
中央のオリジンから世界各地のエッジ拠点へコンテンツを配り、複数地域の利用者が経路状況に応じた拠点から受け取るCDNのピクトグラム図解
図1一つのURLでも、利用者や時刻により応答したエッジの所在地・事業者ネットワークは異なる場合があります。

四つの役割を分けて見る

要求経路制御利用者を拠点へ案内する

DNSやAnycastなどを用い、到達性、遅延、容量、方針からエッジを選ぶ。

Distributionコンテンツをエッジへ置く

事前配布または最初の要求時にオリジンから取得し、更新・削除を伝える。

Deliveryエッジから応答する

TLSとHTTPを受け、キャッシュ、圧縮、画像変換、オリジン転送などを行う。

Accounting利用量と品質を記録する

要求数、転送量、該当率、エラー、応答時間を集計し、監視と課金へ使う。

該当、不一致、充填の流れ

エッジに有効な複製があればキャッシュ該当として返します。なければキャッシュ不一致となり、オリジンまたは上位キャッシュへ取りに行きます。取得した応答を保存する処理がキャッシュ充填です。

多数エッジが同時に不一致するとオリジンへ要求が集中します。要求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」

関連用語