När du identifierar en del av företagets programvarulösning som kan vara omärkt och marknadsförs till andra företag läggs en helt ny intäktsström till för ett företag. Att konfigurera lösningen för att ta hänsyn till belastningen som en stor mängd klienter medför är dock ofta ett svårt hinder att hantera. Azure erbjuder en mängd tjänster för att hantera en programvarulösning som:
Underhåller databaser flexibelt för alla klienter.
Skalar lösningens affärs- och logiknivå för att förhindra flaskhalsar på beräkningslagret.
Integrerar tillgänglighet och regional redundans.
Ger säkerhet från början till slut 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 för flera olika tjänster i Azure:
Utveckla en CRM-lösning (Customer Relationship Management) som kunder kan marknadsför 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.
Arkitektur

Ladda ned en SVG för den här arkitekturen.
En uppsättning Azure-tekniker som skyddar och belastningsutjämnar trafiken.
Azure Front Door hanterar några inledande uppgifter:
Bearbeta den första begäran.
Belastningsutjämning mellan regionerna.
SSL(HTTPS)-avslutning och avlastning.
Redundans om det finns ett regionalt avbrott.
Azure DNS hanterar DNS-poster och garanterar routning till rätt Front Door slutpunkt.
Arkitekturen använder Azure Active Directory (Azure AD) som identitetsprovider för autentisering.
När de har dirigerats till lämplig region Application Gateway vägar och lastbalanserare, vilket dirigerar begäranden till lämplig App Service.
För den här arkitekturen är App Service en prioriterad tjänst för:
Alla HTTP-baserade program.
Betjäna webbinnehåll.
Exponera RESTful-API:er.
Implementera affärslogik bakom frontend-programmet.
Du kan konfigurera App Service att skala upp och ut automatiskt. Det gör App Service ett bra sätt att skala en värd med HTTP-drivna klientbegäranden på begäran.
Tjänsterna på dataåtkomstnivå skalas också oberoende baserat på belastningen. 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 arkitektur för mikrotjänster, som har en serie containrar som var och en kapslar in specifika funktioner i klustret. Det möjliggör en hög grad av abstraktion och frikoppling 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.
Lagra och hantera relationsdata utanför programramverket. Om du gör det får du en enda datapunkt för båda regionerna. Replikering, tillgänglighet, skalbarhet och säkerhet kan uppnås genom att utnyttja styrkan hos Elastiska pooler i Azure SQL. Etablera varje klientorganisation en databas i en pool. Allokera de resurser som är tillgängliga i poolen till databaser på begäran när belastning och begäranden kommer in. Den optimerar databasresurserna 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 se listan över alternativa komponenter.
Primära komponenter
Azure Front Door:En regional lastbalanserare som dirigerar klienttrafik till rätt region. Den kan redundans växla över till den andra regionen om regionfel inträffar och det kan skydda den Internetuppriktade startpunktenvia Azure Web Application Firewall .
Azure Active Directory (Azure AD): Fungerar som identitetsprovider för hela programmet och framtvingar autentisering och auktorisering från start till slut av begäran i programmet.
Azure DNS:En värdtjänst i Azure för domännamnsmatchning. I en lösning för flera klienter kommer flera klienter att få åtkomst till lösningen via sina egna enskilda domäner. Använd Azure DNS för att konfigurera och lösa klientbegäranden till rätt programstack.
Application Gateway:Dirigerar och lastbalanserar trafik internt i programmet till de olika tjänster som uppfyller klientens affärsbehov. Även Azure Front Door belastningen balanseras över högnivåregioner, är det Application Gateway som är medveten om belastningen på enskilda tjänster i en grupp. Azure Front Door och Application Gateway tillsammans för att tillhandahålla komplex belastningsutjämning på alla nivåer i en lösning med flera olika tjänster. Mer information om alternativ för belastningsutjämning i Azure finns i den här översikten om Azure-belastningsutjämning.
App Service:Azures främsta tjänst för webbprogram och webbaserade API:er. Säkerhet integreras med tjänster som Azure AD och Azure Key Vault. Du kan konfigurera skalning så att den sker automatiskt. Dessutom är mängden resurser som är tillgängliga för skalning till flexibel mellan de App Service som appen kan köras på. App Service kan också utnyttja integrerade DevOps-funktioner för kontinuerlig integrering och distribution till flera miljöer. Med dessa och andra stödfunktioner på Azure-plattformen kan utvecklare fokusera på utvecklingen av sina program.
Azure Kubernetes Service (AKS): Dirigerar instanser av containeravbildningar som distribueras till ett kluster. Att hantera flera klienters data innebär ofta att implementera en uppsättning komponenter för att hantera:
Datamodellering
Anslutningar för datakälla
Extrahering, transformering, inläsning (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. Inbyggt i ramverket är verktyg för automatisk skalning, belastningsutjämning och uppgradering. AKS integreras väl med en strategi för kontinuerlig integrering/kontinuerlig leverans (CI/CD) med hjälp av tillgängliga DevOps-funktioner och Azure Container Registry.
Azure SQL elastiska pooler:Ger 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 möjlighet att leverera databasresurser till klienter efter behov. Tjänsten minskar också budgeten och omkostnaderna för att underhålla flera SQL-servrar med stora segment 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 utöka och förbättra frågefunktionerna. Azure Cognitive Search kan ta hänsyn till flera klientorganisation med hjälp av en index-per-klient eller tjänst per klient.
Azure Cache for Redis:Tillämpar ett cachelagringslager som en tjänst på lösningen, vilket ger en minnesbaserad hanterad cache för att minska svarstiden och öka klienternas prestanda. Högt dataflöde möjliggör en stor mängd begäranden för att hantera flera klienter som har åtkomst till systemet. Du kan flexibelt skala upp tjänsten när programbelastningen ökar. Den stöder också kryptering i vila för att skydda och isolera cachelagrade klientdata.
Alternativa komponenter
Virtual Machine Scale Sets:Tillåter distribution av tjänster till en VM-miljö som skalar och växer automatiskt efter behov. Virtual Machine Scale Sets integreras väl med en Load Balancer eller Application Gateway för att automatiskt balansera om belastningen när skalningsuppsättningen växer. Virtual Machine Scale Sets 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 en ersättning för elastiska pooler. Med Azure SQL Database högre omkostnader för att hantera instansen direkt och medför mer kostnader för allokerade resurser. Det är dock ett acceptabelt alternativ när klienten 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 klienter i en Elastisk pool konfiguration. Du kan göra en nivå av SQL-databaser till ett av de tillgängliga prisalternativen för klienter när du köper licenser för SaaS.
SQL Server på Virtual Machines:Ett annat alternativ för distribution av SQL databaser. Klientorganisationen kan ha en befintlig IT-infrastruktur och befintliga SQL lokala servrar. 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 datalagret i programmet att rikta alla SQL Database via konfiguration.
Överväganden
Flera innehavare
En lösning för flera entenant ä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 korsförseningar. Distribuera klienter till ett par regionala resursgrupper baserat på deras primära plats. Detta optimerar 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 särskiljer begäranden baserat på dessa unika identifierare. Systemet kan kryptera alla klientbegäranden separat med sina nycklar, så att ingen klient kan dekryptera andra klienters data. Genom att hantera flera klienter i en enda beräkningsstack kan du optimera resursallokeringen för att ge klienterna de svarstider som de behöver till en kostnad.
Du hanterar klientdatabaser på 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 Elastisk pool, isoleras och skyddas av transparent datakryptering (TDE). Du kan konfigurera varje databas att kryptera data med hjälp av en klient hanterad nyckel och dekryptera data just-in-time (JIT). Dekryptering av JIT skyddar klientdata från både utvecklare och andra klienter. Systemet utnyttjar den Elastisk pool att tillhandahålla resurser på begäran till de klienter som tilldelats den, samtidigt som kostnaderna är 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 registrera fler klienter i systemet.
Skalbarhet och tillgänglighet
Den här lösningen är utformad för att ta hänsyn till ett stort antal klienter som använder SaaS. Den 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 hjälper ett fåtal klienter eller en liten belastning av begäranden och data. Det kan belasta budgeten för en lösning som riktar in sig på 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. Det ökar onödig komplexitet och kostnad.
Säkerhet
Systemet hanterar säkerheten från början till slut på varje nivå i programmet:
Azure Front Door har inbyggt HTTPS-stöd för dess domäner. Det innebär att systemet kan kryptera all trafik till SaaS-programmet. Azure Front Door implementerar också Azure Web Application Firewall, vilket skyddar SaaS-stacken från attacker vid gränsen, innan systemet dirigerar begäranden till programmet.
Varje programstack i varje region ligger inom ett Azure-Virtual Network. Systemet begränsar trafik till det virtuella nätverket och tar emot begäranden från Azure Front Door, vilket skyddar alla programtjänster från extern trafik. I den säkra brandväggen kan Application Gateway avsluta SSL och tillhandahålla prestanda för belastningsutjämning och routning i programmet.
Alla autentiseringsuppgifter, hemligheter och anslutningssträngar kan hanteras på ett säkert sätt 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örsedd med känslig information. Genom att använda hemligheter skyddas klientdata genom att säkerställa att ett kodintrång eller en man-i-mitten-attack inte får åtkomst till klientdatabaser.
I det här scenariot kan data för flera klienter finnas sida vid sida på samma databasserver, om inte samma databas. Med TDE och JIT-dekryptering skyddas data i databasen. Systemet krypterar alla data i databasen i vila och dekrypterar dem endast när klientorganisationen 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. Det skyddar klientdata från end-to-end, förhindrar utvecklaren från att ha åtkomst till klientdata, isolerar data mellan klienter och hjälper till att uppfylla efterlevnadskraven för säkerhet och data.
Prissättning
Azure App Service tillhandahåller en mängd prisnivåer baserat på de förväntade beräkningsresurser som krävs. För saaS med flera olika tjänster är hög tillgänglighet och utskalning 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 nivån du har angett. Mer information finns i översikten över App Service prisplaner.
Azure Kubernetes Service en kostnadseffektiv containertjänst. Avgifter för AKS-noder sker bara vid användning, så du debiteras bara för:
De virtuella datorerna
Förbrukade lagrings- och nätverksresurser
Skalningskostnader som är direkt relaterade till användning
Att använda AKS som datanivåtjänst är perfekt om du vill minska kostnaderna. En uppskattning av prissättningen för ett lager med AKS-instanser finns i Kubernetes-tjänstkalkylatorn.
Prissättningen för Azure SQL Elastisk pool mycket kostnadseffektivt i ett scenario med flera kunder. Klientdatabaser i en Elastisk pool delar de tillgängliga resurserna. När efterfrågan skiftar mellan klienter över tid kommer resurserna också att flyttas. Azure SQL Elastisk pool ger maximalt med tillgängliga resurser för efterfrågade databaser utan att det krävs resurskostnader för alla databaser. Tjänsten håller nere kostnaderna för SaaS- och klientutvecklarnas utvecklare. Använd priskalkylatorn Azure SQL Database för att prissätta och fastställa den nivå och mängd resurser som behövs för att betjäna dina klienter och deras data.
Med en prissättningsmodell för virtuell kärna (vCore) får du större flexibilitet vid 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 virtuella kärnor SQL resurser i molnet. Så i en instans när lokala servrar redan är en del av infrastrukturen för utvecklare kan du hantera kostnader ännu mer med hjälp av dessa rabatter. Du kan beräkna dina potentiella besparingar med hjälp Azure Hybrid-förmån kalkylatorn för besparingar.
Du kan också spara pengar på SQL Server genom att köpa Azure SQL Database reserverad kapacitet. Ett köp av reserverad kapacitet markerar ett åtagande om långsiktig SQL Database användning. Termen är vanligtvis mellan ett och tre år. I utbyte får du rabatt på beräkningskostnaderna för resurserna i reservationen. Du kan till exempel göra en reservation på 32 virtuella kärnor för generell användning för ett år, vilket skulle minska 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 perfekt kostnadsbesparing i den här arbetsbelastningen.
Du hittar prisstrukturen för Azure Cache for Redis på Azure Cache for Redis prissättningssidan. Justera cachenivån när som helst mellan en Basic-, Standard- Premium nivå baserat på behov. Högre priser visas för de större cachegränserna och ytterligare funktioner som replikering och haveriberedskap. Azure Cache for Redis även priser för reserverad kapacitet för långsiktiga användningsåtaganden.
Priset 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 priserna beroende på zoner. Olika regioner medför olika kostnader. Om du ser ett pris differentiellt kan du beräkna kostnaden separat. Priset inkluderar viss routnings- och domänkapacitet, men systemet skulle medföra kostnader utöver de ursprungliga gränserna. Azure Web Application Firewall medför en liten extra avgift per princip eller regel som tillämpas. Du hittar prisinformation för Azure Front Door på Azure Front Door prissättningssidan.
Prissättningen för Azure Cognitive Search är ett fullständigt nivåindelat system. En kostnadsfri nivå är tillgänglig för utveckling och testning. Därefter medför varje nivå en kostnad per timme för varje Cognitive Search allokerad instans. När nivåerna ökar ökar även det totala lagringsutrymmet, antalet index och utskalningsgränserna. Azure Cognitive Search tillhandahåller extrahering av bilder som en tjänst till samma pris för alla betalnivåer.
Nästa steg
Objekt för program och tjänstens huvudnamn i Azure Active Directory handlar om att Azure Active Directory att implementera appar för flera olika program.
SaaS-databasens mönster för flera innehavare omfattar implementering av mönster för flera innehavare i SQL.
Att köra ett webbprogram i flera Azure-regioner för hög tillgänglighet är en referens för lösningens krav i flera regioner.
Webbprogram med flera lager som skapats för hög tillgänglighet och haveriberedskap i Azure är ett liknande exempel på ett arbetsbelastningsscenario. Den beskriver många av övervägandena för ett storskaligt program i Azure.
Tenancy in Azure Active Directory handlar också om att använda Azure Active Directory för att implementera appar för flera innehavare.