2025年4月
 123456
78910111213
14151617181920
21222324252627
282930 
SNS・リンク
  • AWS

書評:『マルチテナントSaaSアーキテクチャの構築』

はじめに

この度、表題の書籍につきまして、書評記事を書く機会をいただきまして、本記事にて投稿いたします。

書籍情報:

  • 書名
    • マルチテナントSaaSアーキテクチャの構築 ―原則、ベストプラクティス、AWSアーキテクチャパターン
  • 著者
    • Tod Golding
  • 訳者
    • 河原 哲也、櫻谷 広人

書籍Webページ:

https://www.oreilly.co.jp/books/9784814401017/

私自身、過去にSaaSの形で提供されるサービスの仕事に関わることが、いくつかあったのですがそれからしばらく時期が経っており、改めて学び直す良い機会をいただけたと思います。

このような機会をくださり、心より感謝申し上げます。

今回は、読んでいきながら感じたことに触れつつ、各章を紹介します。

1章 SaaSマインドセット

SaaS以前の「インストール型ソフトウェア」との比較なども行いつつ、SaaS提供時のマインドセットを解説し、本書への導入をしています。

以前の私の職場でのメールがウェブベースのSaaSに変わったとき、メールボックスのデータの所在がクラウドに移ったという技術的な観点だけでなく、メールサービス自体が継続アップデートされてユーザー体験が向上していくことを喜んだことが思い返されました。

一回インストールしたきりの製品ではなく、サービスとして利用できることに価値がある。

そのことを理解して、SaaSについて理解していけると良さそうです。

2章 マルチテナントアーキテクチャの基礎

「コントロールプレーン」「アプリケーションプレーン」「オンボーディング」「アイデンティティ」…のようにSaaSにまつわるそれぞれの要素を解説していたり、「テナント」と呼ばれるものの概念を捉えることの意義を解説したりしています。

SaaSアーキテクチャを考える上で登場してくる各要素を理解する上で大切な基礎を押さえておけると良いでしょう。

3章 マルチテナントのデプロイモデル

この辺りからAWSのサービスにも交えて、SaaSアーキテクチャのマルチテナントのデプロイモデルについて解説しています。

イメージしやすい「フルスタックのサイロデプロイ」での例をあげますと

  • テナントごとにAWSアカウントを設けると綺麗に分離ができるが、アカウントの新規開設はどれくらいまで自動化できるのか?

ですとか

  • VPCで分離する場合はどうか。自動化の余地は広がるがQuotaの兼ね合いはどうなるのか?

のようにデプロイモデルごとに生じる考慮すべき事項が整理されており、参考になります。

4章 オンボーディングとアイデンティティ

SaaSビジネスに不可欠な運用上の目標と俊敏性の目標を達成できるのは、オンボーディングを通じてのみです。

Tod Golding 著、河原 哲也、櫻谷 広人 訳 『マルチテナントSaaSアーキテクチャの構築』p.85

この章の最後に書かれているこの一節がとても良いと思いました。

やはりユーザーから見たときにSaaSに期待するのは、手間のかかるインストールや初期設定に時間を取られずに必要な機能をすぐに手に入れられることだと思うのですよね。

この章では、そんなオンボーディングやアイデンティティ管理の重要性や、実現方法が解説されています。

5章 テナント管理

テナント管理における実装方法や考慮すべき点などが語られています。

私はかつて、とあるビジネスのインフラ構築の業務に従事していたことがありまして、そのサービスは顧客がつくたびに、顧客ごとのインフラを準備する必要がありました。

そして、そのインフラ対応は自動化できていない部分が多く、顧客の増加のペースが上がってくると大変で

  • 「来週までにA社、B社、C社…に向けての環境ができていないといけない!」

というような慌ただしい状況があり辛かったものです…(自動化したかったですがその余裕もなかった)

そういったテナントにおける各種イベントの管理を自動化するテナント管理サービスの実装の意義とそこで管理される機能などが解説されており、「そうかイベント管理の必要性を説けば良かったのか」と、私自身の経験と重なる部分が多く、印象に残る章でした。

6章 テナントの認証とルーティング

SaaSが使われるときのURLの作りってさまざまありますよね。

  • シンプルにそのサービスのドメイン名でアクセスして、ユーザーに合わせて情報が表示されるもの
  • xxxx.<SaaSのドメイン> のような形でxxxxの部分が利用者(テナント)に合わせて変化するもの

もしくは、

  • サービスを使おうとしている事業者が保有しているドメインをそのまま当てがうことができるもの

もあります。

それらは「サブドメインモデル」「バニティドメインモデル」のような呼び方で分類することができるようです。

普段、さまざまなITサービスを使う上で、その分類の仕方までは意識したことがなく勉強になりました。

また、認証の方法について、AWSの各サービスやKubernetesなどのさまざまな技術スタックを用いた実装が細かく解説がされており、いざ実装する際の参考となる章でした。

7章 マルチテナントサービスの構築

「ノイジーネイバー」という言葉が紹介されています。共有されているITリソースにて、一部の利用者・システムによる過剰なリソース消費で他の利用者に影響を与える現象のことですね。

これ自体はマルチテナント特有の概念ではないが、一方でSaaS環境において共有インフラストラクチャの特性上、ノイジーネイバー問題がより注目されるだろうと説明されています。

その対応のアプローチに対してサービス分解や設計の考え方でしたり、より具体的には、注文を保存するためにAmazon DynamoDBを使うPythonコードのような例も交えて、実装面も踏まえて丁寧に解説されている章で、考え方と実装面それぞれの確認できる章でした。

8章 データパーティショニング

様々なデータパーティショニングのアプローチについて書かれています。

読んでいて個人的には印象的だったのが、S3内におけるパーティショニングの戦略について書かれていた部分です。

サイロ(テナントごとにリソースを構築する)戦略を取る際にテナントごとにバケットを設けるのがシンプルだが、一方でプレフィックスキーで区切ることも例として挙げられており、それぞれのアプローチの解説がされています。

なお、最近ですと、AWSのアップデートでバケット数の上限が大幅に増えたので、1

明確に分離されたサイロを作る上ではテナントごとにS3バケットを作ってしまう戦略も積極的に取れるかもしれませんね。

9章 テナント分離

この章ではテナントの分離戦略を実現するためにより具体的に考慮するべき点やその方法が紹介されていました。

分離のアプローチとして「フルスタック」「リソースレベル」「アイテムレベル」という3つに分類して、違いやそれぞれの手法が紹介されており、その中にはAWSのサービス内での仕組み(たとえばDynamoDBにおけるアクセス制御など)に注目して解説されているところもあり、イメージを持ちやすくしてくれていました。

また

「分離には万能のアプローチがないことは明らかなはずです」

とあり、適切な戦略を考える難しさも改めて実感できるパートでもあります。

10章 EKS SaaS:アーキテクチャパターンと戦略

この章ではEKSにおけるSaaSの各アーキテクチャパターンの紹介がされていました。

EKSとは書かれていますが、Kubernetesを用いる際のプラクティスの紹介と捉えても良いかなと思います。

Kubernetesのエコシステムの中でのテナント分離の戦略ごとの実現方法や、デプロイ管理のための周辺ツール群の紹介も豊富に書かれており若干圧倒されました。

また、読んでいて面白かったのが次の一節

SaaSとEKSについて話すたびに、新しいツールや仕組みが私のマルチテナントツールバックに追加されていきます。ある意味では、これはEKSを採用することの恩恵であると同時に呪いでもあると考えられます。

Tod Golding 著、河原 哲也、櫻谷 広人 訳 『マルチテナントSaaSアーキテクチャの構築』p.235

なるほど、呪い…!

しばらくEKSを触る場面から遠のいてしまっているので、出遅れないように痛感した章でした。

11章 サーバーレスSaaS:アーキテクチャパターンと戦略

SaaSって絶えず、新規契約(「オンボーディング」)・解約が発生するものなので、適切なキャパシティ管理する上ではサーバレスアーキテクチャが非常に相性良さそうですよね。

この章では、SaaSとサーバレスアーキテクチャの相性が語られたほか、そのアーキテクチャを構成しデプロイする際の戦略が、具体的なAWSのサービス、機能の使い方を取り上げながら紹介されています。

12章 テナントを意識した運用

この章ではSaaSを運用するに際するマインドセットとそれを実現するためのメトリクスについて厚く解説がされています。

目次から見てもわかるように、運用者が収集することができる様々なメトリクスが紹介されています。

その中でも特に印象的だったのは、テナントあたりのコストメトリクスの部分です。

SaaSを複数のプラン(ティア)で提供しているとき、インフラにかかる費用、システムが持つデータ量、そして、そこで得られている収益というのがプランによって変動します。それがどのようにビジネスに影響するかの可視化の捉え方の理解につながる章です。

13章 SaaS移行戦略

ビジネスのモデルをSaaS型へ転換していく際の戦略について語られています。

すでに顧客を抱えていて、収益も出ている。そんな既存のサービスのモデルを転換していくときの戦略が語られています。

戦略、と言ったときに「まずは、サービスのこのインフラ部分から移行して…」と技術的な観点に注目したくなってしまうものなのですが、その前にこの章の前半は、組織としてのあり方の転換でもあるということに注目して、その影響などについて解説されています。

短期的な収益の落ち込みと、長期的に見て高い効率性を持ってマルチテナント環境でサービスを提供できるようになってからの収益の上昇の推移を説明する「フィッシュモデル」が、図解も交えてとても興味深いものでした。 2

そして、章の後半では技術的な観点からの移行の戦略のパターンが語られ、移行を考えるうえでの検討要素が整理されている章でした。

14章 ティアリング戦略

SaaSプロダクトを提供する上では、ビジネスとして価値提供して得られている収益が、価値提供するために生じているコストを上回る必要があります。

その際に顧客のニーズに柔軟に応えるために複数の価格帯を提供する「ティアリング」の設計が必要なわけですが、その際の戦略を立てる上で重要な観点が語られています。

たとえば、使用量に応じた価格帯を提供する戦略があるとします。多くリソースを使用する顧客には多く料金を課して、使う利用量が少ない顧客には課す料金も少なくする、純粋な使用量ベースのプライシングモデルをとる場合もあるかもしれません。これは、どのユーザーも平等に扱い、一見よさそうに思います。

ただし、そこには落とし穴がある場合があって、利用されるAPIの呼び出しをきちんと精査しないと、「使った分だけ請求」は言い換えれば、「システムに好きなだけ負荷をかけられる」ということにもつながりかねません。ノイジーネイバーの状態が発生すれば、それは他のテナントの体験にも影響を与えるわけですね。

これは一例でしたが、ティアリングを検討する上で考慮するべき観点や戦略がさまざまな切り口で説明されており、その重要性の理解に役立つパートでした。

15章 SaaS Anywhere

SaaS Anywhereというデプロイメントモデルに関する解説の章です。

システムの基盤インフラストラクチャの部分を考えなくて良い仕組みになっているから、顧客はビジネスに専念できる。というのがSaaSの基本的な価値なのかなと思います。

その一方で、そのSaaSの体験は維持しつつもアーキテクチャを顧客が持つ環境上で動かす、SaaS Anywhereという考え方が提唱されているようです。3

この概念、恥ずかしながら初めて知りまして、なるほど顧客のニーズによっては自社側に基盤を持ちたいケースもありますね。

アーキテクチャのパターンや、検討するべき戦略などが豊富に説明されており圧倒されました。

16章 生成AIとマルチテナント

生成AI。今時、避けて通れませんね。

たとえば生成AI活用の文脈におけるノイジーネイバーについて、単純なアクセスの量だけではなく、リクエストやレスポンスの複雑さも負荷のレベルに違いがあるということが指摘されており、なるほど生成AIならではの観点だなと気付かされました。

生成AIを取り入れたマルチテナントSaaSを展開する上での注意点などが語られていて、非常に参考となるパートでした。

17章 指針となる原則

最後に、SaaSビジネスを展開していく上で取るべき戦略を判断する際の原則について語られています。

ビジネス的な戦略面と技術面、そして運用を見据えた観点それぞれについて書かれており、SaaSビジネスを展開する上でおさえるべき原則を理解することができました。

まとめ

正直、かなりボリュームがある本で、若干圧倒されるところが多かったのですが、非常に学びの多い書籍でした。

著者はこの本に書かれている内容のことを指して「一部に過ぎない」と表現されているのですが、そうだとしても幅広い観点で考慮すべき点を理解しておくのには十分役立つものではと感じました。

SaaSアーキテクチャの検討をする際には、その都度読み返すことになるであろう書籍でして、本記事がこの書籍を検討されている方にとって参考になれば幸いです。

  1. https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-s3-up-1-million-buckets-per-aws-account/
  2. AWSのブログにも「フィッシュモデル」に関する解説がありました
    https://aws.amazon.com/jp/blogs/news/saas-pricing-concept/
  3. SaaS Anywhere については、AWSのブログでも紹介されています。
    https://aws.amazon.com/jp/blogs/apn/patterns-for-deploying-saas-in-remote-environments/

 

関連記事