次の方法で共有


Wingtip Tickets SaaS アプリケーション

適用対象:Azure SQL データベース

同じ Wingtip Tickets SaaS アプリケーションが、3 つのサンプルの各々に実装されています。 このアプリは、小規模な会場 (劇場、クラブなど) を対象とした簡単なイベント リストとチケット SaaS アプリです。 各会場はアプリのテナントであり、会場の詳細、イベントの一覧、顧客、チケット注文などの独自のデータがあります。 このアプリは、管理スクリプトとチュートリアルと共に、エンドツーエンドの SaaS シナリオを紹介します。 これには、テナントのプロビジョニング、パフォーマンスの監視と管理、スキーマ管理、およびテナント間のレポートと分析が含まれます。

3 つの SaaS アプリケーションとテナント パターン

このアプリには 3 つのバージョンがあります。それぞれが、Azure SQL Database 上で異なるデータベース テナント パターンを探求します。 1 つ目では、独自のデータベースを持つテナントごとのスタンドアロン アプリケーションを使用します。 2 つ目は、テナントごとにデータベースを持つマルチテナント アプリを使用します。 3 番目のサンプルでは、シャード化されたマルチテナント データベースを含むマルチテナント アプリを使用します。

3 つのテナント パターンの図。

各サンプルには、アプリケーション コードに加え、設計パターンと管理パターンの範囲を紹介する管理スクリプトとチュートリアルが含まれています。 各サンプルは、5 分未満でデプロイされます。 3 つすべてを並行してデプロイできるので、設計と管理の違いを比較できます。

テナントごとのスタンドアロン アプリケーション パターン

テナントごとのスタンドアロン アプリ パターンは、各テナント用に 1 つのデータベースがあるシングル テナント アプリケーションを使用します。 各テナントのアプリは、そのデータベースも含めて、別々の Azure リソース グループにデプロイされます。 リソース グループは、サービス プロバイダーのサブスクリプションまたはテナントのサブスクリプションにデプロイでき、テナントの代わりにプロバイダーによって管理されます。 テナントごとのスタンドアロン アプリ パターンはテナントを最大限に分離させますが、複数のテナント間でリソースを共有する機会がないため、通常は最もコストが高くなります。 このパターンは、少数のテナントにデプロイされる複雑なアプリケーションに適しています。 スタンドアロン デプロイでは、他のパターンに比べ、各テナントに合わせてアプリを簡単にカスタマイズできます。

チュートリアルおよび GitHub .../Microsoft/WingtipTicketsSaaS-StandaloneApp 上のコードを確認してください。

テナントごとのデータベース パターン

テナントごとデータベースのパターンが効果的なのは、テナントの分離を考慮し、共有リソースの費用対効果の高い使用ができる一元的なサービスを実行したいサービス プロバイダーです。 場所またはテナントごとにデータベースが作成され、すべてのデータベースが一元的に管理されます。 データベースをエラスティック プールでホストすることで、テナントの予測不可能なワークロード パターンを管理する、コスト効率が高く簡単なパフォーマンス管理を実現できます。 カタログ データベースには、テナントとそのデータベースの間のマッピングが格納されます。 このマッピングは、Elastic Database クライアント ライブラリのシャード マップ管理機能を使用して管理されており、アプリケーションへの効率的な接続管理を提供します。

チュートリアルおよび GitHub .../Microsoft/WingtipTicketsSaaS-DbPerTenant 上のコードを確認してください。

シャード化されたマルチテナント データベース パターン

マルチテナント データベースは、テナントあたりのコストを削減し、テナントの分離を減らしても問題ないサービス プロバイダーにとって効果的です。 このパターンでは、1 つのデータベースに多数のテナントを包含することができ、テナントごとのコストを削減します。 テナントを複数のデータベースにシャーディングすることで、ほぼ無限のスケールを実現できます。 カタログ データベースは、テナントをデータベースにマップします。

このパターンにより、ハイブリッド モデルも可能になります。このモデルでは、データベース内の複数のテナントでコストを最適化したり、独自のデータベース内の 1 つのテナントで分離を最適化したりできます。 この選択は、テナントがプロビジョニングされたときまたは後でテナントごとに行われ、アプリケーションには影響しません。 このモデルは、テナントのグループを異なる方法で処理する必要がある場合に効果的に使用できます。 たとえば、低コストのテナントを共有データベースに割り当て、プレミアム テナントを独自のデータベースに割り当てることができます。

Wingtips チュートリアルの と WingtipTicketsSaaS-MultiTenantDB コードについては、GitHub](https://github.com/Microsoft/WingtipTicketsSaaS-MultiTenantDb) を参照してください。