web-dev-qa-db-ja.com

マルチテナントアプリケーションとは正確には何ですか?

オンラインで利用可能な定義によると、「マルチテナンシーとは、ソフトウェアアプリケーションの単一のインスタンスが複数の顧客にサービスを提供するアーキテクチャです。つまり、私はレストランまたは学校のWebサイトを所有しており、学校の管理製品を購入したときに提供する資格情報を使用して、自分のデータでアプリケーションを使用するために別のレストランまたは学校へのアクセスを提供します。私のウェブサイトはschoolmanagement.comのようであり、私はschool1.schoolmanagement.comschool2.schoolmanagement.comのようなさまざまな学校のクライアントにさまざまなサブドメインを提供しています=しかし、コードはこれらの両方のサブドメインの背後で同じです。両方の学校の機能やテーマは異なり、それぞれのデータベースに依存しています。したがって、ログインにschoolmanagement.comを指定する必要があります。クライアントがログイン認証情報に基づいてログインしたら、それぞれのURLにリダイレクトします(例:school1.schoolmanagement.com)。

これは、マルチテナントアプリケーションについての私の理解です。私の理解は正しいですか?私が通過できるオンラインマルチテナントアプリケーションはありますか?.

13
Nomi Ali

はい、それだけです。しかし wikipediaの定義 は十分に一般的ではありません。多層アーキテクチャや、SOAやマイクロサービスなどの新しい形式のアーキテクチャには対応していません。

マルチテナンシー は、約ソフトウェアシステムおよびデータ分離。いくつかの例:

  • 一意のデータベースを備えた多層システムは、マルチテナントにすることができます。例:SAPシステムは、データベースバックエンドと、スケーラブルな方法でWebサービスを公開するいくつかのWebアプリケーションサーバーで構成されます。これはマルチテナントです。実行中のソフトウェアのインストールを変更せずに新しい顧客を追加できます。また、複数の顧客がお互いを知らなくてもシステムを使用できます。データは完全に分離されています(独自のテクノロジー)。
  • システムは、Webサービスを実行する1つまたは複数のプロセスで構成され、異なるドメイン名を介して異なる顧客に公開されます(ただし、サーバー上で実行するプロセスと同じです)。データの分離は、個別のデータベースで実現されます。間違いなくマルチテナントです。
  • マイクロサービスシステムは、それぞれ独自のマイクロデータベースを使用して、疎結合されたいくつかのWebサービスのセットを同様に実行できます。スケールアップするために必要な場合は、同じマイクロサービスの新しいクローンを開始できます。それらはいくつかの登録機能を介してピアを見つけ、自動的にそれらに接続して、単一のアプリケーションの動作をユーザーに提供します。次に、2つのシナリオが考えられます。
    • 新しい顧客にサービスを提供する場合、新しい個別のマイクロサービスセットを開始し、1人の顧客のマイクロサービスが同じ顧客に関連するマイクロサービスにのみ接続するように編成する必要がある場合は、シングルテナントです。
    • ただし、実行中のインスタンスを使用して新しい顧客にサービスを提供できる場合(および新しいマイクロサービスはパフォーマンスのためにのみ必要です)、それはマルチテナントです。
8
Christophe

はい、あなたの理解は基本的に正しいです。アプリケーションは複数の顧客によって共有され、各顧客のデータはデータベースに混在しています。異なる顧客のデータを同じデータベースに混在させることなく同じコードを共有することは、おそらくマルチテナントとは見なされません。

1
Andy