SaaS med flera klientorganisationer på Azure

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

När du identifierar en del av företagets programvarulösning som du kan avprofilera och marknadsföra till andra företag, lägger den till en helt ny intäktsström för ett företag. Men att konfigurera lösningen för att ta hänsyn till den belastning som en massa klienter medför är ofta ett utmanande hinder att ta itu med. Den här lösningen visar en uppsättning Azure-tekniker som skyddar och balanserar trafiken.

Arkitektur

Diagram som visar en SaaS-arkitektur med flera klientorganisationer som har konfigurerats i Azure i två olika regioner.

Ladda ned en Visio-fil med den här arkitekturen.

Arbetsflöde

En uppsättning Azure-tekniker skyddar och lastbalanserar trafiken.

  1. Microsoft Azure Front Door hanterar några inledande uppgifter:

    • Bearbeta den första begäran

    • Belastningsutjämning i regionerna

    • SSL-avslutning (HTTPS) och avlastning

    • Redundansväxling om det uppstår ett regionalt avbrott

  2. Azure DNS hanterar DNS-poster och säkerställer routning till rätt Azure Front Door-slutpunkt.

  3. Arkitekturen använder Microsoft Entra-ID som identitetsprovider för autentisering.

  4. När de har dirigerats till rätt region dirigerar Application Gateway vägar och belastningsutjämningar, vilket dirigerar begäranden till lämplig Azure App Service.

  5. För den här arkitekturen är användning av App Service den föredragna tjänsten för:

    • Alla HTTP-baserade program.

    • Servering av webbinnehåll.

    • Exponera RESTful-API:er.

    • Implementera affärslogik bakom klientdelsprogrammet.

    Du kan konfigurera App Service för att skala upp och ut automatiskt. Det gör Att App Service passar bra för skalning av en mängd HTTP-drivna klientbegäranden på begäran.

  6. Tjänsterna för dataåtkomstskikt skalas också separat baserat på belastning. Datatjänster hanterar datamodeller, anslutningsklienter och drivrutiner. Tjänsterna tillhandahåller också ett konsekvent datagränssnitt för alla tjänster på högre nivå som vill använda data i programmet. Du kan distribuera och skala dessa datatjänster med hjälp av Azure Kubernetes Service (AKS). Varje AKS-kluster ansvarar för en uppsättning relaterade funktioner i lagret. AKS kan implementera en mikrotjänstarkitektur som innehåller en serie containrar som var och en kapslar in specifika funktioner i klustret. Detta möjliggör en hög grad av abstraktion och avkoppling i koden. Det gör det också möjligt för kluster att skala ut individuellt för att ta hänsyn till ökad belastning från flera klienter. Varje kluster kan skala upp sina resurser om belastningen ökar på klustret. Uppskalningen påverkar inte de andra klustren i resursgruppen så länge de inte har samma ökning.

  7. Lagra och hantera relationsdata utanför programramverket. Detta ger en enda datainmatningspunkt för någon av regionerna. Du kan uppnå replikering, tillgänglighet, skalbarhet och säkerhet genom att utnyttja styrkan i Elastiska Azure SQL-pooler. Etablera varje klientorganisation en databas i en pool. Allokera de resurser som är tillgängliga i poolen till databaser på begäran när inläsning och begäranden kommer in. Detta optimerar databasresurser som är tillgängliga för klienter mot din budget.

Komponenter

De primära komponenterna är de föreslagna komponenterna för arkitekturen i den här lösningen. Om någon av de primära komponenterna inte passar din arkitektur kan du läsa listan över alternativa komponenter.

Primära komponenter

  • Azure Front Door: En regional lastbalanserare som dirigerar klienttrafiken till rätt region. Den kan redundansväxla till den andra regionen om ett regionalt fel inträffar och den kan skydda den Internetuppkopplade startpunkten via Azure Web Application Firewall.

  • Microsoft Entra-ID: Fungerar som identitetsprovider för hela programmet och framtvingar autentisering och auktorisering från slutpunkt till slutpunkt för begäran i programmet.

  • Azure DNS: En värdtjänst i Azure för domännamnsmatchning. I en lösning med flera klienter får flera klienter åtkomst till lösningen via sina egna enskilda domäner. Använd Azure DNS för att konfigurera och matcha klientbegäranden till rätt programstack.

  • Application Gateway: Dirigerar och belastningsutjämningar trafik internt i programmet till de olika tjänster som uppfyller klientens affärsbehov. Medan Azure Front Door balanserar belastningen mellan regioner på hög nivå är det Application Gateway som har en medvetenhet om belastningen på enskilda tjänster i en grupp. Azure Front Door och Application Gateway kombinerar för att tillhandahålla komplex belastningsutjämning på alla nivåer i en lösning med flera klientorganisationer. Mer information om alternativ för belastningsutjämning i Azure finns i den här översikten över Azures belastningsutjämning.

  • App Service: Azures främsta tjänst för webbprogram och webbaserade API:er. Säkerhet integreras med tjänster som Microsoft Entra ID och Azure Key Vault. Du kan konfigurera automatisk skalning. Dessutom är mängden resurser som är tillgängliga att skala till flexibel mellan de olika App Service-planer som appen kan köras på. App Service kan också använda integrerade DevOps-funktioner för kontinuerlig integrering och distribution till flera miljöer. Dessa och andra stödfunktioner i Azure-plattformen gör det möjligt för utvecklare att fokusera på utvecklingen av sina program.

  • Azure Kubernetes Service (AKS): Dirigerar instanser av containeravbildningar som distribuerats till ett kluster. Att hantera flera klienters data innebär ofta att implementera en uppsättning komponenter som ska hanteras:

    • Datamodellering

    • Anslutningar för datakälla

    • Extrahera, transformera, läsa in (ETL)

    • Importera/exportera aktiviteter

    Att utveckla dessa många mindre komponenter som containerbaserade mikrotjänster skapar ett idealiskt scenario för distributionen till ett AKS-kluster. Verktyg för automatisk skalning, belastningsutjämning och uppgradering är inbyggda i ramverket. AKS integreras väl med en ci/CD-strategi (kontinuerlig integrering/kontinuerlig leverans) med hjälp av tillgängliga DevOps-funktioner och Azure Container Registry.

  • Elastiska Pooler i Azure SQL: Tillhandahåller en lösning för att hantera en uppsättning databaser flexibelt med en pool med resurser. Tjänsten allokerar resurser på begäran till databaserna. Det ger utvecklaren av en SaaS-arkitektur med flera klienter kraften att leverera databasresurser till klienter när de behöver den. Tjänsten minskar också budgeten och kostnaderna för att underhålla flera SQL-servrar med stora delar av oanvända beräkningsresurser.

  • Azure Cognitive Search (kallades tidigare Azure Search): En tjänst som lägger till en kraftfull indexerings- och frågemotor i ditt program. Det ger klienter åtkomst till starka frågefunktioner. De kan också använda Azures AI-funktioner för att berika och förbättra frågefunktionerna. Azure Cognitive Search kan ta hänsyn till flera klientorganisationer med hjälp av en strategi för index per klientorganisation eller tjänst per klientorganisation.

  • Azure Cache for Redis: Tillämpar ett cachelagringslager som en tjänst på lösningen, vilket ger en minnesintern hanterad cache för att minska svarstiden och öka prestandan för klienterna. Med högt dataflöde kan en stor mängd begäranden hantera flera klienter som har åtkomst till systemet. Du kan skala upp tjänsten flexibelt när programbelastningen ökar. Den stöder även kryptering i vila för att skydda och isolera cachelagrade klientdata.

Alternativa komponenter

  • Skalningsuppsättningar för virtuella Azure-datorer: Tillåter distribution av tjänster till en virtuell datormiljö (VM) som skalar och växer automatiskt efter behov. Vm-skalningsuppsättningar integreras väl med en lastbalanserare eller Application Gateway för att automatiskt balansera om belastningen när skalningsuppsättningen växer. Vm-skalningsuppsättningar ger den skalbarhet som den här lösningen kräver. I många fall är det dock onödigt att hantera den fullständiga VM-miljön, och vi kan skjuta upp den nivån av stacken till App Service eller AKS.

  • Azure SQL Database: Implementera som enskilda dedikerade instanser som ersättning för elastiska pooler. Att använda Azure SQL Database ger högre omkostnader för att hantera instansen direkt och medför mer kostnader för allokerade resurser. Som sagt, det är ett acceptabelt alternativ när klientorganisationen kräver en dedikerad server. I synnerhet kan klienten kräva mer kontroll över instansen och dedikerade tillgängliga resurser. Klienter som kräver en dedikerad SQL Server kan finnas sida vid sida med klientorganisationer i en elastisk poolkonfiguration. Du kan göra en nivå av SQL-databaser till ett av prisalternativen för klienter när du köper licenser för SaaS.

  • SQL Server på virtuella datorer: Ett annat alternativ för distribution av SQL-databaser. Klientorganisationen kan ha befintlig IT-infrastruktur och befintliga SQL-servrar lokalt. I så fall kanske klientorganisationen vill använda sina aktuella licenser, antingen som en fullständig migrering eller i ett hybridscenario. Den frikopplade typen av SaaS gör det möjligt för programmets dataskikt att rikta in sig på valfri SQL Database via konfiguration.

Information om scenario

När du identifierar en del av företagets programvarulösning som du kan avprofilera och marknadsföra till andra företag, lägger den till en helt ny intäktsström för ett företag. Men att konfigurera lösningen för att ta hänsyn till den belastning som en massa klienter medför är ofta ett utmanande hinder att ta itu med.

Azure erbjuder en rad tjänster för att hantera en programvarulösning som:

  • Hanterar flexibelt databaser för alla klienter.

  • Skalar affärs- och logiknivån för lösningen för att förhindra flaskhalsar på beräkningslagret.

  • Integrerar tillgänglighet och regional redundans.

  • Ger säkerhet från slutpunkt till slutpunkt på alla nivåer i lösningen.

Potentiella användningsfall

Dessa användningsfall har designmönster som kan dra nytta av en SaaS-lösning med flera klientorganisationer i Azure:

  • Utveckla en CRM-lösning (Customer Relationship Management) som kunderna kan marknadsföra och sälja till kunder.

  • Implementera ett CMS-system (Content Management System) och leverera det till flera användare med hjälp av den här arkitekturen.

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

Flera klientorganisationer

En lösning för flera klienter är det viktigaste i den här lösningen. Lösningen hanterar ett antal klienter samtidigt. Den allokerar också tillräckligt med resurser för att bearbeta alla klientbegäranden effektivt. När begäranden bearbetas skyddar lösningen trafik från globala slutpunkter och isolerar klientdata för att förhindra överträdelser och korskontaminering. Distribuera klienter till ett par regionala resursgrupper baserat på deras primära plats. På så sätt optimeras regional tillgänglighet.

Du kan distribuera många klienter till en enda beräkningsgrupp eftersom systemet isolerar begäranden baserat på autentisering och klientnycklar, vilket skiljer begäranden baserat på dessa unika identifierare. Systemet kan kryptera alla klientbegäranden separat med sina nycklar så att ingen klient kan dekryptera någon annan klients data. Genom att hantera flera klienter på en enda beräkningsstack kan du optimera resursallokering för att ge klienterna den svarstid de behöver till en kostnad.

Du hanterar klientdatabaser på ett liknande sätt utanför beräkningsstacken eftersom en klientbegäran kan komma från någon av de regionala stackarna. Många klientdatabaser kan finnas på samma elastiska pool, isolerade och skyddade av transparent datakryptering (TDE). Du kan konfigurera varje databas för att kryptera data med hjälp av en klienthanterad nyckel och dekryptera data precis i tid (JIT). Dekryptering av JIT skyddar klientdata från både utvecklare och andra klienter. Systemet utnyttjar den elastiska poolen för att tillhandahålla resurser på begäran till de klienter som tilldelats den samtidigt som kostnaderna hålls låga för dig. Du kan tilldela replikeringsprinciper till varje elastisk pool för att tillhandahålla säkerhetskopiering och redundans för klientdata. Ta fler elastiska pooler online när du registrerar fler klienter i systemet.

Mer information om lösningar för flera klientorganisationer finns i Arkitektlösningar för flera klientorganisationer i Azure.

Tillförlitlighet

Tillförlitlighet säkerställer att ditt program kan uppfylla de åtaganden du gör gentemot dina kunder. Mer information finns i Översikt över grundpelare för tillförlitlighet."

Skalbarhet och tillgänglighet

Den här lösningen är utformad för att ta hänsyn till ett stort antal klienter med hjälp av SaaS. Det drar nytta av det stora antalet skalbara komponenter och tjänster för att växa baserat på belastning. Den här arkitekturen är inte utformad för lösningar som betjänar några klienter, eller en liten belastning av begäranden och data. Det kan betona budgeten för en lösning som riktar sig till en enskild klient eller mindre belastning. Det är också onödigt att ha omkostnaderna för flera regioner där hög global tillgänglighet inte är ett krav, eftersom det ger onödig komplexitet och kostnad.

Säkerhet

Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.

Systemet hanterar säkerhet från slutpunkt till slutpunkt på varje nivå i programmet:

  • Azure Front Door har inbyggt HTTPS-stöd för sina domäner. Det innebär att systemet kan kryptera all trafik till SaaS-programmet. Azure Front Door implementerar även Azure Web Application Firewall och skyddar SaaS-stacken från attacker vid gränsen innan systemet dirigerar begäranden till programmet.

  • Varje programstack i varje region ligger i ett virtuellt Azure-nätverk. Systemet begränsar trafik till det virtuella nätverket som tar emot begäranden från Azure Front Door, vilket skyddar alla programtjänster från extern trafik. Väl inne i den säkra brandväggen kan Application Gateway avsluta SSL och tillhandahålla högpresterande belastningsutjämning och routning i programmet.

  • Du kan hantera alla autentiseringsuppgifter, hemligheter och anslutningssträng på ett säkert sätt med hjälp av Azure Key Vault. Genom att hantera känsliga data som hemligheter kan utvecklare mata in autentiseringsuppgifter i programmet vid tidpunkten för distributionen. Om du gör det ser du till att koden inte är förorenad med känslig information. Att använda hemligheter skyddar klientdata genom att säkerställa att ett intrång i kod eller man-in-the-middle-angrepp inte får åtkomst till klientdatabaser.

  • I det här scenariot kan data för flera klientorganisationer finnas sida vid sida på samma databasserver, om inte samma databas. Om du använder TDE- och JIT-dekryptering skyddas data i databasen. Systemet krypterar alla data i databasen i vila och dekrypterar dem bara när klienten begär det. Klienter kan ange sina egna nycklar och du kan lagra alla klientnycklar i Azure Key Vault för att hantera kryptering för flera klienter. Den skyddar klientdata från slutpunkt till slutpunkt, förhindrar att utvecklaren har åtkomst till klientdata, isolerar data mellan klienter och hjälper till att uppfylla efterlevnadskraven för säkerhet och data.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

Azure App Service tillhandahåller många prisnivåer baserat på de förväntade beräkningsresurser som krävs. För en SaaS med flera klientorganisationer är hög tillgänglighet och utskalningsfunktioner viktiga komponenter i valet av tjänstplan. Om du förväntar dig att vara värd för många klienter kan det vara nödvändigt att välja en premium- eller isolerad nivå för att tillhandahålla de beräkningsresurser som krävs för att ta hänsyn till den höga trafiken. Standard-, premium- och isolerade nivåer är alla dedikerade VM-instanser. Du kan beräkna kostnaden per tidsenhet med hur många virtuella datorer på den aktuella nivån som du har angett. Mer information finns i översikten över App Service-prisplaner.

Azure Kubernetes Service tillhandahåller en kostnadseffektiv containertjänst. Avgifter för AKS-noder sker endast vid användning, så du debiteras endast för:

  • De virtuella datorerna

  • Förbrukade lagrings- och nätverksresurser

  • Skalningskostnad som är direkt relaterad till användning

Att använda AKS som datanivåtjänst är perfekt om du vill minska kostnaderna. En uppskattning av hur du prissätter ett lager aks-instanser finns i Kubernetes-tjänstkalkylatorn.

Designen är att prissättningen för Azure SQL Elastic Pool är mycket kostnadseffektiv i ett scenario med flera klientorganisationer. Klientdatabaser i en elastisk pool delar de tillgängliga resurserna. När efterfrågan skiftar mellan klientorganisationer över tid kommer även resurserna att skifta. Azure SQL Elastic Pool ger maximalt antal tillgängliga resurser till databaser som efterfrågas utan att det behövs några resurskostnader för alla databaser. Tjänsten håller kostnaden låg för utvecklaren av SaaS och klientorganisationen. Använd priskalkylatorn för Azure SQL Database för att prissätta och fastställa nivån och mängden resurser som behövs för att betjäna dina klienter och deras data.

  • Med hjälp av en prismodell för virtuell kärna (vCore) får du större flexibilitet när det gäller skalning för att uppfylla nödvändiga resurser. Du kan också dra nytta av Azure Hybrid-förmån. Befintliga SQL Server-licenser ger rabatt till SQL-resurser med virtuella kärnor i molnet. I en instans när lokala servrar redan är en del av utvecklarinfrastrukturen kan du därför hantera kostnaderna ännu mer med hjälp av dessa rabatter. Du kan uppskatta dina potentiella besparingar med hjälp av kalkylatorn för Azure Hybrid-förmån besparingar.

  • Du kan också spara kostnader på SQL Server-resurser genom att köpa reserverad Azure SQL Database-kapacitet. Att köpa reserverad kapacitet markerar ett åtagande för långsiktig SQL Database-användning. Termen är vanligtvis mellan ett till tre år. I gengäld får du rabatter på beräkningskostnaderna för resurserna i reservationen. Du kan till exempel reservera 32 virtuella kärnor för generell användning under ett år, vilket minskar kostnaden för dessa 32 virtuella kärnor för det året. Att ha flera klienter som köper licenser för en SaaS är en stark indikator på att användningen av reserverad kapacitet passar lösningen och en idealisk kostnadsbesparare i den här arbetsbelastningen.

Du hittar prisstrukturen för Azure Cache for Redis på prissidan för Azure Cache for Redis. Justera cachenivån när som helst mellan nivån Basic, Standard och Premium baserat på behovet. Du ser högre priser på de större cachegränserna och ytterligare funktioner som replikering och haveriberedskap. Azure Cache for Redis erbjuder även priser för reserverad kapacitet för långsiktiga användningsåtaganden.

Prissättningen för Azure Front Door beror på mängden dataöverföring in och ut ur tjänsten. För utgående data skiljer sig prissättningen beroende på zoner. Olika regioner medför olika kostnader. Om du stöter på en prisskillnad beräknar du kostnaden separat. Priset inkluderar viss routnings- och domänkapacitet, men systemet medför kostnader som överskrider de ursprungliga gränserna. Azure Web Application Firewall medför en liten extra avgift per princip eller regel som tillämpas. Du hittar prisinformationen för Azure Front Door på prissidan för Azure Front Door.

Prissättningen för Azure Cognitive Search är ett fullständigt nivåindelat system. Det finns en kostnadsfri nivå för utveckling och testning. Därefter medför varje nivå en kostnad per timme för varje cognitive search-instans som allokeras. I takt med att nivåerna ökar ökar även den totala lagringen, antalet index och utskalningsgränserna. Azure Cognitive Search tillhandahåller bildextrahering som en tjänst till samma pris till alla betalda nivåer.

Nästa steg