CDN - なぜ地球の裏側のサイトが速く表示されるのか
日本から米国のサーバーにアクセスすると、海底ケーブルを横断するだけで片道 50 ms 以上の遅延が発生します。しかし、Netflix や YouTube を視聴するとき、この遅延をほとんど感じません。その理由が CDN (Content Delivery Network) です。
CDN は、コンテンツのコピーを世界中のサーバー (エッジサーバー) に分散配置し、ユーザーに最も近いサーバーからコンテンツを配信する仕組みです。IP 確認さんにアクセスするとき、そのレスポンスがどこのサーバーから返ってきているかを意識したことはありますか?
CDN の仕組み - 3 つの核心技術
1. エッジサーバーの分散配置
大手 CDN プロバイダは、世界中の数百から数千の拠点にサーバーを配置しています。Cloudflare は 300 以上の都市、Akamai は 130 以上の国に拠点を持ちます。日本国内にも東京、大阪などに複数のエッジサーバーが設置されています。
2. DNS ベースのルーティング
ユーザーが CDN を利用するサイトにアクセスすると、DNS がユーザーの位置に最も近いエッジサーバーの IP アドレスを返します。東京のユーザーには東京のエッジサーバー、ロンドンのユーザーにはロンドンのエッジサーバーが割り当てられます。このルーティングは DNS の応答に依存するため、DNS リークが発生して本来と異なる DNS サーバーが使われると、最寄りではないエッジサーバーに接続され、速度が低下する場合があります。
3. キャッシュ
エッジサーバーは、オリジンサーバー (元のサーバー) から取得したコンテンツをキャッシュ (一時保存) します。同じコンテンツへの 2 回目以降のリクエストは、オリジンサーバーに問い合わせることなく、エッジサーバーのキャッシュから即座に返されます。
CDN が解決する 3 つの問題
レイテンシ (遅延) の削減
光の速度には限界があり、物理的な距離による遅延は避けられません。CDN はコンテンツをユーザーの近くに配置することで、この物理的な遅延を最小化します。東京のユーザーが米国のオリジンサーバーにアクセスすると RTT 100 ms 以上ですが、東京のエッジサーバーからなら 5 ms 以下です。
オリジンサーバーの負荷軽減
人気サイトに数百万人が同時アクセスしても、リクエストの大部分はエッジサーバーのキャッシュで処理されるため、オリジンサーバーへの負荷は大幅に軽減されます。
DDoS 攻撃の緩和
CDN の分散されたインフラは、DDoS 攻撃のトラフィックを世界中のエッジサーバーに分散させ、単一のサーバーに集中する攻撃を緩和します。Cloudflare や Akamai は、CDN と DDoS 防御を統合したサービスを提供しています。
CDN の裏側 - Anycast の魔法
CDN が「最も近いサーバー」にルーティングする仕組みの一つが Anycast です。Anycast では、世界中の複数のサーバーが同じ IP アドレスを共有します。ユーザーがその IP アドレスにアクセスすると、BGP のルーティングにより、ネットワーク的に最も近いサーバーに自動的に到達します。
Cloudflare の DNS サービス (1.1.1.1) は Anycast の代表例です。世界中のどこから 1.1.1.1 にアクセスしても、最寄りの Cloudflare サーバーに到達します。
CDN を使っているサイトの見分け方
- HTTP レスポンスヘッダー:
Server: cloudflare、X-Cache: HIT、Via: 1.1 varnishなどのヘッダーで CDN の使用を確認できる - DNS の CNAME: ドメインの DNS を調べると、CDN プロバイダのドメイン (例:
d1234.cloudfront.net) への CNAME が設定されていることが多い - traceroute: 最終ホップが CDN プロバイダのネットワーク内にある場合、CDN 経由でアクセスしている
まとめ
CDN は、物理的な距離という克服不可能な制約に対する、インターネットの最も実用的な解決策です。コンテンツをユーザーの近くに持っていくことで、光速の限界を「回避」しています。
IP 確認さんにアクセスするとき、ブラウザの開発者ツールでレスポンスヘッダーを確認してみてください。CDN のキャッシュヒット状況やエッジサーバーの位置情報が読み取れるかもしれません。
Web インフラの仕組みを体系的に学びたい方には、Web インフラの入門書が参考になります。