Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Unabhängig von Ihrer Architektur und den Komponenten, die Sie zum Implementieren verwenden, müssen Sie die Komponenten Ihrer Lösung bereitstellen und konfigurieren. Berücksichtigen Sie in einer mehrinstanzenfähigen Umgebung, wie Sie Ihre Azure-Ressourcen bereitstellen, insbesondere, wenn Sie dedizierte Ressourcen für jeden Mandanten bereitstellen oder Ressourcen dynamisch basierend auf der Anzahl der Mandanten in Ihrem System neu konfigurieren. Dieser Artikel enthält Lösungsarchitekten Anleitungen zum Bereitstellen von Mehrinstanzenlösungen. Es veranschaulicht Ansätze, die Sie berücksichtigen sollten, wenn Sie Ihre Bereitstellungsstrategie planen.
Wichtige Überlegungen und Anforderungen
Definieren Sie ihre Anforderungen klar, bevor Sie Ihre Bereitstellungsstrategie planen. Berücksichtigen Sie die folgenden Faktoren:
Erwartete Skalierung: Ermitteln Sie, ob sie nur wenige Mandanten unterstützen möchten, z. B. fünf oder weniger, oder sie werden auf eine große Anzahl von Mandanten vergrößert. Da die Anzahl der Mandanten wächst, wird die Automatisierung immer wichtiger.
Automatisiertes oder unterstütztes Onboarding: Geben Sie an, ob Mandanten das Onboarding über ein automatisiertes Verfahren abschließen oder eine Anforderung initiieren sollen, die manuelles Onboarding erfordert. Definieren Sie manuelle Genehmigungsschritte aus Ihrem Team, um den Missbrauch Ihres Diensts zu verhindern.
Bereitstellungszeit: Legen Sie fest, wie schnell der Onboardingprozess abgeschlossen werden muss. Wenn Sie keine klare Antwort haben, definieren Sie, ob dieser Schritt in Sekunden, Minuten, Stunden oder Tagen gemessen werden soll.
Azure Marketplace: Vergewissern Sie sich, ob Sie azure Marketplace verwenden möchten, um die Bereitstellung zu initiieren. Wenn Sie dies tun, erfüllen Sie die erforderlichen Anforderungen zum Hinzufügen neuer Mandanten.
Berücksichtigen Sie auch die Onboarding- und Bereitstellungsschritte, Automatisierung und Ressourcenverwaltungsverantwortung.
Onboarding- und Bereitstellungsschritte
Definieren und dokumentieren Sie jede Aufgabe, die für das Onboarding eines Mandanten erforderlich ist, auch wenn der Prozess manuell ist. Der Onboarding-Workflow enthält in der Regel die folgenden Schritte:
- Akzeptieren Sie kommerzielle Vereinbarungen.
- Führen Sie manuelle Genehmigungsschritte aus, um z. B. Betrug oder Missbrauch Ihres Dienstes zu verhindern.
- Bereitstellen von Ressourcen in Azure.
- Erstellen oder Konfigurieren von Domänennamen.
- Führen Sie Konfigurationsaufgaben nach der Bereitstellung aus, z. B. das Erstellen des ersten Benutzerkontos für den Mandanten, und übertragen Sie ihre Anmeldeinformationen sicher an den Mandanten.
- Wenden Sie manuelle Konfigurationsänderungen an, z. B. DNS-Eintragsänderungen (Domain Name System).
Dokumentieren Sie den Workflow, der zum Onboarding eines neuen Mandanten erforderlich ist.
Berücksichtigen Sie die spezifischen Azure-Ressourcen, die Sie für einen Mandanten bereitstellen müssen. Auch wenn Sie keine dedizierten Ressourcen für jeden Mandanten bereitstellen, überlegen Sie, ob Sie manchmal Ressourcen bereitstellen müssen, wenn ein neuer Mandant integriert ist. Dieses Szenario kann auftreten, wenn ein Mandant Datenspeicherung in einer bestimmten Region erfordert. Es kann auch auftreten, wenn Sie einen Verpackungsansatz für den Behälter verwenden. Beim Packen des Papierkorbs erstellen Sie beim Herangehen der Grenzen eines Stempels oder einer Komponente in Ihrer Lösung eine weitere Instanz für den nächsten Mandantenbatch.
Überlegen Sie, ob der Onboardingprozess andere Mandanten stören könnte, insbesondere Mandanten, die dieselbe Infrastruktur nutzen. Wenn Sie beispielsweise freigegebene Datenbanken ändern müssen, bestimmen Sie, ob dieser Prozess zu Leistungseinbußen führen könnte, die von anderen Mandanten möglicherweise bemerkt werden. Überlegen Sie, ob Sie diese Effekte vermeiden oder mindern können, indem Sie den Onboardingprozess außerhalb der normalen Betriebszeiten ausführen.
Automatisierung
Sie sollten automatisierte Bereitstellungen für in der Cloud gehostete Lösungen verwenden. In Multitenant-Lösungen wird die Automatisierung aus folgenden Gründen noch wichtiger:
Maßstab: Da ihre Mandantenpopulation steigt, werden manuelle Bereitstellungsprozesse immer komplexer und zeitaufwändiger. Ein automatisierter Bereitstellungsansatz ist einfacher zu skalieren, wenn die Anzahl der Mandanten wächst.
Wiederholbar: Verwenden Sie in einer mehrinstanzenfähigen Umgebung einen konsistenten Prozess für Bereitstellungen in allen Mandanten. Manuelle Prozesse führen zu Fehlern oder inkonsistenten Schritten über Mandanten hinweg. Ihre Umgebung kann dann in einem inkonsistenten Zustand verbleiben, wodurch es für Ihr Team schwieriger wird, die Lösung zu verwalten.
Auswirkungen von Ausfällen: Manuelle Bereitstellungen sind riskanter und anfälliger für Ausfälle als automatisierte Bereitstellungen. In einer mehrinstanzenfähigen Umgebung kann ein Bereitstellungsfehler einen systemweiten Ausfall verursachen, der sich auf jeden Mandanten auswirkt, wodurch die Gesamtwirkung erhöht wird.
Wenn Sie eine Bereitstellung in einer Mehrinstanzenumgebung ausführen, befolgen Sie die folgenden Methoden:
Verwenden Sie Bereitstellungspipelinen, um allgemeine Ressourcen bereitzustellen.
Verwenden Sie Infrastruktur als Codetechnologien (IaC), z. B . Bicep, JSON Azure Resource Manager-Vorlagen (ARM-Vorlagen) oder Terraform.
Verwenden Sie Code, um Azure SDKs bei Bedarf aufzurufen.
Wenn Sie Ihre Lösung über Azure Marketplace anbieten möchten, sollten Sie einen vollständig automatisierten Onboardingprozess für neue Mandanten bereitstellen.
Maximale Ressourcenkapazität
Wenn Sie Mandantenressourcen programmgesteuert in gemeinsam genutzten Ressourcen bereitstellen, sollten Sie die Kapazitätsgrenze für jede Ressource berücksichtigen. Wenn Sie diesen Grenzwert nähern, müssen Sie möglicherweise eine weitere Instanz der Ressource erstellen, um eine weitere Skalierung zu unterstützen. Berücksichtigen Sie die Grenzwerte für jede Ressource, die Sie bereitstellen, und die Bedingungen, die sie zum Bereitstellen einer anderen Instanz auslösen.
Angenommen, Ihre Lösung enthält einen logischen Azure SQL-Server und stellt eine dedizierte Datenbank auf diesem Server für jeden Mandanten zur Seite. Ein einzelner logischer Server verfügt über Grenzwerte, die eine maximale Anzahl von Datenbanken enthalten, die unterstützt werden. Wenn Sie diese Grenzwerte erreichen, müssen Sie möglicherweise neue Server bereitstellen, damit Sie weiterhin Mandanten integrieren können. Überlegen Sie, ob Sie diesen Prozess automatisieren oder das Wachstum manuell überwachen möchten.
Ressourcenverwaltungsverantwortung
Stellen Sie in einigen mehrinstanzenübergreifenden Lösungen Ressourcen mithilfe eines von mehreren Modellen bereit. Stellen Sie dedizierte Azure-Ressourcen für jeden Mandanten bereit, z. B. eine Datenbank für jeden Mandanten. Oder Sie können eine festgelegte Anzahl von Mandanten definieren, die in einer einzigen Instanz einer Ressource untergebracht werden sollen, sodass die Anzahl der Mandanten, die Sie für Azure bereitstellen, diktieren. Stellen Sie in anderen Lösungen eine einzelne Gruppe gemeinsam genutzter Ressourcen bereit, und konfigurieren Sie sie neu, wenn Sie neue Mandanten integrieren.
Jedes dieser Modelle erfordert, dass Sie Ressourcen auf unterschiedliche Weise bereitstellen und verwalten, und Sie müssen überlegen, wie Sie den Lebenszyklus der von Ihnen bereitgestellten Ressourcen bereitstellen und verwalten. Berücksichtigen Sie zwei gängige Ansätze:
Behandeln Sie Mandanten als Konfiguration der bereitgestellten Ressourcen, und verwenden Sie Ihre Bereitstellungspipelines, um diese Ressourcen bereitzustellen und zu konfigurieren.
Behandeln Sie Mandanten als Daten, und verfügen Sie über eine Steuerungsebene zur Bereitstellung und Konfiguration der Infrastruktur für Ihre Mandanten.
In den folgenden Abschnitten werden diese Ansätze weiter beschrieben.
Testen
Testen Sie Ihre Lösung während und nach jeder Bereitstellung gründlich. Sie können automatisierte Tests verwenden, um das funktionale und nicht funktionsfähige Verhalten Ihrer Lösung zu überprüfen. Stellen Sie sicher, dass Sie Ihr Mandantenisolationsmodell testen. Erwägen Sie die Verwendung von Tools wie Azure Chaos Studio , um absichtlich Fehler einzuführen, die reale Ausfälle simulieren, und überprüfen Sie, ob Ihre Lösung funktioniert, auch wenn eine Komponente nicht verfügbar ist oder Fehlfunktionen auftreten.
Zu berücksichtigende Ansätze und Muster
Mehrere Designmuster aus dem Azure Architecture Center und die breitere Community unterstützen die Bereitstellung und Konfiguration von Multitenant-Lösungen.
Muster mit Bereitstellungsstempeln
Verwenden Sie das Bereitstellungsstempelmuster , um dedizierte Infrastruktur für einen Mandanten oder eine Gruppe von Mandanten bereitzustellen. Ein einzelner Stempel kann mehrere Mandanten enthalten, oder er ist einem einzelnen Mandanten zugeordnet. Sie können einen einzelnen Stempel bereitstellen oder eine Bereitstellung über mehrere Stempel hinweg koordinieren. Wenn Sie dedizierte Stempel für jeden Mandanten bereitstellen, sollten Sie erwägen, ganze Stempel programmgesteuert bereitzustellen.
Bereitstellungsringe
Verwenden Sie Bereitstellungsringe , um Updates für verschiedene Infrastrukturgruppen zu unterschiedlichen Zeiten zu bereitstellen. Dieser Ansatz ergänzt häufig das Bereitstellungsstempelmuster. Weisen Sie Gruppen von Stempeln verschiedenen Ringen basierend auf Mandanteneinstellungen, Workloadtypen und anderen Überlegungen zu. Weitere Informationen finden Sie unter Bereitstellungsringe.
Featureflags
Verwenden Sie Featurekennzeichnungen , um neue Features oder Versionen Ihrer Lösung schrittweise für verschiedene Mandanten oder Benutzer verfügbar zu machen, ohne Code erneut bereitzustellen. Erwägen Sie die Verwendung der Azure App-Konfiguration zum Verwalten Ihrer Featurekennzeichnungen. Weitere Informationen finden Sie unter Featurekennzeichnungen.
Manchmal müssen Sie bestimmte Features für bestimmte Kunden selektiv aktivieren. Sie können z. B. unterschiedliche Preisniveaus haben, die den Zugriff auf bestimmte Funktionen ermöglichen. Featurekennzeichnungen sind in der Regel nicht die richtige Wahl für diese Szenarien. Erwägen Sie stattdessen das Erstellen eines Prozesses zum Nachverfolgen und Erzwingen der Lizenzberechtigungen , die jeder Kunde hat.
Zu vermeidende Antimuster
Wenn Sie Multitenant-Lösungen bereitstellen und konfigurieren, vermeiden Sie Situationen, die ihre Skalierung behindern. In den folgenden Beispielen werden allgemeine Antipattern hervorgehoben:
Manuelle Bereitstellung und Tests: Manuelle Bereitstellungsprozesse fügen Risiken hinzu und verlangsamen die Bereitstellung. Erwägen Sie die Verwendung von Pipelines für automatisierte Bereitstellungen, das programmgesteuerte Erstellen von Ressourcen aus dem Code Ihrer Lösung oder eine Kombination aus beiden.
Spezielle Anpassungen für Mandanten: Vermeiden Sie die Bereitstellung von Features oder einer Konfiguration, die nur für einen einzelnen Mandanten gilt. Dieser Ansatz fügt Ihren Bereitstellungen und Testprozessen Komplexität hinzu. Verwenden Sie stattdessen die gleichen Ressourcentypen und Codebasis für jeden Mandanten. Verwenden Sie Strategien wie Featurekennzeichnungen für temporäre Änderungen oder für Features, die schrittweise eingeführt werden. Oder verwenden Sie unterschiedliche Preisstufen mit Lizenzberechtigungen, um Features für Mandanten, die sie erfordern, selektiv zu aktivieren. Verwenden Sie einen konsistenten und automatisierten Bereitstellungsprozess, auch für Mandanten mit isolierten oder dedizierten Ressourcen.
Mandantenlisten als Konfiguration oder Daten
Berücksichtigen Sie die folgenden Ansätze, wenn Sie Ressourcen in einer mehrinstanzenübergreifenden Lösung bereitstellen:
Verwenden Sie eine automatisierte Bereitstellungspipeline, um jede Ressource bereitzustellen. Wenn neue Mandanten hinzugefügt werden, konfigurieren Sie Ihre Pipeline neu, um die Ressourcen für jeden Mandanten bereitzustellen.
Verwenden Sie eine automatisierte Bereitstellungspipeline, um freigegebene Ressourcen bereitzustellen, die nicht von der Anzahl der Mandanten abhängen. Erstellen Sie mandantenspezifische Ressourcen innerhalb Ihrer Anwendung.
Wenn Sie die beiden Ansätze berücksichtigen, unterscheiden Sie zwischen der Behandlung Ihrer Mandantenliste als Konfiguration oder als Daten. Diese Unterscheidung beeinflusst auch, wie Sie eine Steuerebene für Ihr System erstellen.
Mandantenliste als Konfiguration
Wenn Sie Ihre Mandantenliste als Konfiguration behandeln, stellen Sie alle Ihre Ressourcen aus einer zentralen Bereitstellungspipeline bereit. Wenn neue Mandanten integriert sind, konfigurieren Sie die Pipeline oder die zugehörigen Parameter neu. In der Regel erfolgt die Neukonfiguration durch manuelle Änderungen, wie im folgenden Diagramm dargestellt.
Der Onboardingprozess für einen neuen Mandanten umfasst in der Regel die folgenden Schritte:
Aktualisieren Sie die Mandantenliste manuell, indem Sie die Pipeline konfigurieren oder eine Parameterdatei ändern, die in der Konfiguration der Pipeline enthalten ist.
Lösen Sie die Auszuführende Pipeline aus.
Die Pipeline stellt Ihren vollständigen Satz von Azure-Ressourcen, einschließlich aller neuen mandantenspezifischen Ressourcen, erneut zur Bereitstellung vor.
Dieser Ansatz eignet sich gut für kleine Anzahl von Mandanten und Architekturen, bei denen alle Ressourcen gemeinsam genutzt werden. Ein einzelner Prozess stellt alle Ihre Azure-Ressourcen bereit und konfiguriert sie, wodurch der allgemeine Ansatz vereinfacht wird.
Da die Anzahl der Mandanten jedoch zunimmt, oft um 10 oder mehr, ist es umständlich, die Pipeline neu zu konfigurieren, während Sie Mandanten hinzufügen. Die Zeit für die Ausführung der Bereitstellungspipeline nimmt häufig zu. Dieser Ansatz unterstützt auch die Self-Service-Mandantenerstellung nicht einfach, und die Vorlaufzeit, bevor ein Mandant integriert wird, kann länger sein, da Sie Die Pipeline zum Ausführen auslösen müssen.
Mandantenliste als Daten
Wenn Sie Ihre Mandantenliste als Daten behandeln, stellen Sie ihre freigegebenen Komponenten weiterhin mithilfe einer Pipeline bereit. Für Ressourcen und Konfigurationseinstellungen, die für jeden Mandanten bereitgestellt werden müssen, müssen Sie Ihre Ressourcen jedoch unbedingt bereitstellen oder konfigurieren. Ihre Steuerungsebene kann beispielsweise Azure SDKs verwenden, um eine bestimmte Ressource zu erstellen oder die Bereitstellung einer parametrisierten Vorlage zu initiieren.
Der Onboardingprozess umfasst in der Regel die folgenden asynchronen Schritte:
Fordern Sie das Onboarding eines Mandanten an, z. B. das Initiieren einer API-Anforderung an die Steuerebene Ihres Systems.
Eine Workflowkomponente empfängt die Erstellungsanforderung und koordiniert die verbleibenden Schritte.
Der Workflow initiiert die Bereitstellung mandantenspezifischer Ressourcen für Azure. Sie können ein imperatives Programmiermodell wie Azure-SDKs verwenden oder die Bereitstellung einer Bicep-Datei oder Terraform-Vorlage zwingend auslösen.
Nach Abschluss der Bereitstellung speichert der Workflow die Details des neuen Mandanten im zentralen Mandantenkatalog. Die für jeden Mandanten gespeicherten Daten können die Mandanten-ID und die Ressourcen-IDs für alle mandantenspezifischen Ressourcen enthalten, die der Workflow erstellt hat.
Dieser Ansatz ermöglicht die Ressourcenbereitstellung für neue Mandanten, ohne die gesamte Lösung erneut bereitzustellen. Die Bereitstellungszeit ist in der Regel kürzer, da nur mandantenspezifische Ressourcen bereitgestellt werden.
Dieser Ansatz ist jedoch oft viel zeitaufwändiger zu erstellen. Ihr Aufwand muss durch die Anzahl der Mandanten oder die Bereitstellungszeitrahmen gerechtfertigt sein, die Sie erfüllen müssen.
Weitere Informationen finden Sie unter Überlegungen für mehrinstanzenfähige Steuerebenen.
Hinweis
Azure-Bereitstellungs- und Konfigurationsvorgänge nehmen häufig Zeit in Anspruch. Stellen Sie sicher, dass Sie einen geeigneten Prozess verwenden, um diese vorgänge mit langer Ausführung zu initiieren und zu überwachen. Sie können z. B. das Muster "Asynchrones Request-Reply" folgen. Verwenden Sie Technologien, die entwickelt wurden, um lange ausgeführte Vorgänge wie Azure Logic Apps und dauerhafte Funktionen zu unterstützen.
Beispiel
Contoso führt eine mehrinstanzenfähige Lösung für ihre Kunden aus. Sie haben sechs Mandanten, und sie erwarten, dass sie innerhalb der nächsten 18 Monate auf 300 Mandanten wachsen. Contoso folgt der Mehrinstanzen-App mit dedizierten Datenbanken für jeden Mandantenansatz . Sie stellen eine einzelne Gruppe von Azure App Service-Ressourcen und einen logischen Azure SQL-Server bereit, den alle Mandanten teilen. Sie stellen auch eine dedizierte Azure SQL-Datenbank für jeden Mandanten bereit, wie im folgenden Diagramm dargestellt. Contoso verwendet Bicep, um ihre Azure-Ressourcen bereitzustellen.
Option 1: Verwenden von Bereitstellungspipelines für alles
Contoso kann alle ihre Ressourcen mithilfe einer Bereitstellungspipeline bereitstellen. Ihre Pipeline stellt eine Bicep-Datei bereit, die alle Azure-Ressourcen enthält, einschließlich der Azure SQL-Datenbanken für jeden Mandanten. Eine Parameterdatei definiert die Liste der Mandanten. Die Bicep-Datei verwendet eine Ressourcenschleife , um eine Datenbank für jeden der aufgelisteten Mandanten bereitzustellen, wie im folgenden Diagramm dargestellt.
Wenn Contoso diesem Modell folgt, müssen sie die folgenden Schritte ausführen:
Aktualisieren Sie ihre Parameterdatei als Teil des Onboardings eines neuen Mandanten.
Führen Sie ihre Pipeline erneut aus.
Manuelles Nachverfolgen von Ressourcengrenzwerten, z. B. wenn sie unerwartet hoch wachsen und die maximale Anzahl von Datenbanken, die auf einem einzelnen logischen Azure SQL-Server unterstützt werden, nähern.
Option 2: Verwenden einer Kombination aus Bereitstellungspipelines und imperativer Ressourcenerstellung
Alternativ kann Contoso die Verantwortung für die Azure-Bereitstellungen trennen.
Contoso verwendet eine Bicep-Datei, die freigegebene Ressourcen definiert, die bereitgestellt werden sollen. Die freigegebenen Ressourcen unterstützen alle Mandanten und enthalten eine Mandantenkatalogdatenbank, die auch als Mandantenlistendatenbank bezeichnet wird, wie im folgenden Diagramm dargestellt.
Das Contoso-Team erstellt eine Steuerungsebene, die eine Mandanten-Onboarding-API enthält. Wenn ihr Vertriebsteam den Verkauf an einen neuen Kunden abgeschlossen hat, löst Microsoft Dynamics die API aus, um den Onboardingprozess zu starten. Contoso stellt außerdem eine Self-Service-Webschnittstelle bereit, die Kunden verwenden, um dieselbe API auszulösen.
Die API startet asynchron einen Workflow, der ihre neuen Mandanten integriert. Der Workflow initiiert die Bereitstellung einer neuen Azure SQL-Datenbank, die eine der folgenden Ansätze verwenden kann:
Verwenden Sie das Azure SDK, um die Bereitstellung einer zweiten Bicep-Datei zu initiieren, die die Azure SQL-Datenbank definiert.
Verwenden Sie das Azure SDK, um eine Azure SQL-Datenbank mithilfe der Verwaltungsbibliothek imperativer Weise zu erstellen.
Nachdem die Datenbank bereitgestellt wurde, fügt der Workflow den Mandanten zur Mandantenlistendatenbank hinzu, wie im folgenden Diagramm dargestellt. Die Anwendungsebene initiiert fortlaufende Datenbankschemaaktualisierungen.
Beitragende
Microsoft verwaltet diesen Artikel. Die folgenden Mitwirkenden haben diesen Artikel geschrieben.
Hauptautor:
- John Downs | Principal Software Engineer, Azure Patterns & Practices
Andere Mitwirkende:
- Bohdan Cherchyk | Senior Customer Engineer, FastTrack für Azure
- Arsen Vladimirskiy | Principal Customer Engineer, FastTrack für Azure
Um nicht-öffentliche LinkedIn-Profile anzuzeigen, melden Sie sich bei LinkedIn an.