マルチテナンシーの再定義 - SaaS アーキテクチャの基礎

マルチテナンシーの再定義

マルチテナンシーと SaaS という用語は多くの場合で密接に関連しています。組織によっては、SaaS とマルチテナンシーを同じものとして説明している場合があります。これは当然のように思えるかもしれませんが、SaaS とマルチテナンシーを同一視すると、実際には SaaS はアーキテクチャ戦略というよりもビジネスモデルであるのに対し、チームは SaaS について純粋に技術的なものとして検討するようになります。

この概念についてより詳しく理解するため、まずはマルチテナンシーの従来の考え方について確認しましょう。インフラストラクチャのみに焦点を当てたこの考え方では、マルチテナンシーは、俊敏性とコスト効率の向上のため、テナントがリソースをどのように共有するかについて説明するのに使用されます。

例えば、SaaS システムの複数のテナントによって消費されるマイクロサービスまたは Amazon Elastic Compute Cloud (Amazon EC2) インスタンスが存在するとします。テナントはこのサービスを実行するインフラストラクチャを共有しているため、このサービスはマルチテナントモデルで実行されていると見なされます。

この定義の課題は、マルチテナンシーの技術的な概念をあまりにも直接的に SaaS と結び付ける点にあります。SaaS の最大の特徴は、共有のマルチテナントインフラストラクチャを備えていることだと想定しています。SaaS に対するこの考え方は、さまざまな環境で SaaS が実現される多くの方法について検討したとき、確立できなくなります。

次の図は、マルチテナンシーを定義する上で直面するいくつかの課題について示した SaaS システムの図です。

ここでは、前述の典型的な SaaS モデルを示しています。一連のアプリケーションサービスが、テナントをまとめて管理および運用できる共有サービスに囲まれています。

新しく追加されたのはマイクロサービスです。この図には、製品注文カタログの 3 つのサンプルマイクロサービスが含まれています。これらの各サービスのテナンシーモデルをよく見ると、すべてわずかに異なるテナントパターンを採用していることがわかります。

SaaS とマルチテナンシーについて示した図。

SaaS とマルチテナンシー

製品サービスは、すべてのリソース (コンピューティングとストレージ) をすべてのテナントと共有します。これは、従来のマルチテナンシーの定義と一致しています。ただし、注文サービスを見てみると、コンピューティングは共有されているものの、テナントごとにストレージが分かれていることがわかります。

カタログサービスには、コンピューティングはテナントごとに個別であり (テナントごとに個別のマイクロサービスのデプロイ)、ストレージはすべてのテナントで共有という別のバリエーションが追加されています。

この種のバリエーションは SaaS 環境では一般的です。SaaS ソリューションの一部を選択的に共有したり、サイロ化したりする理由には、ノイジーネイバー、階層化モデル、分離の必要性などがあります。

これらのバリエーションやその他多くの可能性を考慮すると、この環境を特徴づけるためにマルチテナントという用語をどのように使用すべきかを判断するのがさらに難しくなります。全体的に見て、カスタマーから見ると、これはマルチテナント環境です。ただし、最も技術的な定義を使用すると、この環境の一部はマルチテナントであり、別の一部はマルチテナントではありません。

これが、マルチテナントという用語を使用して SaaS 環境を特徴づけるのをやめるべき理由です。アプリケーション内でマルチテナンシーを実装する方法について説明することはできますが、ソリューションを SaaS として特徴づけるために使用することは避けてください。マルチテナントという用語は、アーキテクチャの一部が共有される場合とそうでない場合があることは分かっているため、SaaS 環境全体をマルチテナントとして説明する場合に使用する方が理にかなっています。概して、それでもこの環境はマルチテナントモデルで運用および管理されています。

極端なケース

テナンシーという概念をよりわかりやすくするために、テナントがリソースを共有しない SaaS モデルについて検討してみましょう。次の図は、一部の SaaS プロバイダーで採用されている SaaS 環境のサンプルを示しています。

テナントごとのスタックを示す図。

テナントごとのスタック

この図を見ると、これらのテナントの周りには共通の環境がまだ存在することがわかります。ただし、各テナントには専用のリソースのコレクションが配置されます。このモデルでは、テナント間で共有されるものはありません。

この例は、マルチテナントであることの意味に疑問を投げかけています。どのリソースも共有されていないのに、これはマルチテナント環境なのでしょうか。このシステムを利用するテナントは、リソースを共有する SaaS 環境と同じ内容を期待しています。実際、SaaS 環境内でリソースがどのようにデプロイされているかについてらない可能性があります。

これらのテナントはサイロ化されたインフラストラクチャで運営されていますが、それでも一元的に管理および運営されています。オンボーディング、ID、メトリクス、請求、運用に関して統一されたエクスペリエンスを共有します。また、新しいバージョンがリリースされると、すべてのテナントにデプロイされます。これを実行するため、個々のテナントに 1 回限りのカスタマイズを許可することはできません。

ここで示すのは極端な例ですが、マルチテナント SaaS の概念をテストする適切なモデルです。共有インフラストラクチャの効率性をすべて実現しているわけではありませんが、完全に有効なマルチテナント SaaS 環境です。一部のカスタマーでは、ドメインによって、一部のカスタマーまたはすべてのカスタマーがこのモデルで実行することが規定されている場合があります。だからといって、SaaS ではない、というわけではありません。これらの共有サービスを使用し、すべてのテナントが同じバージョンを実行している場合は、SaaS の基本原則に沿っています。

こうしたパラメータと SaaS のより広い定義について考えると、マルチテナントという用語の使い方を進化させる必要があることがわかります。集約して管理および運用されている SaaS システムをマルチテナントと呼ぶ方が理にかなっています。そうすれば、SaaS ソリューションの実装におけるリソースの共有化または専用化の方法については、より詳細な技術用語で説明できます。