SaaS voor meerdere tenants in Azure

Azure Active Directory
App Service
DNS
Front Door
Kubernetes-service

Wanneer u een deel van de softwareoplossing van uw bedrijf identificeert dat niet-merkbaar kan zijn en op de markt kan worden gebracht voor andere bedrijven, wordt er een volledige nieuwe inkomstenstroom voor een bedrijf toegevoegd. Het configureren van de oplossing om rekening te houden met de belasting die een groot aantal tenants met zich meebrengt, is echter vaak een lastig obstakel om aan te pakken. Azure biedt een scala aan services voor het beheren van een softwareoplossing die:

  • Flexibele onderhoudt databases voor alle clients.

  • Hiermee wordt de bedrijfs- en logische laag van de oplossing geschaald om knelpunten in de rekenlaag te voorkomen.

  • Integreert beschikbaarheid en regionale failover.

  • Biedt end-to-end-beveiliging op alle niveaus van de oplossing.

Potentiële gebruikscases

Deze use cases hebben ontwerppatronen die kunnen profiteren van een Multitenant SaaS-oplossing die wordt gehost in Azure:

  • Ontwikkel een CRM-oplossing (Customer Relationship Management) die klanten kunnen op de markt brengen en verkopen aan klanten.

  • Implementeert een CMS-systeem (Content Management System) en levert dit aan meerdere gebruikers met behulp van deze architectuur.

Architectuur

Diagram met een Multitenant SaaS-architectuur die is ingesteld in Azure in twee verschillende regio's.

Download een SVG van deze architectuur.

Een suite met Azure-technologieën die het verkeer beveiligen en de belasting in balans brengen.

  1. Azure Front Door verwerkt een paar initiële taken:

    • De eerste aanvraag verwerken.

    • Taakverdeling tussen de regio's.

    • SSL(HTTPS) beëindiging en offloading.

    • Fail over als er sprake is van een regionale storing.

  2. Azure DNS beheert DNS-records en verzekert routering naar het juiste Front Door eindpunt.

  3. De architectuur gebruikt Azure Active Directory (Azure AD) als id-provider voor verificatie.

  4. Zodra de routes en load balances naar de juiste regio zijn gerouteerd, worden Application Gateway omgeleid naar de juiste App Service.

  5. Voor deze architectuur is App Service de voorkeursservice voor:

    • Elke HTTP-toepassing.

    • Webinhoud leveren.

    • RESTful API's blootstellen.

    • Bedrijfslogica implementeren achter de front-endtoepassing.

    U kunt configureren App Service automatisch omhoog en uit te schalen. Dit maakt App Service geschikt voor het schalen van een groot aantal HTTP-aanvragen op aanvraag.

  6. De laagservices voor gegevenstoegang worden ook onafhankelijk geschaald op basis van belasting. Gegevensservices beheren gegevensmodellen, verbindings-clients en stuurprogramma's. De services bieden ook een consistente gegevensinterface voor alle services op een hoger niveau die gegevens in de toepassing willen gebruiken. U kunt deze gegevensservices implementeren en schalen met behulp van Azure Kubernetes Service (AKS). Elk AKS-cluster is verantwoordelijk voor een set gerelateerde functies in de laag. AKS kan een microservicearchitectuur implementeren, die een reeks containers bevat die elk specifieke functionaliteit in het cluster bevatten. Het maakt een hoge mate van abstractie en ontkoppeling binnen de code mogelijk. Het biedt clusters ook de mogelijkheid om afzonderlijk uit te schalen om rekening te houden met een verhoogde belasting van meerdere tenants. Elk cluster kan de resources omhoog schalen als de belasting van het cluster toeneemt. Het omhoog schalen heeft geen invloed op de andere clusters in de resourcegroep, zolang deze niet dezelfde toename ondervinden.

  7. Sla relationele gegevens buiten het toepassingsraamwerk op en beheer deze. Dit biedt één gegevensinvoerpunt voor beide regio's. Replicatie, beschikbaarheid, schaalbaarheid en beveiliging zijn haalbaar door gebruik te maken van de kracht van Azure SQL elastische pools. Voor elke tenant een database inrichten in een pool. Wijs de resources die beschikbaar zijn in de pool toe aan databases op aanvraag wanneer de belasting en aanvragen binnen komen. Het optimaliseert de databasebronnen die beschikbaar zijn voor tenants ten opzichte van uw budget.

Onderdelen

De primaire onderdelen zijn de voorgestelde onderdelen voor de architectuur in deze oplossing. Als een van de primaire onderdelen niet bij uw architectuur past, bekijkt u de lijst met alternatieve onderdelen.

Primaire onderdelen

  • Azure Front Door:een regionaal load balancer clientverkeer naar de juiste regio routeert. Er kan een fail over worden naar de tweede regio als er een regiofout is en het internettoegangspunt kan worden beveiligd via Azure Web Application Firewall.

  • Azure Active Directory (Azure AD): fungeert als de id-provider voor de hele toepassing en afdwingt verificatie en end-to-end autorisatie van de aanvraag in de toepassing.

  • Azure DNS:een hostingservice in Azure voor domeinnaamoplossing. In een multitenant-oplossing hebben meerdere clients toegang tot de oplossing via hun eigen afzonderlijke domeinen. Gebruik Azure DNS om clientaanvragen te configureren en om te lossen naar de juiste toepassingsstack.

  • Application Gateway:routeer en load balancer het verkeer intern in de toepassing naar de verschillende services die voldoen aan de bedrijfsbehoeften van de klant. Hoewel Azure Front Door de belasting over regio's op hoog niveau afsaldi, is het Application Gateway dat zich bewust is van de belasting van afzonderlijke services binnen een groep. Azure Front Door en Application Gateway bieden complexe taakverdeling op alle niveaus in een multitenant-oplossing. Ga naar dit overzicht over Azure-taakverdeling voor meer informatie over opties voor taakverdeling in Azure.

  • App Service:De beste service van Azure voor webtoepassingen en web-API's. Beveiliging kan worden geïntegreerd met services zoals Azure AD en Azure Key Vault. U kunt configureren dat de schaal automatisch wordt geschaald. Daarnaast is de hoeveelheid resources die beschikbaar is om naar te schalen flexibel tussen de verschillende App Service-abonnementen waarmee de app kan worden uitgevoerd. App Service kunnen ook gebruikmaken van geïntegreerde DevOps-mogelijkheden voor continue integratie en implementatie in meerdere omgevingen. Met deze en andere ondersteunende functies van het Azure-platform kunnen ontwikkelaars zich richten op de ontwikkeling van hun toepassingen.

  • Azure Kubernetes Service (AKS): orchestrateert exemplaren van containerafbeeldingen die zijn geïmplementeerd in een cluster. Het beheren van gegevens van meerdere clients omvat vaak het implementeren van een reeks onderdelen voor het beheren van:

    • Gegevensmodellering

    • Connectiviteit van gegevensbron

    • Extraheren, transformeren, laden (ETL)

    • Import-/exportactiviteiten

    Door deze vele kleinere onderdelen te ontwikkelen als op containers gebaseerde microservices, ontstaat er een ideaal scenario voor de implementatie naar een AKS-cluster. Ingebouwd in het framework zijn hulpprogramma's voor automatisch schalen, taakverdeling en upgrademogelijkheden. AKS kan goed worden geïntegreerd met een CI/CD-strategie (continue integratie/continue levering) met behulp van de beschikbare DevOps-functies en Azure Container Registry.

  • Azure SQL Elastische pools:biedt een oplossing voor het flexibel beheren van een set databases met een pool resources. De service wijst resources op aanvraag toe aan de databases. Het biedt de ontwikkelaar van een Multitenant SaaS-architectuur de kracht om databaseresources te leveren aan clients wanneer deze nodig zijn. De service vermindert ook het budget en de overhead van het onderhouden van meerdere SQL Servers met grote hoeveelheden ongebruikte rekenresources.

  • Azure Cognitive Search (voorheen bekend als Azure Search): een service die een krachtige indexering en query-engine aan uw toepassing toevoegt. Het biedt clients toegang tot krachtige queryfunctionaliteit. Ze kunnen ook de AI-mogelijkheden van Azure gebruiken om de queryfunctionaliteit te verrijken en te verbeteren. Azure Cognitive Search kan rekening houden met multitenancy met behulp van een index-per-tenant- of service-per-tenant-strategie.

  • Azure Cache voor Redis:er wordt een cachelaag als een service op de oplossing toegepast, waardoor een beheerde cache in het geheugen wordt gebruikt om de latentie te verminderen en de prestaties voor de clients te verbeteren. Hoge doorvoer zorgt voor een groot aantal aanvragen voor het verwerken van meerdere tenants die toegang hebben tot het systeem. U kunt de service flexibel opschalen naarmate de belasting van de toepassing toeneemt. Het biedt ook ondersteuning voor versleuteling-at-rest om tenantgegevens in de cache te beveiligen en te isoleren.

Alternatieve onderdelen

  • Virtual Machine Scale Sets:hiermee kunt u services implementeren in een VM-omgeving die automatisch wordt geschaald en groeit wanneer dat nodig is. Virtual Machine Scale Sets is goed geïntegreerd met een Load Balancer of Application Gateway, om de belasting automatisch opnieuw te herverbalanceerd wanneer de schaalset groeit. Virtual Machine Scale Sets biedt de schaalbaarheid die deze oplossing vereist. In veel gevallen is het echter niet nodig om de volledige VM-omgeving te beheren en kunnen we dat niveau van de stack uitstellen naar App Service of AKS.

  • Azure SQL Database:implementeert als afzonderlijke toegewezen instanties als vervanging voor elastische pools. Het Azure SQL Database voegt meer overhead toe bij het rechtstreeks beheren van het exemplaar en brengt meer kosten met zich mee voor toegewezen resources. Dat gezegd hebbende, is het een acceptabel alternatief wanneer de tenant een dedicated server. De client heeft mogelijk meer controle nodig over het exemplaar en toegewezen beschikbare resources. Tenants waarvoor een toegewezen SQL Server kunnen naast tenants in een Elastische pool bestaan. U kunt een laag van SQL databases een van de prijsopties beschikbaar maken voor tenants bij het kopen van licenties voor de SaaS.

  • SQL Server op Virtual Machines:een andere optie voor de implementatie van SQL databases. De tenant heeft mogelijk een bestaande IT-infrastructuur en bestaande SQL on-premises servers. In dat geval wil de tenant mogelijk de huidige licenties gebruiken als een volledige migratie of in een hybride scenario. Door de losgekoppelde aard van de SaaS kan de gegevenslaag van de toepassing zich richten op elke SQL Database via configuratie.

Overwegingen

Multitenancy

Een multitenant-oplossing is de belangrijkste overweging in deze oplossing. De oplossing verwerkt een aantal clients tegelijk. Er worden ook voldoende resources toegewezen om alle clientaanvragen effectief te verwerken. Tijdens het verwerken van aanvragen beveiligt de oplossing verkeer van globale eindpunten en worden clientgegevens geïsoleerd om schendingen en cross-breachs te voorkomen. Implementeer clients in twee regionale resourcegroepen op basis van hun primaire locatie. Hierdoor wordt de regionale beschikbaarheid geoptimaliseerd.

U kunt veel clients implementeren in één rekengroep, omdat het systeem aanvragen isoleert op basis van verificatie en clientsleutels, die aanvragen onderscheiden op basis van deze unieke id's. Het systeem kan alle clientaanvragen afzonderlijk versleutelen met hun sleutels, zodat geen enkele client de gegevens van een andere client kan ontsleutelen. Door meerdere clients op één rekenstack te beheren, kunt u de resourcetoewijzing optimaliseren om clients de reactiesnelheid te bieden die ze nodig hebben.

U beheert clientdatabases op een vergelijkbare manier buiten de rekenstack, omdat een clientaanvraag kan binnenkomen vanuit een van de regionale stacks. Veel clientdatabases kunnen zich op dezelfde Elastische pool, geïsoleerd en beveiligd door TDE (Transparent Data Encryption). U kunt elke database configureren om gegevens te versleutelen met behulp van een door de client beheerde sleutel en de gegevens just-in-time (JIT) te ontsleutelen. Door JIT te ontsleutelen, worden clientgegevens beschermd tegen zowel de ontwikkelaar als andere clients. Het systeem maakt gebruik van de Elastische pool om op aanvraag resources te bieden aan de klanten die er aan zijn toegewezen, terwijl de kosten laag blijven. U kunt replicatiebeleid toewijzen aan elke Elastische pool back-up en failover voor clientgegevens te bieden. Breng meer elastische pools online wanneer u meer clients in het systeem onboardt.

Schaalbaarheid en beschikbaarheid

Deze oplossing is ontworpen om rekening te houden met een groot aantal tenants met behulp van de SaaS. Het maakt gebruik van het grote aantal schaalbare onderdelen en services om te groeien op basis van de belasting. Deze architectuur is niet ontworpen voor oplossingen die een paar tenants of een klein aantal aanvragen en gegevens verwerken. Het budget van een oplossing die gericht is op één client of een kleinere belasting, kan worden belast. Het is ook niet nodig om de overhead voor meerdere regio's te hebben, waarbij hoge wereldwijde beschikbaarheid geen vereiste is. Het voegt onnodige complexiteit en kosten toe.

Beveiliging

Het systeem behandelt beveiliging van end-to-end op elk niveau van de toepassing:

  • Azure Front Door biedt ingebouwde HTTPS-ondersteuning voor de domeinen. Dit betekent dat het systeem al het verkeer naar de SaaS-toepassing kan versleutelen. Azure Front Door implementeert ook Azure Web Application Firewall, om de SaaS-stack te beschermen tegen aanvallen aan de rand, voordat het systeem aanvragen naar de toepassing routeert.

  • Elke toepassingsstack in elke regio bevindt zich in een Azure-Virtual Network. Het systeem beperkt het verkeer naar het virtuele netwerk dat aanvragen accepteert van Azure Front Door, waardoor alle toepassingsservices worden beschermd tegen extern verkeer. Binnen de beveiligde firewall kan Application Gateway SSL beëindigen en zorgen voor een goede taakverdeling en routering binnen de toepassing.

  • Alle referenties, geheimen en verbindingsreeksen kunnen veilig worden beheerd door Azure Key Vault. Door deze gevoelige gegevens als geheimen te beheren, kunnen ontwikkelaars referenties in de toepassing injecteren op het moment van implementatie. Als u dit doet, zorgt u ervoor dat de code niet wordt vol raken met gevoelige informatie. Het gebruik van geheimen beschermt clientgegevens door ervoor te zorgen dat een schending van de code of man-in-the-middle-aanval geen toegang krijgt tot tenantdatabases.

  • In dit scenario kunnen de gegevens van meerdere tenants naast elkaar bestaan op dezelfde databaseserver, als dat niet dezelfde database is. Met TDE- en JIT-ontsleuteling worden gegevens in de database beschermd. Het systeem versleutelt alle gegevens in de database-at-rest en ontsleutelt deze alleen wanneer dit wordt aangevraagd door de tenant. Clients kunnen hun eigen sleutels leveren en u kunt alle clientsleutels opslaan in Azure Key Vault versleuteling voor meerdere tenants te beheren. Het beveiligt clientgegevens end-to-end, voorkomt dat de ontwikkelaar toegang heeft tot clientgegevens, isoleert gegevens tussen tenants en helpt te voldoen aan de nalevingsvereisten voor beveiliging en gegevens.

Prijzen

Azure App Service biedt een groot aantal prijslagen op basis van de verwachte vereiste rekenbronnen. Voor een SaaS met meerdereten zijn mogelijkheden voor hoge beschikbaarheid en uitschalen belangrijke onderdelen bij het kiezen van het serviceplan. Als u verwacht veel tenants te hosten, kan het nodig zijn om een Premium- of Isolated-laag te kiezen om de rekenbronnen te bieden die nodig zijn om rekening te houden met het grote verkeer. De lagen Standard, Premium en Isolated zijn allemaal toegewezen VM-exemplaren. U kunt de kosten per tijdseenheid berekenen op hoeveel VM's van de opgegeven laag u hebt opgegeven. Ga voor meer informatie naar het overzicht van App Service-abonnementen.

Azure Kubernetes Service biedt een rendabele containerservice. Kosten voor AKS-knooppunten worden alleen in rekening gebracht bij gebruik, zodat er alleen kosten in rekening worden gebracht voor:

  • De VM's

  • Verbruikte opslag- en netwerkbronnen

  • Kosten rechtstreeks gerelateerd aan gebruik schalen

Het gebruik van AKS als gegevenslaagservice is ideaal als u de kosten wilt verlagen. Ga naar de Kubernetes-servicecalculatorvoor een schatting van de prijzen van een laag AKS-exemplaren.

De prijzen voor Azure SQL Elastische pool zijn in een scenario met meerdereten zeer rendabel. Tenantdatabases in Elastische pool delen de beschikbare resources. Naarmate de vraag in de tijd tussen tenants verschuift, zullen resources ook veranderen. Azure SQL Elastische pool biedt de maximaal beschikbare resources om databases te beheren zonder dat er resourceoverhead voor alle databases nodig is. De service houdt de kosten laag voor de ontwikkelaar van de SaaS en de tenants. Gebruik de Azure SQL Database prijscalculator om de prijs te bepalen en de laag en de hoeveelheid resources te bepalen die nodig zijn om uw tenants en hun gegevens te bedienen.

  • Het gebruik van een prijsmodel voor virtuele kernen (vCore) biedt meer flexibiliteit bij het schalen om te voldoen aan de vereiste resources. U kunt ook profiteren van de Azure Hybrid Benefit. Bestaande SQL Server bieden een korting op vCore SQL resources in de cloud. In een instantie waarin on-premises servers al deel uitmaken van de infrastructuur voor ontwikkelaars, kunt u de kosten dus nog meer beheren met behulp van deze kortingen. U kunt uw potentiële besparingen schatten met behulp van Azure Hybrid Benefit calculator voor besparingen.

  • U kunt ook kosten besparen op SQL Server resources door gereserveerde Azure SQL Database te kopen. Een aankoop van gereserveerde capaciteit markeert een toezegging van SQL Database gebruik. De term ligt meestal tussen één en drie jaar. U krijgt kortingen op de rekenkosten van de resources in de reservering. U kunt bijvoorbeeld een reservering maken van 32 vCores voor algemeen gebruik voor een jaar, waardoor de kosten van die 32 vCores voor dat jaar worden beperkt. Het hebben van meerdere tenants die licenties voor een SaaS kopen, is een sterke indicator dat het gebruik van gereserveerde capaciteit geschikt is voor de oplossing en een ideale kostenbesparing is voor deze workload.

U vindt de prijsstructuur voor Azure Cache voor Redis op Azure Cache voor Redis pagina met prijzen. Pas de cachelaag op elk moment aan tussen een Basic-, Standard- en Premium op basis van de behoefte. U ziet hogere prijzen voor de grotere cachelimieten en aanvullende functies, zoals replicatie en herstel na noodherstel. Azure Cache voor Redis biedt ook prijzen voor gereserveerde capaciteit voor langetermijngebruiksverplichtingen.

De prijs van Azure Front Door is afhankelijk van de hoeveelheid gegevensoverdracht in en uit de service. Voor uitgaande gegevens zijn de prijzen verschillend op basis van zones. Voor verschillende regio's worden verschillende kosten in rekening brengen. Als u te maken hebt met een prijsverschil, kunt u de kosten afzonderlijk schatten. De prijs omvat een aantal routerings- en domeincapaciteit, maar het systeem zou kosten in rekening brengen die de initiële limieten overschrijden. Azure Web Application Firewall worden er kleine extra kosten in rekening brengen per toegepaste beleid of regel. U vindt de prijsgegevens voor Azure Front Door op Azure Front Door pagina met prijzen.

De prijzen voor Azure Cognitive Search zijn een volledig gelaagd systeem. Er is een gratis laag beschikbaar voor ontwikkeling en testen. Daarna worden voor elke laag kosten per uur in Cognitive Search toegewezen instantie. Naarmate de lagen toenemen, nemen ook de totale opslag, het aantal indexen en de limieten voor uitschalen toe. Azure Cognitive Search biedt aan alle betaalde lagen eenzelfde tarief voor het extra extractie van afbeeldingen als een service.

Volgende stappen