パフォーマンスの向上やユーザーエクスペリエンスの最適化を目的として、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 の統合やセットアップのシンプルさという面で優位性がありましたので、そういった部分で差別化できるのかなと感じました。
どちらも様々なプランがあるため、必要な機能や料金体系に沿った選択ができるように参考になればと思います!

参考

Fastly CDN
Next-Gen WAF
Cloud CDN
Cloud Armor