パフォーマンスの向上やユーザーエクスペリエンスの最適化を目的として、Contents Delivery Network(CDN) を導入している企業は少なくないと思います。
特に近年では、導入および運用管理のしやすさからクラウド型の CDN の人気が高まっています。
今回は私の経験をベースに Fastly と Google Cloud の Cloud CDN について比較を行いました。
概要
まずは、それぞれの特徴や所感についてざっくりと説明します。
Fastly
Fastly は基本的に Varnish Configuration Language(VCL) を使用した制御となりますが、コンソールでのサービス構築もできるため、VCLの知識がそこまでなくても設定はできそうと感じました。
しかし、細かい設定を行いたい場合はVCLを使って記述する必要があるため、初心者のハードルは高いと感じました。
その代わり、かなり細かく柔軟な設定ができるため、設定次第でキャッシュヒット率やデータ量削減といった面で大きな効果を期待できます。
仕組みや使い方については、Fastly の方が出している以下のブログが大変参考になりました。
Fastly VCL 入門
Cloud CDN
Cloud CDN は HTTP(S) ロードバランサーとセットで利用する必要があり、ルーティングや TLS 周りはロードバランサーにて行い、キャッシュやコンテンツ周りの制御は Cloud CDN で行う仕組みとなっております。
Fastly ほど細かいキャッシュ制御はできませんが、デフォルトで推奨設定となっているため、CDN 側で細かい制御がいらない場合は数クリックで簡単に構築できます。
また、Google Cloud の他サービスとのシームレスな統合が特徴なのでシンプルで包括的な構成を実現できます。
構成ごとの設定方法が以下に記載されているためご参照ください。
Cloud CDN を設定する
使い方や出来ることについては以下にまとめました。
項目 | Fastly | Cloud CDN |
---|---|---|
インターフェース | Webコンソール、VCL、API | Webコンソール、API |
コンテンツ配信 | Fastly コンテンツ配信ネットワーク | Google グローバル エッジ ネットワーク |
TLS | Fastly TLS | HTTP(S) ロードバランサー |
コンピューティング | Compute(旧Compute@Edge) | なし |
セキュリティ | Fastly Next-Gen WAF(Signal Science) | Cloud Armor |
オブザーバビリティ | リアルタイムログストリーミングやカスタムログ、ダッシュボード | Cloud Logging や Cloud Monitoring |
公式ドキュメント | 何から進めれば良いか分かりづらい 日本語対応しているページが少ない |
推奨設定や設定例などの記載が多く分かりやすい 日本語対応ページが多い |
できることは概ね変わりませんが、Cloud CDN にはコンピューティング機能がないため、Cloud Functions や Cloud Run を使った別の仕組みを構成する必要があります。
続いて、CDN と WAF の機能についてもう少し詳しく比較していきます。
CDN の機能比較
CDN の主に利用されていそうな機能の有無についてを比較しました。
各機能にはそれぞれの制限事項がありますので、その点は別途注意が必要です。
項目 | Fastly | Cloud CDN |
---|---|---|
ルーティング | ホストやパス、クエリパラメータ、ヘッダーなどに基づく設定が可能 | ホストやパス、クエリパラメータ、ヘッダーなどに基づく設定が可能 |
URLリダイレクト | VCLで可能 | HTTP(S) ロードバランサーで可能 |
URLリライト | VCLで可能 | HTTP(S) ロードバランサーで可能 |
画像変換 | Image Optimizer でリアルタイムなリサイズや最適化が可能 | 不可 |
動的圧縮 | 可能 | 可能 |
カスタムエラーページ | VCLやSynthで可能 | HTTP(S) ロードバランサーで可能 |
一番大きな違いは画像変換の有無かと思います。
Fastly の Image Optimizer は追加料金がかかりますが、それ以上にレイテンシーの低減やデータ通信量などの大幅な削減が期待できるため可能なため、全体的なコストパフォーマンスに優れており、Fastly を選ぶ際の決定的な要因となり得る機能です。
Image Optimizer で出来ることや詳細については下記をご確認ください。
Image Optimizer
WAF の機能比較
WAF の機能について比較をしました。
上述の通り、Fastly では Next-Gen WAF(Signal Science)が提供されており、Google Cloud では Cloud Armor が該当するサービスとなっています。
項目 | Fastly | Cloud Armor |
---|---|---|
導入オプション | エージェント/モジュール型 インスタンス型(Cloud WAF) クラウド型(Edge Deployment) |
クラウド型(HTTP(S) ロードバランサー) |
WAF機能 | OWASP Top 10 を始めとした攻撃検知 L7 の DDoS 攻撃からの保護 |
OWASP Top 10 を始めとした攻撃検知 L7 の DDoS 攻撃からの保護 |
カスタムルール | 可能 | 可能 |
レート制限 | 可能 | 可能 |
Bot 管理 | 可能 | 可能(reCAPTCHA Enterprise) |
オブザーバビリティ | リアルタイムログストリーミングやカスタムログ、ダッシュボード | Cloud Logging や Cloud Monitoring 、Security Command Center |
運用作業 | 誤検知に対するルールのチューニング 新しい脆弱性に対するルールの追加 |
誤検知に対するルールのチューニング 新しい脆弱性に対するルールの追加 |
どちらも基本的な機能は網羅されており、プランによって使える機能が変わるという体系になっています。
Fastly は SmartParse、Cloud Armorは Common Expression Language(CEL) と呼ばれる仕組みを採用しており、従来のような正規表現で識別する仕組みよりも誤検知が少ないことが特徴です。
さらに、影響が大きい新しい脆弱性などは定義済みのルールが提供されるため、運用負荷が少ないというメリットがあります。
また、追加料金がかかりますが、Cloud Armor Enterprise の名前付き IP アドレスリストという機能には Fastly が含まれているため、組み合わせて使用しやすくなっております。
名前付き IP アドレスリストを使用する
終わりに
Fastly と Cloud CDN について主に機能面で比較をしました。
CDN としては Fastly のほうが幅広い機能を持ち、多くのユースケースに応えられるように見受けられました。
一方で、Cloud CDN は Google Cloud の統合やセットアップのシンプルさという面で優位性がありましたので、そういった部分で差別化できるのかなと感じました。
どちらも様々なプランがあるため、必要な機能や料金体系に沿った選択ができるように参考になればと思います!