マルチテナントアプリのためのテナントモデル
「マルチテナンシー」の概念に深く掘り下げ、自分たちがそれをどう捉えているかの洞察を共有します。
「マルチテナンシー」の概念に深く掘り下げ、自分たちがそれをどう捉えているかの洞察を共有します。
私たちは頻繁に、特にサービスとしてのソフトウェア(SaaS)アプリケーションを開発する際に、マルチテナントアプリケーションの作成の重要性について耳にします。
「マルチテナントアプリ」の概念や、それを開発するために使用されるさまざまなモデルについては、いくらかの混乱があります。この記事では、それらの用語をより実践的な方法で詳しく見ていきました。
シングルテナントアーキテクチャは、各顧客やテナントがアプリケーションまたはサービスの専用インスタンスを持つソフトウェアまたはクラウドコンピューティングモデルです。B2Bビジネスモデルの起源を見てみると、ソフトウェアの各インスタンスが1つの顧客または組織にのみサービスを提供するところから始まっています。

シングルテナントアーキテクチャは、コンプライアンスが最も重要な場合や、特定のセキュリティ要件を満たす必要があるシナリオで一般的に使用されます。たとえば、金融、医療、政府のように厳格な規制要件を持つ業界では、コンプライアンスを確保するためにシングルテナントソリューションを好むことがあります。
ただし、シングルテナントアーキテクチャは、各顧客のインスタンスが独自のインフラとメンテナンスを必要とするため、マルチテナントアーキテクチャと比較して、よりリソース集約型で管理が複雑になる可能性があることに注意してください。その結果、カスタマイズと隔離が非常に重要な、数が少ないが大きな顧客を持つアプリケーションに適しているかもしれません。
ソフトウェアマルチテナンシーは、単一のインスタンスのソフトウェアがサーバー上で動作し、複数のテナントにサービスを提供するソフトウェアアーキテクチャです。このように設計されたシステムは「専用」または「隔離」されているのではなく、「共有」されています。テナントとは、ソフトウェアのインスタンスへの特定の特権を持つ共通のアクセスを共有するユーザーのグループです。マルチテナントアーキテクチャでは、ソフトウェアアプリケーションは、テナントごとにインスタンスの専用の共有、データ、設定、ユーザー管理、テナントの個別の機能、および非機能的プロパティを提供するように設計されています。 -- Wikipedia

アーキテクチャの観点から定義を提供し、マルチテナントデザインとシングルテナントデザインを区別することが簡単になりました。しかし、これはより技術的な定義に傾いています。これらの定義を現実の開発環境で使用してテナントモデルを設計するとき、この思考方法は、マルチテナントアプリが純粋に共有されたマルチテナントインフラを持たなければならないと仮定しています。
しかし、ビジネスと製品は多様でさまざまなケースバイケースの要件を持っているため、すべてのケースに対応できる万能の解決策はありません。
テナントが共有インフラからリソースを使用しているが、特定のビジネスニーズのためにシステムの一部を専用に割り当てる必要があるというシナリオを想像してみてください。この専用部分はデータベース、インスタンス、または他のコンポーネントの組み合わせかもしれませんが、全体的なインフラは共有されています。これが混在テナントアーキテクチャの登場を意味します。
実際のSaaS製品開発では、製品が主に一般的なマルチテナンシーモデルで設計されている状況に会うことがよくあります。しかし、アーキテクチャやリソースの特定の面では「シングルテナンシー」アプローチに向かうことがあります。
AWSはこのコンセプトを伝えるために次のケースを使用しました:マルチテナンシーは広い概念であり、共有リソースとデータ隔離を達成するための正しい戦略を組み合わせて選択するためにケースバイケースであること。