Cloudflare CDN の概要と採用技術について
CDN Advent Calendar 2023 の 1 日目を担当する、watsuyo です。2023 年 9 月に、Classmethod Europe へ入社しました。
最近は、Cloudflare Workers や Next.js を使った開発で、 CDN や キャッシュについて考えることが多いです。別のブログで、CDN Edge Server について触れていましたが、今回は Cloudflare の CDN についてまとめてみようと思います。
主な参考文献は 2 つの以下のドキュメントです。どちらも Cloudflare CDN Reference と同名ですが HTML と PDF 版で内容は違います。
CDN · Cloudflare Reference Architecture docs
Cloudflare_CDN_Reference_Architecture
CDN とは?
CDN(Content Delivery Network)は、Web アプリケーションのパフォーマンスと信頼性を向上させるための重要なツールであると位置づけられています。そのような背景として、近年のインターネットトラフィックの増加に対応し、ネットワークトラフィックを効率的に管理し、遅延を減らし、パフォーマンスを向上させる必要性が高まっていることが挙げられています。
従来の Web アプリケーションにおける課題
従来の Web サイトやアプリケーションを中央集権的に配置していました。
- パフォーマンスの向上
- アーキテクチャのスケールアウト
- セキュリティの向上
- コストの抑制
上記のような課題に対して、可用性や耐障害性のために他のリージョンや複数のデータセンターに複製し、対応を行ってきました。
CDN が Web アプリケーションの課題にどう対処するか
CDN は、遅延を減らし、パフォーマンスを向上させるために、ユーザーにできるだけ近い場所でコンテンツをキャッシュします。CDN は以下の面で有効です。
- ウェブサイトの読み込み時間の改善
- コンテンツの可用性と冗長性の向上
- ウェブサイトのセキュリティ強化
- 帯域幅コストの削減
CDN ノードへのリクエストのルーティング
一般的な、CDN は DNS Unicast ルーティングと Anycast ルーティングの2つの方法でトラフィックをルーティングします。Cloudflare CDN は Anycast ルーティングを採用しています。
Cloudflare CDN とは?
Cloudflare CDN は、SaaS(Software as a Service)モデルを採用しており、Cloudflare のグローバル Anycast ネットワーク上で動作し、遅延を減らし、ネットワークの耐障害性を高め、セキュリティを向上させます。
Anycast とは?
Anycast とは、着信リクエストをさまざまな場所に転送できるネットワークアドレッシング/ルーティング方式のことです。
Anycast では、ネットワーク上の複数のノードが同じ IP アドレスを共有しし、クライアントからのトラフィックは、インターネットのルーティングプロトコル BGP を使用して、最も近いデータセンターにルーティングされます。また、複数のノードが同じ IP アドレスを持つため、一つのノードが故障した場合でも、他のノードがトラフィックを処理できます。更に、トラフィックを複数のデータセンターに分散するため、一つの場所が過負荷になることを防ぎ、DDoS攻撃に対する耐性が高いのも特徴です。
エニーキャストとは? | エニーキャストの仕組みとは? | Cloudflare
Unicast と Anycast の違い
Unicast は、一つの送信元と一つの特定の受信先の間で、一対一のデータを送受信するのに対して、Anycast は、一つの送信元から複数の受信先のうち最も近いものにデータを送受信します。
また、Unicast は、各デバイスやサーバーは固有のIPアドレスを持ち、そのアドレスにデータが直接送信されます。Anycast は、複数のサーバーやノードが同じIPアドレスを共有し、送信元からのリクエストは最も近いサーバーに自動的にルーティングされます。
Cloudflare CDN のアーキテクチャと設計
Cloudflare CDN は、Anycast ネットワークと Tiered Cache を活用し、顧客のコストを節約しながら最適化された結果を提供します。また、Argo Smart Routing を有効にすることで、最速のネットワークパスを使用してリクエストをオリジンサーバーにルーティングし、さらにキャッシュヒット率を高めるために Cache Reserve も利用できます。
CDN · Cloudflare Reference Architecture docs
Tiered Cache
Tiered Cache
Tiered Cache では、Cloudflareの各データセンターがオリジンサーバーの直接的なリバースプロキシとして機能します。キャッシュミスが発生した場合、データセンターはオリジンサーバーに直接リクエストを送ります。この方法は効果的ですが、他 のCloudflare データセンターに既にキャッシュされている可能性のあるコンテンツについては、オリジンサーバーに不必要な負荷をかけることになります。
Tiered Cache topology
Tiered Cache topology は、キャッシュされたコンテンツの効率的な配布を実現します。このシステムでは、特定のデータセンターが他のデータセンターのためにオリジンサーバーからコンテンツを取得し、キャッシュします。この機能によって、キャッシュヒット率が向上し、レスポンス時間が速くなります。
Smart Tiered Cache topology
Smart Tiered Cache topology は、Cloudflare のネットワークとパフォーマンスデータを使用して、オリジンサーバーに最も近い最適な上位層のデータセンターを動的に選択します。これにより、Tiered Cache topology と同様にキャッシュヒット率がさらに向上し、オリジンサーバーへのリクエスト数が減少します。
Regional Tiered Cache
Regional Tiered Cache は、Smart Tiered Cache topology に地域的な要素を加えたものです。このアプローチでは、リージョン内の複数の下位層のデータセンターが、地理的に近い地域層のデータセンターにリクエストを送信します。これにより、リージョン内でのレスポンス時間が改善され、グローバルなアプリケーションのパフォーマンスが向上します。
Argo Smart Routing
Argo Smart Routing は、Cloudflare ネットワークを通じて最適化されたルートを見つけ、ユーザーにより迅速なレスポンスを提供するサービスです。リアルタイムのネットワークデータとインテリジェンスを利用して、Cloudflare ネットワーク上で最速かつ最も信頼性の高い経路を選択し、オリジンサーバーへのリクエストを最適化します。これにより、ウェブアセットのパフォーマンスが平均 30% 向上することが報告されています。
Cache Reserve
Cache Reserve は、Cloudflare の長期間コンテンツキャッシュ機能で、R2 という永続的オブジェクトストレージを使用しています。この機能は、オリジンからのエグレス料金削減とウェブサイトのパフォーマンス向上を目的として設計されています。Cache Reserve は、30日間のキャッシュ保持期間を持ち、この期間内にアクセスされないコンテンツは自動的に削除されます。
この機能は、キャッシュ可能なコンテンツ、少なくとも 10 時間の TTL が設定されたコンテンツ、Content-Length ヘッダーを含むレスポンスに適用されます。これにより、オリジンサーバーへのリクエストが減少し、コンテンツのキャッシュヒット率が向上します。特に大規模なコンテンツ配信や長期キャッシュが必要な場合に有効で、他の Cloudflare キャッシュ機能と組み合わせることで、より効果的なキャッシュ戦略を実現します。
まとめ
今回紹介した、Cloudflare CDN が採用している技術は、他の CDN プロバイダーでも採用されているケースが多く、より詳細なレベルでベンチマークを取らないと比較は難しいです。Cloudflare は CDN の裏側を知らなくても簡単に扱えてしまうサービスなので、意識的に深ぼらないといけないと感じていました。この機会に採用技術について知ることができて良かったです。
余談ですが、このブログを書き終えた後、Is Cloudflare Argo worth it? という記事を見つけて読んでみました。この記事は、Argo を使用してトラフィック量や総ページ読み込み時間を計測し、その効果を確認できる内容になっています。また、Cloudflare のエッジとオリジンの間に永続的な TCP 接続を作成し、パフォーマンスの向上や接続管理を行っていた Railgun が 2023 年 6 月から 非推奨となったため、転送量の削減は R2 へ、パフォーマンス向上には Argo や CNI へ代替されるようになったようです。