Cloud Service
Cloudflare CDN
世界中のエッジでキャッシュ・TLS 終端し、オリジンの負荷と表示遅延を減らす Cloudflare の基盤機能。AWS の CloudFront に相当し、全プランで標準有効。
- 1.ドメインをオンボードするだけで自動的に全リクエストがエッジ経由になる。
- 2.キャッシュルール・Tiered Cache・Cache Reserve でヒット率と鮮度を制御。
- 3.CDN・WAF・DDoS 防御・TLS 終端が同じエッジで一体提供される。
解決する課題
- 遠いユーザーにも 低遅延 でコンテンツを届けたい
- オリジンサーバーの 負荷とデータ転送量(egress)を下げたい
- 世界配信でも HTTPS(TLS 終端)とアプリ層防御(WAF/DDoS 対策) を一体で担保したい
- 静的アセット(画像・JS/CSS・動画)を エッジで肩代わり し、オリジンへの往復を減らしたい
主要概念と用語
- エッジネットワーク: 世界中のデータセンターで構成される Cloudflare のネットワーク。ユーザーは最寄りの拠点にアクセスする(CloudFront の「エッジロケーション」に相当)
- オリジン (Origin): 配信元となるサーバーやオブジェクトストレージ。DNS でオレンジ雲(プロキシ有効)にした状態でエッジの背後に置く
- キャッシュルール (Cache Rules): パスやパターン単位でキャッシュ可否・キャッシュキー・TTL を制御する設定単位。従来の「ページルール」の後継
- Cache Level / Edge TTL / Browser TTL: エッジでのキャッシュ期間とブラウザでのキャッシュ期間をそれぞれ制御する設定
- Tiered Cache: 上位(上流)データセンターを経由させることでオリジンへのリクエストを集約し、キャッシュヒット率を高める仕組み
- Cache Reserve: 頻度の低いオブジェクトも含めて長期間キャッシュを保持する永続ストレージ層
- パージ (Purge): キャッシュを明示的に無効化する操作。全体パージ・URL 単位パージ・タグ/ホスト単位パージなどがある
- オレンジ雲 (Proxied): DNS レコードを Cloudflare のプロキシ経由にする設定。CDN・WAF・DDoS 防御が有効になる前提条件
仕様・制限・クォータ
- キャッシュ対象はデフォルトで 静的なファイル拡張子(画像・CSS・JS 等)が中心。HTML や動的レスポンスは既定でキャッシュされないため、明示的なキャッシュルールが必要
- キャッシュできるレスポンスサイズには上限があり、超過分はキャッシュされずオリジンへの都度アクセスになる
- パージの粒度や頻度、キャッシュルールの作成数はプランによって上限が異なる
- Cache-Control ヘッダーなどオリジンの指示を尊重する設定と、Cloudflare 側の設定で上書きする設定を選べる
- 反映は基本的に短時間で全エッジに伝播するが、パージ直後でも一時的に古いレスポンスが返ることがある
内部の仕組み
ユーザーは最寄りの エッジデータセンター にアクセスします。エッジは TLS を終端し、必要に応じて WAF・DDoS 防御ルールを評価したうえで、キャッシュがあれば即座に返し(キャッシュヒット)、なければ オリジンへ取りに行き(キャッシュミス、オリジンフェッチ) レスポンスをキャッシュします。何をどれだけキャッシュするかは キャッシュルールと TTL 設定 で決まります。
- Tiered Cache を有効にすると、末端エッジがキャッシュミスした際にまず上位データセンターを確認し、そこにもなければオリジンへ向かう。これによりオリジンへの同時アクセスが集約される
- Cache Reserve はさらに長期間・大容量のオブジェクトをオブジェクトストレージ相当の永続層に保持し、エッジキャッシュからも溢れたコンテンツを守る
- 同じエッジで WAF・レート制限・ボット対策 も同時に実施され、キャッシュ判定とセキュリティ評価が一つのリクエストパスの中で行われる
TTL が長いとエッジが古い内容を返し続けます。即時性が要るなら ファイル名にハッシュを付けて別 URL 化(例、app.abc123.js)するのが定番です。パージに頼る運用は、パージ直後の一時的な不整合や運用の手間を考えると、恒常的な更新には向きません。
設計パターン / ベストプラクティス
- 静的サイト配信: オブジェクトストレージや静的ホスティングをオリジンにし、キャッシュルールで TTL を長めに設定してエッジ配信を最大化する
- パスごとに最適化: 静的アセットは TTL を長く、API や動的パスはキャッシュ対象外に分けてキャッシュルールを設計する
- オリジン保護: オリジンへの直接アクセスを避け、Cloudflare のエッジ経由のみを許可する(オリジン側で送信元 IP を絞る、認証ヘッダーを要求するなど)
- ヒット率向上: アクセスが分散しやすい構成では Tiered Cache を有効化し、オリジンへの往復を減らす
- 大容量・低頻度アクセスのコンテンツ: Cache Reserve を組み合わせて、キャッシュから溢れやすいオブジェクトも長期保持する
運用・監視
- アナリティクス(Cache Analytics) でキャッシュヒット率、リクエスト数、帯域の推移を可視化する
- ログ(Logpush 等)で「キャッシュから返ったのか、オリジンまで到達したのか」をステータスやキャッシュ判定ヘッダーで切り分ける
- 反映されない、または古い内容が返る場合は、まずキャッシュルールと TTL、オリジンの Cache-Control ヘッダーを確認する
- 5xx エラーが出る場合はオリジン側の健全性(応答時間、証明書、ファイアウォール設定)を確認する
コスト
| 要素 | 課金 | ポイント |
|---|---|---|
| CDN・キャッシュ機能 | 多くのプランで標準提供 | 基本的な CDN 機能はドメインをオンボードするだけで利用可能 |
| データ転送(帯域) | プランや契約に応じた扱い | エッジでヒットするほどオリジン側の転送量が減る |
| Cache Reserve | 保存量・操作に応じた従量 | 長期保持したい大容量コンテンツ向けの追加機能 |
| オリジン側の転送・処理 | オリジンの契約に依存 | キャッシュヒット率が上がるほどオリジン側コストが下がる |
キャッシュヒット率を上げるほど オリジンへの往復と転送量 が減ります。静的アセットは TTL を長く取り、クエリ文字列ではなくファイル名ハッシュで世代管理すると、安全にキャッシュ寿命を伸ばせます。
セキュリティ
- HTTPS 強制: エッジで TLS を終端し、HTTP から HTTPS へのリダイレクトや HSTS を有効化できる
- オリジン秘匿: オリジンへの直接到達を防ぐため、Cloudflare からのアクセスのみを許可する設定(許可リストや認証ヘッダー)を組み合わせる
- WAF・DDoS 防御と一体: 同じエッジで WAF ルール、ボット管理、レート制限を適用でき、キャッシュ配信とセキュリティ制御が分離しない
- 権限分離: アカウント配下でメンバーやトークンの権限を分け、キャッシュルールや DNS 設定の変更権限を限定する
オリジンサーバーをインターネットに直接公開したまま CDN を「並べて」置くのは危険です。ユーザーがエッジを迂回してオリジンを直接叩けると、WAF もキャッシュも素通りされます。オリジン側では送信元を Cloudflare 経由のみに限定し、必ずエッジを唯一の入口にしてください。
関連サービス・比較
| 観点 | Cloudflare | AWS |
|---|---|---|
| 位置づけ | CDN・キャッシュ(アカウント標準機能) | Amazon CloudFront |
| 設定単位 | キャッシュルール | ディストリビューション |
| エッジ拠点 | エッジデータセンター | エッジロケーション |
| ヒット率向上策 | Tiered Cache / Cache Reserve | オリジンシールド |
| アプリ層防御 | WAF・DDoS 防御を同一エッジに内包 | AWS WAF(CloudFront に付与) |
| キャッシュ無効化 | パージ(全体・URL・タグ単位) | Invalidation(パス無効化) |
ハンズオン / CLI例
Cloudflare のキャッシュ設定自体は主にダッシュボードや REST API で行いますが、Workers を使えばレスポンスの Cache-Control ヘッダーやキャッシュ挙動をコードで制御できます。ここでは wrangler で簡単な Worker をデプロイし、静的アセットに長い TTL を付与する例を示します。
# 1) プロジェクトを作成
npm create cloudflare@latest -- cdn-cache-demo
# 2) wrangler にログイン
npx wrangler login
# 3) src/index.ts でオリジンからのレスポンスに Cache-Control を付与する処理を実装後、
# ローカルで動作確認
npx wrangler dev
# 4) 本番へデプロイ
npx wrangler deploy
# 5) デプロイ後、レスポンスヘッダーでキャッシュ状態を確認
curl -I https://cdn-cache-demo.example.workers.dev/assets/app.js
Cloudflare Service
Cloudflare CDNを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ネットワーキング
比較で見る軸
クラウド: Cloudflare / カテゴリ: ネットワーキング / 難易度: basic
導入後に効く点
キャッシュルール・Tiered Cache・Cache Reserve でヒット率と鮮度を制御。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Cloudflare
- カテゴリ
- ネットワーキング
- 難易度
- basic
- 関連資格
- —
- 設計柱
- performance / cost / security
判断チェックリスト
- 自社の用途が「ネットワーキング / performance」に近いか確認する。
- 強みである「ドメインをオンボードするだけで自動的に全リクエストがエッジ経由になる。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。