SaaS voor meerdere tenants in Azure

Microsoft Entra ID
Azure App Service
Azure DNS
Azure Front Door
Azure Kubernetes Service (AKS)

Wanneer u een deel van de softwareoplossing van uw bedrijf identificeert die u kunt unbranden en op de markt kunt brengen voor andere bedrijven, wordt er een volledige nieuwe omzetstroom voor een bedrijf toegevoegd. Het configureren van de oplossing om rekening te houden met de belasting die een aantal tenants brengt, is vaak een lastig obstakel om aan te pakken. Met deze oplossing wordt een reeks Azure-technologieën behandeld die het verkeer beveiligen en verdelen.

Architectuur

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

Een Visio-bestand van deze architectuur downloaden.

Workflow

Een suite met Azure-technologieën voor het beveiligen en verdelen van het verkeer.

  1. Microsoft Azure Front Door verwerkt een aantal eerste taken:

    • De eerste aanvraag verwerken

    • Taakverdeling in de regio's

    • SSL(HTTPS)-beëindiging en offloading

    • Failover uitvoeren als er sprake is van een regionale storing

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

  3. De architectuur gebruikt Microsoft Entra ID als id-provider voor verificatie.

  4. Zodra deze naar de juiste regio is gerouteerd, worden Application Gateway-routes en taakverdelingen doorgestuurd naar de juiste Azure-app Service.

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

    • Elke HTTP-toepassing.

    • Het leveren van webinhoud.

    • RESTful API's beschikbaar maken.

    • Bedrijfslogica implementeren achter de front-endtoepassing.

    U kunt App Service configureren om automatisch omhoog en uit te schalen. Het maakt App Service geschikt voor het schalen van een host van tenant HTTP-aanvragen op aanvraag.

  6. De services voor gegevenstoegangslagen worden ook onafhankelijk geschaald op basis van belasting. Gegevensservices beheren gegevensmodellen, verbindingsclients 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 de 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 inkapselen. Dit maakt een hoge mate van abstractie en ontkoppeling binnen de code mogelijk. Hiermee kunnen clusters ook afzonderlijk worden uitgeschaald om rekening te houden met een grotere 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 ze niet dezelfde toename ondervinden.

  7. Relationele gegevens buiten het toepassingsframework opslaan en beheren. Dit biedt een single point of data entry voor beide regio's. U kunt replicatie, beschikbaarheid, schaalbaarheid en beveiliging bereiken door gebruik te maken van de kracht van elastische Azure SQL-pools. Richt elke tenant een database in een pool in. Wijs de resources die beschikbaar zijn in de pool toe aan databases op aanvraag wanneer er belasting en aanvragen binnenkomen. Hierdoor worden databasebronnen geoptimaliseerd die beschikbaar zijn voor tenants op basis van uw budget.

Onderdelen

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

Primaire onderdelen

  • Azure Front Door: een regionale load balancer waarmee clientverkeer naar de juiste regio wordt gerouteerd. Er kan een failover naar de tweede regio worden uitgevoerd als er een regionale fout optreedt en het internetgerichte toegangspunt kan worden beveiligd via Azure Web Application Firewall.

  • Microsoft Entra-id: fungeert als de id-provider voor de hele toepassing, waarbij verificatie en end-to-end autorisatie van de aanvraag in de toepassing worden afgedwongen.

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

  • Application Gateway: hiermee wordt verkeer intern in de toepassing gerouteerd en verdeeld over de verschillende services die voldoen aan de behoeften van het clientbedrijf. Azure Front Door verdeelt de belasting over regio's op hoog niveau, maar Application Gateway is een toepassingsgateway die de belasting van afzonderlijke services binnen een groep onder de aandacht brengt. Azure Front Door en Application Gateway combineren om complexe taakverdeling op alle niveaus in een multitenant-oplossing te bieden. Ga naar dit overzicht van Azure-taakverdeling voor meer informatie over opties voor taakverdeling in Azure.

  • App Service: De premier-service van Azure voor webtoepassingen en web-API's. Beveiliging kan worden geïntegreerd met services zoals Microsoft Entra ID en Azure Key Vault. U kunt automatisch schalen configureren. Daarnaast is de hoeveelheid resources die beschikbaar zijn om te schalen flexibel tussen de verschillende App Service-abonnementen waarop de app kan worden uitgevoerd. App Service kan 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): organiseert exemplaren van containerinstallatiekopieën die zijn geïmplementeerd in een cluster. Het beheren van de gegevens van meerdere clients omvat vaak het implementeren van een reeks onderdelen die moeten worden beheerd:

    • Gegevensmodellering

    • Connectiviteit van gegevensbron

    • ETL extraheren, transformeren, laden

    • Import-/exportactiviteiten

    Het ontwikkelen van deze veel kleinere onderdelen als op containers gebaseerde microservices maakt een ideaal scenario voor de implementatie naar een AKS-cluster. Hulpprogramma's voor automatisch schalen, taakverdeling en upgrademogelijkheden zijn ingebouwd in het framework. 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.

  • Elastische Pools van Azure SQL: 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 databasebronnen aan clients te leveren wanneer ze deze nodig hebben. De service vermindert ook het budget en de overhead van het onderhouden van meerdere SQL-servers met grote segmenten ongebruikte rekenresources.

  • Azure Cognitive Search (voorheen bekend als Azure Search): een service die een krachtige indexerings- en query-engine toevoegt aan uw toepassing. Het biedt clients toegang tot sterke 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-tenantstrategie.

  • Azure Cache voor Redis: Past een cachelaag als een service toe op de oplossing, waardoor een in-memory beheerde cache wordt geboden om de latentie te verminderen en de prestaties voor de clients te verbeteren. Met hoge doorvoer kan een groot aantal aanvragen meerdere tenants verwerken die toegang hebben tot het systeem. U kunt de service flexibel omhoog schalen naarmate de belasting van de toepassing toeneemt. Het ondersteunt ook versleuteling-at-rest om tenantgegevens in de cache te beveiligen en te isoleren.

Alternatievenonderdelen

  • Azure Virtual Machine Scale Sets: hiermee kunt u services implementeren in een virtuele-machineomgeving (VM) die naar behoefte wordt geschaald en automatisch groeit. Virtuele-machineschaalsets kunnen goed worden geïntegreerd met een Load Balancer of Application Gateway om de belasting automatisch opnieuw te verdelen naarmate de schaalset groeit. Virtuele-machineschaalsets bieden 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: Implementeer als afzonderlijke toegewezen exemplaren als vervanging voor elastische pools. Het gebruik van Azure SQL Database voegt hogere overhead toe bij het rechtstreeks beheren van het exemplaar en kost meer kosten voor toegewezen resources. Dat gezegd hebbende, het is een acceptabel alternatief wanneer de tenant een toegewezen server vereist. Met name vereist de client mogelijk meer controle over het exemplaar en toegewezen beschikbare resources. Tenants waarvoor een toegewezen SQL Server is vereist, kunnen naast tenants bestaan in een elastische poolconfiguratie. U kunt een laag SQL-databases een van de prijsopties beschikbaar maken voor tenants bij het aanschaffen van licenties voor de SaaS.

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

Scenariodetails

Wanneer u een deel van de softwareoplossing van uw bedrijf identificeert die u kunt unbranden en op de markt kunt brengen voor andere bedrijven, wordt er een volledige nieuwe omzetstroom voor een bedrijf toegevoegd. Het configureren van de oplossing om rekening te houden met de belasting die een aantal tenants brengt, is vaak een lastig obstakel om aan te pakken.

Azure biedt een scala aan services voor het beheren van een softwareoplossing die:

  • Onderhoudt flexibel databases voor alle clients.

  • Hiermee schaalt u de bedrijfs- en logische laag van de oplossing om knelpunten op 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 saaS-oplossing met meerdere tenants die wordt gehost in Azure:

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

  • Implementeer een CMS-systeem (Content Management System) en lever het aan meerdere gebruikers met behulp van deze architectuur.

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Framework voor meer informatie.

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 isoleert de clientgegevens om schendingen en kruisbesmetting te voorkomen. Clients implementeren in een paar 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, waardoor aanvragen worden onderscheiden op basis van deze unieke id's. Het systeem kan alle clientaanvragen afzonderlijk versleutelen door hun sleutels, zodat geen enkele client de gegevens van een andere client kan ontsleutelen. Als u meerdere clients op één rekenstack beheert, kunt u resourcetoewijzing optimaliseren om clients de reactiesnelheid te bieden die ze nodig hebben tegen kosten.

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

Zie Multitenant-oplossingen ontwerpen in Azure voor meer informatie over multitenant-oplossingen.

Betrouwbaarheid

Betrouwbaarheid zorgt ervoor dat uw toepassing kan voldoen aan de toezeggingen die u aan uw klanten hebt gedaan. Zie Overzicht van de betrouwbaarheidspijler voor meer informatie.

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 belasting. Deze architectuur is niet ontworpen voor oplossingen die enkele tenants of een kleine belasting van aanvragen en gegevens verwerken. Het kan het budget van een oplossing die gericht is op één client of een kleinere belasting benadrukken. Het is ook niet nodig om de multiregio-overhead te hebben waarbij hoge wereldwijde beschikbaarheid geen vereiste is, omdat dit onnodige complexiteit en kosten toevoegt.

Beveiliging

Beveiliging biedt garanties tegen opzettelijke aanvallen en misbruik van uw waardevolle gegevens en systemen. Zie Overzicht van de beveiligingspijler voor meer informatie.

Het systeem heeft betrekking op 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, beschermt de SaaS-stack tegen aanvallen aan de rand, voordat het systeem aanvragen naar de toepassing routeert.

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

  • U kunt alle referenties, geheimen en verbindingsreeks s veilig beheren met behulp van 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 vervuild met gevoelige informatie. Het gebruik van geheimen beschermt clientgegevens door ervoor te zorgen dat een inbreuk in code of man-in-the-middle-aanval geen toegang krijgt tot tenantdatabases.

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

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.

Azure-app Service biedt veel prijscategorieën op basis van de verwachte rekenresources die vereist zijn. Voor een saaS met meerdere tenants zijn mogelijkheden voor hoge beschikbaarheid en uitschalen belangrijke onderdelen bij het kiezen van het serviceplan. Als u verwacht veel tenants te hosten, moet u mogelijk een Premium- of geïsoleerde laag kiezen om de rekenresources op te geven die nodig zijn om rekening te houden met het hoge verkeer. De standard-, Premium- en geïsoleerde lagen zijn allemaal toegewezen VM-exemplaren. U kunt de kosten per tijdseenheid berekenen op basis van het aantal VM's van deze laag dat u hebt opgegeven. Ga voor meer informatie naar het overzicht van App Service-prijsplannen.

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

  • De VM's

  • Verbruikte opslag- en netwerkbronnen

  • Kosten rechtstreeks schalen met betrekking tot gebruik

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

De prijzen voor elastische Azure SQL-pools zijn standaard zeer rendabel in een scenario met meerdere tenants. Tenantdatabases in een elastische pool delen de beschikbare resources. Naarmate de vraag in de loop van de tijd tussen tenants verschuift, worden resources ook verplaatst. Azure SQL Elastic Pool biedt de maximaal beschikbare resources voor aangevraagde databases zonder dat er resourceoverhead voor alle databases nodig is. De service houdt kosten laag voor de ontwikkelaar van de SaaS en de tenants. Gebruik de prijscalculator van Azure SQL Database om de prijs en 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 Azure Hybrid Benefit. Bestaande SQL Server-licenties bieden korting op vCore SQL-resources in de cloud. Daarom kunt u in een instantie dat on-premises servers al deel uitmaken van de infrastructuur voor ontwikkelaars, nog meer kosten beheren met behulp van deze kortingen. U kunt uw potentiële besparingen schatten met behulp van de Azure Hybrid Benefit-besparingscalculator.

  • U kunt ook kosten besparen op SQL Server-resources door gereserveerde azure SQL Database-capaciteit aan te schaffen. Het aanschaffen van gereserveerde capaciteit markeert een toezegging van sql Database-gebruik op lange termijn. De termijn is meestal tussen 1 en drie jaar. Retourneert u kortingen op de rekenkosten van de resources in de reservering. U kunt bijvoorbeeld 32 vCores voor algemeen gebruik een jaar reserveren, waardoor de kosten van die 32 vCores voor dat jaar worden verlaagd. Het gebruik van gereserveerde capaciteit voor meerdere tenants voor een SaaS is een sterke indicator die past bij de oplossing en een ideale kostenbesparing in deze workload.

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

De prijzen van Azure Front Door zijn afhankelijk van de hoeveelheid gegevensoverdracht in en uit de service. Voor uitgaande gegevens zijn de prijzen anders op basis van zones. Voor verschillende regio's worden verschillende kosten in rekening gebracht. Als u een prijsverschil tegenkomt, moet u de kosten afzonderlijk schatten. De prijs omvat een aantal routerings- en domeincapaciteit, maar het systeem maakt kosten voorbij de initiële limieten. Voor Azure Web Application Firewall worden kleine extra kosten in rekening gebracht per beleid of regel die wordt toegepast. U vindt de prijsgegevens voor Azure Front Door op de pagina met prijzen van Azure Front Door .

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 rekening gebracht voor elk toegewezen Cognitive Search-exemplaar. Naarmate de lagen toenemen, neemt ook het totale aantal opslag, het aantal indexen en uitschaallimieten toe. Azure Cognitive Search biedt afbeeldingsextractie als een service met hetzelfde tarief voor alle betaalde lagen.

Volgende stappen