CDN は「Content Delivery Network」の略で、世界各地に置いた配信拠点(エッジ)から、利用者に近い場所でコンテンツを返す仕組みです。 オリジンサーバー1台で全世界に配る代わりに、各地のエッジサーバーがコピー(キャッシュ)を持って肩代わりします。代表的なサービスは Cloudflare、AWS CloudFront、Fastly、Akamai などです。
何が速くなるのか
- 距離が縮む … 東京の利用者には東京のエッジが返す。物理距離=遅延なので、往復時間が数分の一になる
- オリジンの負荷が減る … キャッシュから返せた分(キャッシュヒット)はオリジンに届かない。急なアクセス増にも、エッジが吸収する分だけ強くなる
効果を測る中心指標がキャッシュヒット率です。ヒット率が低ければ、CDNを入れても結局オリジンが叩かれ、効果は頭打ちになります。
得意・不得意
- 得意 … 画像・CSS・JS・動画・フォントなどの静的ファイル
- 条件付き … HTMLなどの動的ページ。キャッシュは難しくても、TLS終端や経路の最適化だけでも一定の効果はある
- 効かない … アプリやDBの処理そのものが遅い場合(それはオリジン側の問題)
キャッシュ運用の2大事故
- 更新が反映されない … キャッシュの有効期限(TTL)設計と、更新時のパージ(キャッシュ削除)やファイル名のバージョン付けをセットで考える
- キャッシュしてはいけないものを配る … ログイン後のページや個人情報入りの応答をキャッシュすると、他人の情報が別の利用者に返る重大事故になる。
Cache-Control: privateの指定を確認する
近い用語との違い
- オリジンサーバー … 元データを持つ本体。CDNはそのコピーを配る側
- エッジサーバー … CDNの末端の拠点1つひとつ
- 逆プロキシ … 前段で受ける役割の一般名。CDNは「地理的に分散した逆プロキシ網」とも言える
導入判断は CDNとは?いつ必要か、料金の落とし穴は CDNを入れても帯域コストが下がるとは限らない話 で扱っています。