マルチテナント ソリューションの設計者と開発者向けのリソース
マルチテナント アプリケーションのアーキテクチャ
次の記事では、Azure でのマルチテナント アーキテクチャの例を紹介します。
Architecture | まとめ | テクノロジの中心 |
---|---|---|
Azure のマルチテナント SaaS | 複数のリージョンにデプロイされる、Azure のマルチテナント SaaS シナリオのリファレンス アーキテクチャ | Web |
マルチテナント Azure Kubernetes Service (AKS) で Application Gateway イングレス コントローラー を使用する | AKS と AGIC でのマルチテナントの実装例 | Kubernetes |
すべてのマルチテナント アーキテクチャ | マルチテナントを含むすべてのアーキテクチャの一覧を示します | 複数 |
クラウド設計パターン
次の クラウド設計パターン が、マルチテナント アーキテクチャでよく使用されています。
Pattern | まとめ |
---|---|
デプロイ スタンプ パターン | データ ストアなど、アプリケーション コンポーネントの複数の独立したコピー (スケール ユニット) をデプロイします。 |
フェデレーション ID | 外部の ID プロバイダーに認証を委任します。 |
ゲートキーパー | 専用のホスト インスタンスを使用して、アプリケーションとサービスを保護します。このホスト インスタンスは、クライアントとアプリケーションまたはサービスの間でブローカーとして機能し、要求を検証して不要部分を削除し、クライアントとアプリケーションまたはサービスの間で要求とデータを渡します。 |
キュー ベースの負荷平準化 | タスクとそのタスクが呼び出すサービスとの間でバッファーとして機能するキューを使用して、断続的な大きい負荷を平準化します。 |
シャーディング | データ ストアを水平方向のパーティションまたはシャードのセットに分割します。 |
調整 | アプリケーションのインスタンス、個々のテナント、またはサービス全体によって使用されるリソースの使用量を制御します。 |
アンチパターン
1 つのテナントのアクティビティが別のテナントによるシステムの使用に悪影響を及ぼす可能性がある、 うるさい隣人のアンチパターンについて考えます。
Microsoft Azure Well-Architected Framework
すべてのソリューションにとって Azure Well-Architected フレームワーク 全体が重要ですが、 信頼性の柱に特に注意してください。 クラウド ホスティングの特性により、アプリケーションが、多くの場合はマルチテナントである、共有プラットフォーム サービスを使用する、リソースと帯域幅を競合する、インターネットで通信する、コモディティ ハードウェア上で実行することになります。 これにより、一時的およびより永続的な障害の両方が発生する可能性が高くなります。
マルチテナント アーキテクチャ ガイダンス
- Azure でのマルチテナント ソリューションの設計 (ビデオ): このビデオでは、Azure でマルチテナント ソリューションを設計および構築する方法について説明しています。 SaaS 製品や他のマルチテナント サービスを構築している場合は、ハイ パフォーマンスの確保、テナントの分離、デプロイの管理を計画するために、多くのことを考慮する必要があります。 このセッションは、スタートアップ企業や ISV を含む、マルチテナント アプリケーションや SaaS アプリケーションを構築している開発者とアーキテクトを対象としています。
- Azure Friday - Azure でのマルチテナント ソリューションの設計 (ビデオ): この Azure Friday のビデオでは、Azure でマルチテナントのサービスとしてのソフトウェア (SaaS) ソリューションを設計および構築する方法について説明しています。
- SaaS への移行を加速してリスクを軽減する (ビデオ): このビデオでは、"サービスとしてのソフトウェア" (SaaS) 配信モデルへの移行に関するガイダンスを提供します。既存のソリューションをオンプレミスから Azure にリフトアンドシフトするか、マルチテナント アーキテクチャを検討するか、または既存の SaaS Web アプリケーションの最新化を目指すかを示します。
Azure サービスのリソース
ガバナンスとコンプライアンス
- 複数の Azure サブスクリプションの整理と管理: Azure サブスクリプションの管理方法、およびサブスクリプションへのテナント リソースの割り当て方法を検討することが重要です。
- テナント間の管理エクスペリエンス: サービス プロバイダーは、Azure Lighthouse を使って、独自の Microsoft Entra テナント内から複数の顧客のリソースを管理できます。 Azure の委任されたリソース管理を使用して、多くのタスクとサービスをマネージド テナントをまたいで実行できます。
- Azure Managed Applications: マネージド アプリケーションでは、アプリの発行元によって管理されているリソース グループが、リソースのデプロイ先となります。 リソース グループはユーザーのサブスクリプション内に存在しますが、そのリソース グループにアクセスできるのは、発行元のテナントの ID です。
Compute
- Azure Kubernetes Services (AKS) でのクラスターの分離に関するベスト プラクティス: AKS を使用すると、マルチテナント クラスターの実行方法およびリソースの分離方法において柔軟性が得られます。 Kubernetes への投資を最大限に活用するには、まず AKS マルチテナントと分離機能を理解して実装する必要があります。 このベスト プラクティスの記事では、クラスター オペレーターを対象とした分離に重点を置いています。
- Azure Kubernetes Service でのクラスターのセキュリティとアップグレードに関するベスト プラクティス: Azure Kubernetes Service (AKS) でクラスターを管理する際には、ワークロードとデータのセキュリティが重要な考慮事項です。 論理的な分離を使用してマルチテナント クラスターを実行する場合は、特にリソースとワークロードのアクセスをセキュリティで保護する必要があります。
ネットワーク
Private Link
- Azure Private Link サービスのプロバイダー (SaaS ISV) とコンシューマーの視点からの説明とデモ: マルチテナント サービス プロバイダー (独立系ソフトウェア ベンダーが SaaS 製品を構築するなど) を可能にするAzure Private Link サービス機能を見るビデオ。 このソリューションを使用すると、コンシューマーは、コンシューマー自身の Azure 仮想ネットワークからプライベート IP アドレスを使用してプロバイダーのサービスにアクセスできます。
- Azure Private Link サービスを使用した TCP プロキシ プロトコル v2 - 詳細情報: Azure Private Link サービスの高度な機能である TCP プロキシ プロトコル v2 の詳細を示すビデオ。 マルチテナントや SaaS のシナリオで役立ちます。 ビデオでは、Azure Private Link サービスでプロキシ プロトコル v2 を有効にする方法を説明します。 また、NGINX サービスを構成して、NAT IP ではなく元のクライアントのソース プライベート IP アドレスを読み取り、プライベート エンドポイント経由でサービスにアクセスする方法についても説明します。
- NGINX Plus を使用して、Azure Private Link サービスからプロキシ プロトコル TLV をデコード
linkIdentifier
する: NGINX Plus を使用して、Azure Private Link サービスから TCP プロキシ プロトコル v2 TLV を取得する方法を説明する動画。 この動画では、プライベート エンドポイント接続の数値linkIdentifier
(LINKID
とも呼ばれます) を抽出してデコードする方法が紹介されています。 このソリューションは、接続元となる特定のコンシューマー テナントを識別する必要があるマルチテナント プロバイダーに役立ちます。 - SaaS プライベート接続パターン: Azure Managed Applications を使用してプライベート エンドポイント接続の承認を自動化するための 1 つのアプローチを紹介するサンプル ソリューション。
Web
- SaaS ソリューションに対する要求ベースのルーティング: この記事では、リバース プロキシを使用してテナントのルーティングとテナントへの要求のマッピングを容易にし、SaaS ソリューションのバックエンド サービスの管理を強化する方法について説明します。
ストレージとデータ
- Azure Cosmos DB を使用してスケーラブルなマルチテナント SaaS アプリを設計および構築する (ビデオ): Azure Cosmos DB を使用してマルチテナント SaaS アプリケーションを設計および最適化する方法について説明します。 このセッションでは、テナントの分離、コストの最適化、グローバルな分散に関する重要な設計上の考慮事項について説明します。 このセッションの内容は、小規模な B2C テナントが多数ある場合にも、大規模な B2B テナントが少数ある場合にも当てはまります。
- Azure Cosmos DB およびマルチテナント システム: Azure Cosmos DB を使用するマルチテナント システムを構築する方法を説明するブログ記事です。
- Azure Cosmos DB 階層パーティション キー: サブパーティションとも呼ばれる階層パーティション キーを使用すると、複数レベルのパーティション キーを使用してコンテナーをネイティブにパーティション分割できます。 これにより、通常なら合成パーティション キーを使用するマルチテナント シナリオまたはワークロードに最適なパーティション分割戦略が実現します。
- Azure SQL Database マルチテナント SaaS データベース テナント パターン: Azure SQL Database を使用して、マルチテナント SaaS アプリケーションで使用できるさまざまなテナント モデルについて説明する一連の記事です。
- 大規模な SaaS プロバイダーのために Azure SQL で 100 万のデータベースを実行する: Microsoft Dynamics 365 と Power Platform: Dynamics 365 チームが大規模にデータベースを管理する方法を説明するブログ記事です。
- Azure Database for PostgreSQL Hyperscale を使用して、マルチテナント データベースを設計する
- データの水平的、垂直的、および機能的パーティション分割: 大規模でマルチテナントである多くのソリューションでは、データが、個別に管理およびアクセスできるパーティションに分割されます。 パーティション分割により、スケーラビリティの向上、競合の低減、パフォーマンスの最適化を実現できます。 さらに、使用パターンとテナントに基づいてデータを分割するメカニズムも得られます。
- Azure サービスによるデータのパーティション分割戦略: この記事では、さまざまな Azure データ ストア内のデータをパーティション分割する際のいくつかの戦略について説明します。
- Azure Database for PostgreSQL Hyperscale Citus を使用したマルチテナント アプリケーションの構築 (ビデオ)
- Azure Cosmos DB を使用したマルチテナント アプリケーション (ビデオ)
- Azure Cosmos DB と Azure を使用したマルチテナント SaaS の構築 (ビデオ): マルチテナント SaaS のスタートアップ企業である Whally が、Azure Cosmos DB および Azure 上で最新のプラットフォームをどのようにゼロから構築したかを示す実際のケース スタディ。 Whally が、パーティション分割、データ モデリング、セキュリティで保護されたマルチテナント機能、パフォーマンス、変更フィードから SignalR へのリアルタイム ストリーミングなどに関して、Azure App Services 上で ASP.NET Core を使用して行った設計および実装上の決定を紹介します。
- Azure SQL Database での SaaS アプリケーション用のマルチテナント設計パターン (ビデオ)
メッセージング
- Azure Event Grid ドメイン: Azure Event Grid ドメインを使用すると、マルチテナント イベント処理アーキテクチャを大規模に管理できます。
- Service Bus サンプル: Azure Service Bus を使用したテナント間通信: 中央プロバイダーと 1 つ以上の顧客 (テナント) との間の通信方法を示す Azure Service Bus の実装例。
ID
- Microsoft Entra ID のテナント: Microsoft Entra ID には、複数の Microsoft Entra ディレクトリにまたがる操作を示すマルチテナントの独自の概念があります。 開発者が、Microsoft Entraアプリを使用する場合、さまざまなシナリオをサポートするために、アプリをシングルテナントまたはマルチテナントのいずれかに構成することを選択できます。
- Azure AD B2C によるカスタムブランドの ID ソリューション: Azure Active Directory B2C は、1 日あたり何百万ものユーザーと何十億もの認証をサポートできる、顧客 ID アクセス管理ソリューションです。
- Microsoft ID プラットフォーム エンドポイントを使用したマルチテナント デーモンの構築: このサンプル アプリケーションでは、 Microsoft ID プラットフォーム エンドポイントを使用して、非対話型の長期プロセスで Microsoft の企業顧客のデータにアクセスする方法を示します。 この場合、OAuth2 クライアント資格情報の付与を使用してアクセス トークンを取得します。その後、これを使用して、Microsoft Graph を呼び出して組織のデータにアクセスします。
- Microsoft Entra ID を使ってマルチテナント アプリを認証および認可する: Microsoft Entra ID を使って、マルチテナント シナリオでクラウドネイティブ アプリの機能を向上させる方法について説明します。
- Azure アーキテクチャのウォークスルー: B2C シナリオ用のマルチテナント Azure アーキテクチャの構築: Azure Active Directory B2C と API Management を使用したマルチテナント モバイル アプリの背後にあるアーキテクチャのウォークスルー。
- SaaS ソリューションでの Microsoft Entra ID を使ったアクセス許可、ロール、スコープの定義と実装: この記事では、SaaS プロバイダーが使用できる Microsoft Entra の認証 & 認可に関連する 3 つの主な概念について説明します。 アプリケーション ロール機能、委任された & アプリケーションのアクセス許可、スコープ機能について説明します。
分析
- Power BI 埋め込み分析を使用したマルチテナント ソリューション: Power BI Embedded を含むマルチテナント アプリケーションを設計する場合は、ニーズに最適なテナント モデルを慎重に選択する必要があります。
IoT
- IoT Hub Device Provisioning Service でのマルチテナント: マルチテナントの IoT ソリューションでは一般的に、複数のリージョンに分散された IoT ハブのグループを使用してテナント デバイスを割り当てます。
AI/ML
- マルチテナント SaaS アプリケーションと Azure Cognitive Search の設計パターン: このドキュメントでは、Azure Cognitive Search を使用して構築されたマルチテナント アプリケーションのテナント分離戦略について説明します。
- マルチテナント方式の ML パイプラインのソリューション: このブログ記事では、Azure Machine Learning ワークスペースを使用して複数のテナントをサポートするように Azure Machine Learning パイプラインを設計する方法について説明します。
コミュニティ コンテンツ
Kubernetes
- Kubernetes 用の 3 つのテナント モデル: Kubernetes クラスターは、通常、組織内の複数のチームによって使用されます。 この記事では、Kubernetes の 3 つのテナント モデルについて説明します。
- Kubernetes マルチテナントについて: Kubernetes は設定なしですぐに使用できるマルチテナント システムではなく、カスタム構成が必要です。 この記事では、Kubernetes マルチテナントの種類について説明します。
- Kubernetes マルチテナント - ベスト プラクティス ガイド: Kubernetes マルチテナントは、Kubernetes の使用が広がるにつれて、ますます多くの組織が関心を持っているトピックです。ただし、Kubernetes は本来マルチテナント システムではないため、マルチテナント Kubernetes 実装の設計は課題となり得ます。 この記事では、これらの課題とその克服方法、および Kubernetes マルチテナントに役立ついくつかのツールについて説明します。
- Capsule: Kubernetes マルチテナントをシンプルにする: Capsule は、Kubernetes クラスター内にマルチテナントとポリシーベースの環境を実装するのに役立ちます。 これは Platform as a Service (PaaS) サービスではありませんが、代わりに、上流の Kubernetes のみを使用するミニマルな設計アプローチを備えたマイクロサービス ベースのエコシステムです。
- Crossplane: クラウド ネイティブ コントロール プレーン フレームワーク: Crossplane を使用すると、Kubernetes ベースのアプローチを使用して、独自のソリューションのコントロール プレーンを構築できます。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパルの作成者:
- John Downs | プリンシパル ソフトウェア エンジニア
- Paolo Salvator | FastTrack for Azure のプリンシパル カスタマー エンジニア
- Arsen Vladimirskiy | FastTrack for Azure のプリンシパル カスタマー エンジニア
- LaBrina Loving | FastTrack for Azure のプリンシパル カスタマー エンジニアリング マネージャー
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。