【書評】マルチテナントSaaSアーキテクチャの構築
いわさです。
「Building Multi-Tenant SaaS Architectures」という海外の書籍があります。
著者は Tod Golding さんで、AWS のシニアプリンシパルソリューションアーキテクトの方です。
SaaS on AWS の領域でよく見かける方で、先日もラスベガスの re:Invent 2024 で講演されておりました。
マルチテナント SaaS を構築・運用するためには様々な課題に取り組む必要があるのですが、上記書籍はそれらの実用的なテクニック・戦略・パターンを解説したものです。
Building Multi-Tenant SaaS Architectures の日本語翻訳版が出るよ
Building Multi-Tenant SaaS Architectures は 2024 年 4 月に発売されたのですが、来月 2025 年 1 月になんとこちらの日本語翻訳版も出版されます。
今回、この日本語翻訳版にレビュアーとして参加させて頂く機会を頂きまして、発売前ですが書評の許可も頂くことが出来ました。
本書の章構成と各章の概要と所感を紹介したいと思います。
書籍情報
- マルチテナントSaaSアーキテクチャの構築 ―原則、ベストプラクティス、AWSアーキテクチャパターン
- Tod Golding 著、河原 哲也、櫻谷 広人 訳
- 発行年月日:2025年01月
オライリー・ジャパン社のサイトから引用した本書の概要です。
SaaS(Software as a Service)とは、ソフトウェアをクラウド環境などでホストし、ユーザーにサービスとして提供する形態のビジネスモデルです。マルチテナントとは、複数のユーザーが同一のリソースを共有するモデルや、それらを統一された体験を通じて管理する仕組みを指します。セキュリティや可用性、運用面などで独自の考慮事項が必要となりますが、インフラストラクチャコストの削減や運用効率の向上が見込めるため、近年その採用件数は右肩上がりに増加しています。本書は、エンジニア向けの本格的なSaaS解説本として、マルチテナントSaaSの概念、実践的なテクニックなど、総合的なノウハウをまとめ、ベストプラクティスとパターンに沿った効率的な開発を提案しています。
目次
全17章で 468 ページとなかなかのボリュームがあります。
- 1章 SaaSマインドセット
- 2章 マルチテナントアーキテクチャの基礎
- 3章 マルチテナントのデプロイモデル
- 4章 オンボーディングとアイデンティティ
- 5章 テナント管理
- 6章 テナントの認証とルーティング
- 7章 マルチテナントサービスの構築
- 8章 データパーティショニング
- 9章 テナント分離
- 10章 EKS SaaS:アーキテクチャパターンと戦略
- 11章 サーバーレスSaaS:アーキテクチャパターンと戦略
- 12章 テナントを意識した運用
- 13章 SaaS移行戦略
- 14章 ティアリング戦略
- 15章 SaaS Anywhere
- 16章 生成AIとマルチテナント
- 17章 指針となる原則
各章の概要+私の所感
ここからは各章の内容を所感ベースで紹介します。
汎用的なマルチテナントSaaSに関する考慮事項が多く説明されていますが、一部ではより実装に近い部分の解説がありましてそこでは例としてAWSで説明されています。ただし、大部分は他のクラウドサービスでも応用出来る内容のはずです。
1章 SaaSマインドセット
この章では、SaaSの基本的な概念と定義について解説し、従来のインストール型ソフトウェアとの違いを明確にしながら、SaaSがビジネスモデルとしてどのように機能するのか解説されています。
SaaS はソフトウェアの提供モデルのみではなくビジネスモデルでもあるという本質的な点について書籍の序盤で触れられていますね。
このあたりしっかり抑えておかないと、テナント分離を実装したアプリケーションを作るのが目的になっちゃいがちなので大事ですよね。
2章 マルチテナントアーキテクチャの基礎
この章では、SaaSアーキテクチャの基本構造について、「コントロールプレーン」(共通機能を提供する部分)と「アプリケーションプレーン」(実際のサービス機能を提供する部分)という2つの要素に分けて詳しく解説し、それぞれの役割や実装方法について説明しています。
私も実は SaaS on AWS に関わるようになってからコントロールプレーンとアプリケーションプレーンの分離を意識するようになったのですが、SaaS の複雑性を整理する上で必要な基本概念ですね。
3章 マルチテナントのデプロイモデル
この章では、SaaSアーキテクチャにおけるマルチテナントのデプロイモデル(サイロ、プール、混合モードなど)についてその特徴を解説しています。
それぞれのトレードオフがあるのですがメリット・デメリット整理されていて良いなと思いました。
SaaS アーキテクチャを検討する上で最も意識する点ではないでしょうか。ここの戦略次第でコストや保守性など様々な要素に影響してきます。
4章 オンボーディングとアイデンティティ
SaaSアーキテクチャにおけるオンボーディングとアイデンティティ管理について、その重要性と実装方法を詳細に解説しています。
SaaS 特性にも依りそうですが、オンボーディングプロセスの重要性と完全な自動化について重要な要素である点が述べられています。
また、アイデンティティ管理のソリューションとして JWT を活用したテナントコンテキスト伝達方法について説明されており非常に実践的だと思いました。
5章 テナント管理
この章では、SaaSアーキテクチャにおけるテナント管理の役割と実装方法について、テナント管理サービスを使って基本的な構成から高度なライフサイクル管理(有効化/無効化、廃止、ティア切り替え)まで行う方法を詳細に解説しています。
テナント管理はインフラの再構成やデータ移行が必要になるようなケースもあり実際の運用で考慮しなければならない課題について学ぶことが出来ました。
6章 テナントの認証とルーティング
この章では、SaaSアーキテクチャにおけるテナントの認証とルーティングについて、アクセス方法の選択から具体的な実装方法まで詳細に解説しています。
テナントルーティングは様々な実装方法がありますよね。要件によっても何を選択するか変わってくるところだと思います。複数の選択をメリット・デメリット整理して解説されているので非常に役立つ内容だと思いました。
7章 マルチテナントサービスの構築
この章では、マルチテナントサービスの設計と実装について、具体的な実装方法について総合的に解説されています。
設計での考慮事項にふれつつ、具体的な実装方法(ライブラリ化・アスペクト・サイドカーなど)についても解説されておりよりこれまでよりもイメージしやすくなっていると思います。
8章 データパーティショニング
この章では、マルチテナントSaaSにおけるデータパーティショニング(データの分割方式)について、基本概念から具体的な実装方法まで解説されています。
要件によって選択が変わってくるというのは当然ですが、この章では RDB や NoSQL、オブジェクトストレージなどによって実装方法が異なる点、ライフサイクル考慮についても必要な点など幅広いワークロードで適用しやすい考え方が説明されています。
9章 テナント分離
この章では、SaaSアーキテクチャにおけるテナント分離の実装方法について、基本概念から具体的な実装パターンまでを詳細に解説されています。
様々なレイヤーで多層的に分離を実装する必要性から、分離ポリシーの管理方法まで幅広く解説されてて良いですね。
10章 EKS SaaS:アーキテクチャパターンと戦略
この章では、EKS(Amazon Elastic Kubernetes Service)を使用したSaaSアーキテクチャの実装パターンと戦略について、デプロイ、分離、オートメーションなど具体的な実装方法を解説されています。
EKS と題されていますけど、Namespaceによるテナント分離や Helm での管理自動化、Kerpenter による最適化など、EKS に依存しない実装方法が解説されており、Kubernetes 全般で採用出来るテクニックが多いのではないでしょうか。
11章 サーバーレスSaaS:アーキテクチャパターンと戦略
この章では、サーバーレスコンピューティング(特にAWS Lambda)を使用したSaaSアーキテクチャの実装パターンと戦略について、その特徴や具体的な実装方法を解説されています。
こちらはより AWS サーバーレスに近い解説になっています。こうしてみるとサーバーレスアーキテクチャはマルチテナントSaaSと相性良いですね。ただし、SaaSとして最適な設計を行うためには各クラウドサービスのコンポーネントの特徴をしっかり抑えておく必要がありそうです。
12章 テナントを意識した運用
この章は、SaaSにおける運用(Operations)の重要性と、マルチテナント環境に特有の運用上の課題や実装方法について詳細に解説されています。
設計・実装と同じで、運用に関してもSaaSは従来のシステム運用と異なる点(テナントごとの状況把握、ビジネスメトリクスの重要性)があります。各メトリクスの説明やテナントコンテキストが重要な理由について触れられており非常に役に立ちます。
このあたりうまく導入出来ると1章で触れられていたSaaSビジネスの成功に繋げることが出来そうですね。
13章 SaaS移行戦略
この章では、既存のソリューションをSaaSモデルに移行する際の戦略とパターンについて解説しています。移行の動機、ビジネス上の考慮事項、技術的なアプローチの選択肢を包括的に説明されています。
完全な移行パターンはなく、複数の移行アプローチ(サイロ型リフトアンドシフト、レイヤー型移行、サービスごとにモダナイゼーション)について解説されています。
また、初期段階で何を確立させる必要があるか解説されており、コントロールプレーンの重要性について再認識しました。
14章 ティアリング戦略
この章では、SaaSソリューションにおけるティアリング(階層化)戦略について解説しています。ティアリングの種類、実装方法、運用への影響など、技術的・ビジネス的な側面から包括的に説明されています。
ティアリングは実際のサービス運用経験が必要でかなり難しい点ですよね。ティアリングパターンから実装方法、考慮点まで参考になる情報を得ることが出来ます。
15章 SaaS Anywhere
この章では、SaaSソリューションの一部をリモート環境(顧客環境)で実行する「SaaS Anywhere」というアプローチについて解説されています。
これ、アーキテクチャパターンとして知っていたいたのですが、リモートリソースの種類・実装パターン・運用上の課題など、包括的に詳しく触れられており驚きました。
コンプライアンスやセキュリティ要件に対応する必要がある場合に選択肢として出てくるんですよね。トレードオフではありますが、選択肢として抑えておきたいところです。
16章 生成AIとマルチテナント
この章では、SaaSソリューションに生成AIを組み込む際の戦略と考慮事項について解説されています。
昨今避けては通れない話題の生成AI。re:Invent でもいくつか生成AI + SaaS なセッションがありましたね。
RAG にテナントのコンテキストを含めたり、テナントデータの分離方法、生成AIの観点からのノイジーネイバー対策、ティアごとの制限方法など生成AIワークロードにおいてもマルチテナント固有の課題が発生することがわかります。
17章 指針となる原則
こちらの最後の章では、SaaSソリューションを成功に導くための指針となる重要な原則について解説されています。
ビジョン・戦略、技術、運用の3つの観点から、SaaSビジネスを構築・運営する際に考慮すべき基本原則を包括的に説明されていました。
組織全体でSaaSのビジョンと価値観を共有し、それを一貫して実践することが重要だと感じました。
さいごに
本書を読む前から SaaS on AWS のコンテンツや SaaS コンピテンシーに関する活動を通して幅広くマルチテナント SaaS について学んできたつもりでしたが、まだ知らないことがいくつもありました。
本書はマルチテナントSaaSワークロードが取り組まなければいけない課題について、非常に網羅的かつ詳細に紹介されていると思います。
マルチテナント SaaS は応用アーキテクチャになるので中級者、上級者向けの書籍な気がしますが、「マルチテナント」というキーワードに関連しそうであればまず読んでおくと良いと思います。
考慮しなければならないことや対応例が一通り把握出来るはずです。
関連イベント
訳者のお一人であるアマゾン ウェブ サービス ジャパン合同会社 櫻谷さんがご登壇されるイベントが来月ちょうどいくつかあります。良ければ書籍に関する質問などをぶつけてみては如何でしょうか。