CDN

世界中のエッジロケーションにコンテンツをキャッシュし、低レイテンシで配信するネットワーク

インフラパフォーマンス

CDN とは

CDN (Content Delivery Network) は、世界中のエッジロケーション (PoP) にコンテンツをキャッシュし、ユーザーに最も近いサーバーから低レイテンシで配信するネットワークである。AWS では CloudFront が CDN サービス。Akamai が 1998 年に商用 CDN を開始し、現在は CloudFront、Cloudflare、Fastly が主要プレイヤーだ。

CDN なし vs CDN あり

CDN なし:
  東京のユーザー → 米国のオリジンサーバー (200ms)

CDN あり:
  東京のユーザー → 東京のエッジロケーション (10ms) ← キャッシュ済み

CloudFront の構成

ユーザー → CloudFront (エッジ) → オリジン (S3 / ALB / API Gateway)
                ↑ キャッシュヒット → オリジンにアクセスしない

CloudFront は 600 以上のエッジロケーションを持ち、リクエストを最も近いエッジにルーティングする。

キャッシュ戦略

コンテンツ キャッシュ TTL 理由
静的ファイル (JS, CSS, 画像) 1 年 ファイル名にハッシュを含める (app.a1b2c3.js)
HTML 短い (数分) or なし 最新コンテンツを表示
API レスポンス 数秒〜数分 データの鮮度による

キャッシュヒット率の改善

キャッシュヒット率が低いと CDN の効果が薄れる。改善のポイント:

  • クエリ文字列の正規化: 不要なクエリパラメータをキャッシュキーから除外する
  • Cookie の除外: 静的ファイルのリクエストに Cookie を含めない
  • Accept-Encoding の統一: gzip / Brotli の圧縮形式でキャッシュを分けすぎない
  • キャッシュポリシーの適切な設定: CloudFront のマネージドキャッシュポリシーを活用する

S3 + CloudFront (静的サイトホスティング)

S3 (オリジン、非公開) → CloudFront (CDN、HTTPS) → ユーザー

S3 を直接公開せず、OAC (Origin Access Control) で CloudFront 経由でのみアクセスさせる。HTTPS、カスタムドメイン、キャッシュが自動的に適用される。

CDN の効果

  • レイテンシ削減: ユーザーに最も近いエッジから配信
  • オリジン負荷軽減: キャッシュヒットによりオリジンへのリクエストが減少
  • DDoS 緩和: エッジで攻撃トラフィックを吸収 (AWS Shield Standard が自動適用)
  • TLS 終端: エッジで TLS を処理し、オリジンの負荷を軽減
  • 自動圧縮: gzip / Brotli でレスポンスサイズを削減

Lambda@Edge と CloudFront Functions

エッジでコードを実行し、リクエスト/レスポンスを動的に処理できる。

機能 Lambda@Edge CloudFront Functions
実行場所 リージョナルエッジ エッジロケーション
実行時間 最大 30 秒 最大 1 ミリ秒
メモリ 最大 10 GB 2 MB
用途 A/B テスト、認証、リダイレクト ヘッダー操作、URL 書き換え

よくある落とし穴

問題 対策
キャッシュが効かない Cache-Control ヘッダーを確認
更新が反映されない ファイル名にハッシュを含める
CORS エラー CloudFront のレスポンスヘッダーポリシーで設定
カスタムエラーページが表示されない CloudFront のカスタムエラーレスポンスを設定

現場での応用を知るには関連書籍も役立つ。

関連用語