Die Wingtip Tickets SaaS-Anwendung

Gilt für:Azure SQL-Datenbank

In jedem der drei Beispiele wird die gleiche SaaS-Anwendung Wingtip Tickets implementiert. Bei der App handelt es sich um eine einfache SaaS-App zum Auflisten von Veranstaltungen und Eintrittskarten für kleine Veranstaltungsorte wie Theater, Clubs usw. Jeder Veranstaltungsort ist ein Mandant der App und verfügt über eigene Daten: Veranstaltungsortdetails, Ereignislisten, Kunden, Ticketbestellungen usw. Zusammen mit den Verwaltungsskripts und Lernprogrammen zeigt die App ein End-to-End-SaaS-Szenario. Hierzu gehört Folgendes: Bereitstellung von Mandanten, Überwachung und Verwaltung der Leistung, Schemaverwaltung sowie mandantenübergreifende Berichterstellung und Analyse.

Drei Muster für SaaS-Anwendung und Mandanten

Es stehen drei Versionen der App zur Verfügung. Jede dieser Versionen steht für ein anderes Datenbankmandantenmuster in Azure SQL-Datenbank. Die erste Version verwendet eine eigenständige Anwendung pro Mandant mit eigener Datenbank. Die zweite verwendet eine mehrinstanzenfähige App mit einer Datenbank pro Mandant. Das dritte verwendet eine mehrinstanzenfähige App mit mehrinstanzenfähigen Datenbanken mit Sharding.

Three tenancy patterns

Jedes Beispiel enthält den Anwendungscode sowie Verwaltungsskripts und Tutorials mit verschiedenen Entwurfs- und Verwaltungsmustern. Jedes Beispiel lässt sich innerhalb von fünf Minuten bereitstellen. Alle drei Beispiele können nebeneinander bereitgestellt werden, sodass Sie die Unterschiede hinsichtlich Entwurf und Verwaltung miteinander vergleichen können.

Muster mit einer eigenständigen Anwendung pro Mandant

Das Muster mit einer eigenständigen Anwendung pro Mandant besteht aus einer einzelnen Mandantenanwendung und einer Datenbank für jeden Mandanten. Die Anwendung jedes Mandanten wird mit der zugehörigen Datenbank in einer separaten Azure-Ressourcengruppe bereitgestellt. Die Ressourcengruppe kann im Abonnement des Dienstanbieters oder im Abonnement des Mandanten bereitgestellt und vom Anbieter im Auftrag des Mandanten verwaltet werden. Das Muster mit einer eigenständigen Anwendung pro Mandant bietet das höchste Maß an Isolierung für die Mandanten, ist aber in der Regel die teuerste Lösung, da Ressourcen nicht von mehreren Mandanten gemeinsam genutzt werden können. Dieses Muster eignet sich gut für Anwendungen, die möglicherweise komplexer sind und für eine kleinere Anzahl von Mandanten bereitgestellt werden. Bei eigenständigen Bereitstellungen kann die Anwendung für den einzelnen Mandanten einfacher als in anderen Mustern angepasst werden.

Weitere Informationen finden Sie in den Tutorials und den Code auf GitHub: .../Microsoft/WingtipTicketsSaaS-StandaloneApp.

Muster mit einer Datenbank pro Mandant

Das Muster mit einer Datenbank pro Mandant ist eine effektive Version für Dienstanbieter, die sowohl ihre Mandanten isolieren müssen als auch einen zentralisierten Dienst ausführen möchten, der eine kosteneffiziente Verwendung gemeinsam genutzter Ressourcen ermöglicht. Für jeden Veranstaltungsort (also jeden Mandanten) wird eine Datenbank erstellt, und alle Datenbanken werden zentral verwaltet. Datenbanken können in Pools für elastische Datenbanken gehostet werden, um eine kosteneffiziente und einfache Leistungsverwaltung zu ermöglichen, die von den nicht vorhersehbaren Workloadmustern der Mandanten profitiert. Eine Katalogdatenbank enthält die Zuordnung zwischen Mandanten und ihren Datenbanken. Diese Zuordnung wird mithilfe der Verwaltungsfeatures der Clientbibliothek für elastische Datenbanken für die Shardzuordnung verwaltet, die eine effiziente Verbindungsverwaltung für die Anwendung ermöglicht.

Weitere Informationen finden Sie in den Tutorials und den Code auf GitHub: .../Microsoft/WingtipTicketsSaaS-DbPerTenant.

Muster für mehrinstanzenfähige Datenbanken mit Sharding

Mehrinstanzenfähige Datenbanken sind eine effektive Möglichkeit für Dienstanbieter, die die Kosten pro Mandant senken möchten und für die ein geringeres Maß an Isolation für die Mandanten kein Problem darstellt. Mit diesem Muster lässt sich eine große Anzahl von Mandanten mit einer einzelnen Datenbank verwalten, wodurch die Kosten pro Mandant sinken. Durch Sharding (horizontales Partitionieren) der Mandanten über mehrere Datenbanken hinweg ist eine nahezu unbegrenzte Skalierung möglich. Die Mandanten werden über eine Katalogdatenbank den Datenbanken zugeordnet.

Dieses Muster ermöglicht auch ein hybrides Modell, bei dem Sie durch Verwenden einer Datenbank für mehrere Mandanten die Kosten optimieren oder mit einem einzelnen Mandanten mit eigener Datenbank für eine optimale Isolierung sorgen können. Diese Entscheidung kann für jeden Mandanten einzeln getroffen werden, entweder während der Bereitstellung des Mandanten oder später – ohne Auswirkungen auf die Anwendung. Dieses Modell lässt sich effektiv einsetzen, wenn Gruppen von Mandanten unterschiedlich behandelt werden müssen. Beispielsweise können kostengünstige Mandanten freigegebenen Datenbanken zugewiesen werden, während Premium-Mandanten eigene Datenbanken erhalten.

Weitere Informationen finden Sie in den Tutorials und den Code auf GitHub: .../Microsoft/WingtipTicketsSaaS-MultiTenantDb.

Nächste Schritte

Beschreibungen der Konzepte

Tutorials und Code