De Wingtip Tickets SaaS-toepassing
Van toepassing op: Azure SQL Database
Dezelfde Wingtip Tickets SaaS-toepassing wordt geïmplementeerd in elk van de drie voorbeelden. De app is een eenvoudige gebeurtenisvermelding en ticketing SaaS-app gericht op kleine locaties- theaters, clubs, enzovoort. Elke locatie is een tenant van de app en heeft zijn eigen gegevens: locatiegegevens, lijsten met evenementen, klanten, ticketorders, enzovoort. De app toont samen met de beheerscripts en zelfstudies een end-to-end SaaS-scenario. Dit omvat het inrichten van tenants, het bewaken en beheren van prestaties, schemabeheer en rapportage en analyses tussen tenants.
Drie SaaS-toepassings- en tenancypatronen
Er zijn drie versies van de app beschikbaar; elk verkent een ander patroon voor databasetenancy in Azure SQL Database. De eerste maakt gebruik van een zelfstandige toepassing per tenant met een eigen database. De tweede maakt gebruik van een app met meerdere tenants met een database per tenant. Het derde voorbeeld maakt gebruik van een app met meerdere tenants met shard-databases met meerdere tenants.
Elk voorbeeld bevat de toepassingscode, plus beheerscripts en zelfstudies die een scala aan ontwerp- en beheerpatronen verkennen. Elk voorbeeld wordt in minder dan vijf minuten geïmplementeerd. Alle drie kunnen naast elkaar worden geïmplementeerd, zodat u de verschillen in ontwerp en beheer kunt vergelijken.
Patroon voor een zelfstandige toepassing per tenant
De zelfstandige app per tenantpatroon maakt gebruik van één tenanttoepassing met een database voor elke tenant. De app van elke tenant, inclusief de database, wordt geïmplementeerd in een afzonderlijke Azure-resourcegroep. De resourcegroep kan worden geïmplementeerd in het abonnement van de serviceprovider of het abonnement van de tenant en beheerd door de provider namens de tenant. Het patroon van de zelfstandige app per tenant biedt de grootste tenantisolatie, maar is meestal het duurst omdat er geen mogelijkheid is om resources te delen tussen meerdere tenants. Dit patroon is geschikt voor toepassingen die mogelijk complexer zijn en die worden geïmplementeerd in kleinere aantallen tenants. Met zelfstandige implementaties kan de app eenvoudiger worden aangepast voor elke tenant dan in andere patronen.
Bekijk de zelfstudies en code op GitHub .../Microsoft/WingtipTicketsSaaS-StandaloneApp.
Patroon database per tenant
Het databasepatroon per tenant is effectief voor serviceproviders die zich bezighouden met tenantisolatie en een gecentraliseerde service willen uitvoeren die kostenefficiënt gebruik van gedeelde resources mogelijk maakt. Er wordt een database gemaakt voor elke locatie of tenant en alle databases worden centraal beheerd. Databases kunnen worden gehost in elastische pools om kostenefficiënt en eenvoudig prestatiebeheer te bieden, dat gebruikmaakt van de onvoorspelbare workloadpatronen van de tenants. Een catalogusdatabase bevat de toewijzing tussen tenants en hun databases. Deze toewijzing wordt beheerd met behulp van de shard-toewijzingsbeheerfuncties van de elastic database-clientbibliotheek, die efficiënt verbindingsbeheer voor de toepassing biedt.
Bekijk de zelfstudies en code op GitHub .../Microsoft/WingtipTicketsSaaS-DbPerTenant.
Shard-databasepatroon met meerdere tenants
Databases met meerdere tenants zijn effectief voor serviceproviders die op zoek zijn naar lagere kosten per tenant en oké met verminderde tenantisolatie. Met dit patroon kunnen grote aantallen tenants in een afzonderlijke database worden verpakt, waardoor de kosten per tenant omlaag worden gebracht. Bijna oneindige schaal is mogelijk door de tenants in meerdere databases te sharden. Een catalogusdatabase wijst tenants toe aan databases.
Met dit patroon kunt u ook een hybride model gebruiken waarin u kunt optimaliseren voor kosten met meerdere tenants in een database of kunt optimaliseren voor isolatie met één tenant in hun eigen database. De keuze kan per tenant worden gemaakt, hetzij wanneer de tenant wordt ingericht of later, zonder dat dit van invloed is op de toepassing. Dit model kan effectief worden gebruikt wanneer groepen tenants anders moeten worden behandeld. Goedkope tenants kunnen bijvoorbeeld worden toegewezen aan gedeelde databases, terwijl Premium-tenants aan hun eigen databases kunnen worden toegewezen.
Bekijk de zelfstudies en code op GitHub .../Microsoft/WingtipTicketsSaaS-MultiTenantDb.
Volgende stappen
Conceptuele beschrijvingen
- Een gedetailleerdere uitleg van de tenancypatronen van toepassingen is beschikbaar op tenantpatronen voor SaaS-databases met meerdere tenants
Zelfstudies en code
Zelfstandige app per tenant:
Database per tenant:
Sharded multitenant: