クラウドインテグレーション事業部の石川優です!
この記事は re:Invent「Scaling Multi-Tenant SaaS Delivery with Amazon CloudFront (NET316)」のセッションレポートです!!

セッション概要

Managing thousands of SaaS customer domains doesn’t have to be complex. In this session, discover how Amazon CloudFront SaaS Manager lets you deliver multi-tenant applications with speed, security – reducing operational overhead. See how to enforce security policies across every tenant, automate SSL/TLS provisioning with AWS Certificate Manager, and deliver branded, low-latency experiences worldwide. Hear from Netlify on how they deliver secure, low-latency content globally, all managed through a single unified interface serving massive SaaS customer bases with speed, reliability, and efficiency.
数千ものSaaS顧客ドメインの管理は複雑である必要はありません。本セッションでは、Amazon CloudFront SaaS Managerが、運用オーバーヘッドを削減しながら、マルチテナントアプリケーションを高速かつ安全に配信する方法をご紹介します。すべてのテナントにセキュリティポリシーを適用する方法、AWS Certificate ManagerによるSSL/TLSプロビジョニングの自動化、そして世界中でブランド化された低遅延体験を配信する方法をご覧ください。Netlifyが、単一の統合インターフェースを通じて、膨大なSaaS顧客基盤に高速性、信頼性、効率性を提供しながら、安全で低遅延なコンテンツをグローバルに配信する手法についてご説明します。

SaaS プラットフォームでは、顧客ごとに異なるドメイン、SSL 証明書、WAF ルール、キャッシュポリシーを管理する必要があります。従来は顧客ごとに CloudFront ディストリビューションを作成していましたが、管理が煩雑でスケールしづらいという課題がありました。

CloudFront SaaS Manager により、単一のディストリビューションで数千のテナントを管理し、それぞれに個別の設定を適用できるようになります。

SaaS のエッジ配信の課題

従来のアプローチの限界

単一テナントアプローチ: 各顧客に専用ディストリビューションを提供。更新がグローバルに伝播するまで数分かかり、デプロイが遅くなる。

共有ディストリビューション: 単一ディストリビューションを共有しながら、テナントを論理的に分離する方法が課題。

どちらもスケールが難しく、CDN をアプリケーションプラットフォームとして使おうとすることが根本的な問題でした。

テナント分離戦略

サイロ型分離: 専用リソースで最大限の分離を実現。高コストだがセキュリティは最高レベル。

プール型分離: リソースを共有しながら論理的に分離。効率的でスケーラブルだが、ノイジーネイバーのリスクあり。

階層型分離: 両方を組み合わせ、プレミアム顧客にはサイロ型、その他はプール型を提供。

階層型分離戦略

CloudFront SaaS Manager の構成要素

CloudFront SaaS Manager は以下の要素で構成されます。

  • マルチテナント ディストリビューション: 共有インフラ設定
  • ディストリビューション テナント: テナント固有の設定
  • パラメータ: テナントごとの変数(オリジンパスなど)
  • キャッシュポリシー: テナント識別子でキャッシュを分離
  • コネクショングループ: 接続プールをテナントグループごとに分離

新しいテナントのオンボーディングは、数時間の手動セットアップから数分・数秒に短縮され、完全に自動化できます。

HTTP 検証による証明書自動化

DNS を制御していないドメインでも、HTTP 検証により証明書プロビジョニングを完全に自動化できます。エンドカスタマーを関与させることなく、証明書をエンドツーエンドでプロビジョニング可能です。

マルチテナント設計

AWS コンソールでのデモ

実際にマルチテナント ディストリビューションとテナントを作成するデモが実施されました。

主な設定項目

  1. マルチテナント ディストリビューション作成: ワイルドカード証明書を設定し、すべてのテナントに継承
  2. パラメータ定義: S3 バケット内のパスなど、テナントごとに変わる変数を定義
  3. セキュリティ設定: WAF ルールや Web ACL を関連付け
  4. テナント作成: サブドメインとカスタムドメインを追加し、パラメータ値を設定
  5. コネクショングループ: 静的 IP リストを作成し、Apex ドメインや IP 許可リストに対応

テナント間で階層を移動する際も、キャッシュはテナントレベルで論理的に分離されているため、パフォーマンスに影響はありません。

Netlify の実装事例

Netlify は900万人以上の開発者にサービスを提供し、 600万のウェブサイトを配信しました。

SaaS Manager 採用の動機

  • コスト: CloudFront の帯域幅は、EC2 から直接インターネットに配信する場合よりも、通常かなり安価
  • ネットワーク運用: DDoS 対策をより効率的に実施可能
  • 将来の展望: 統合による製品改善の可能性

自動化の実装

顧客情報を AWS API に変換する小さなサービスを構築し、以下を自動化。

  1. ディストリビューション作成: パラメータ化された設定で API 呼び出し
  2. HTTP 検証: ACM が返す検証用 URL に静的リダイレクトを設定し、証明書を自動取得
  3. テナント更新: 証明書をテナントに関連付け

成果: 新しいドメインを10秒以内に立ち上げ、デフォルトで数千のテナントにスケール可能。

将来の機能

CloudFront Functions の活用: テナントパラメータを直接クエリし、認証 URL やシークレットをテナントごとに管理。

DDoS 対策と WAF: テナントごとに Web ACL を関連付け、IP バンのブラスト半径を封じ込め。ファジング攻撃にはディストリビューションレベルで対応。

Netlifyの実装例

まとめ

CloudFront SaaS Manager により、以下が実現できます。

  • 単一のエッジコントロールプレーンで数千のテナントにスケール
  • 各テナントに分離を提供しながら、共有ディストリビューションとモジュール式のテナント設定を組み合わせ
  • HTTP 検証による SSL オンボーディングの完全自動化
  • テナントパラメータ、オリジンルーティング、設定オーバーレイによる柔軟な管理

標準の CloudFront ディストリビューションでできることは、マルチテナント CloudFront ディストリビューションではるかに優れたスケールで実行できます。

所感

このセッションは、SaaS プラットフォーム運用の具体的な課題と解決策が非常に分かりやすく説明されていました。

特に印象的だったのは以下の点です。

  • Netlify が600万のウェブサイトを配信しながら、新規テナントのオンボーディングを10秒以内で実現
  • HTTP 検証による証明書の自動プロビジョニングで、DNS を制御していないドメインでも証明書発行が可能
  • テナント間で階層を移動してもキャッシュが論理的に分離されているため、パフォーマンスに影響なし

大規模な SaaS プラットフォームを運用している方や、これから構築を検討している方は、非常に参考になる内容かと思います。