SaaS pro více tenantů v Azure

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

Když identifikujete část softwarového řešení vaší firmy, kterou můžete odznačovat a nabízet jiným firmám, přidá pro společnost celý nový datový proud výnosů. Konfigurace řešení tak, aby zohlednila zatížení, které přináší slew tenantů, je často náročnou překážkou pro řešení. Toto řešení prochází sadou technologií Azure, které zajišťují a vyrovnává provoz.

Architektura

Diagram showing a multitenant SaaS architecture set up in Azure in two different regions.

Stáhněte si soubor aplikace Visio s touto architekturou.

Workflow

Sada technologií Azure zajišťuje zabezpečení provozu a vyrovnávání zatížení.

  1. Microsoft Azure Front Door zpracovává několik počátečních úloh:

    • Zpracování počátečního požadavku

    • Vyrovnávání zatížení napříč oblastmi

    • Ukončení protokolu SSL (HTTPS) a přesměrování zpracování

    • Převzetí služeb při selhání, pokud dojde k výpadku oblasti

  2. Azure DNS spravuje záznamy DNS a zajišťuje směrování do správného koncového bodu služby Azure Front Door.

  3. Architektura používá k ověřování ID Microsoft Entra JAKO zprostředkovatele identity.

  4. Po směrování do příslušné oblasti služba Application Gateway směruje a vyrovnává zatížení a směruje požadavky na příslušnou službu Aplikace Azure Service.

  5. Pro tuto architekturu je použití služby App Service upřednostňovanou službou pro:

    • Libovolná aplikace založená na protokolu HTTP.

    • Obsluha webového obsahu

    • Zveřejnění rozhraní RESTful API

    • Implementace obchodní logiky za front-endovou aplikací

    Službu App Service můžete nakonfigurovat tak, aby automaticky vertikálně navyšila a navyšila kapacitu. Služba App Service je vhodná pro škálování hostitele požadavků řízených protokolem HTTP tenanta na vyžádání.

  6. Služby vrstvy přístupu k datům se také nezávisle škálují na základě zatížení. Datové služby spravují datové modely, klienty připojení a ovladače. Služby také poskytují konzistentní datové rozhraní pro všechny služby vyšší úrovně, které chtějí využívat data v aplikaci. Tyto datové služby můžete nasadit a škálovat pomocí služby Azure Kubernetes Service (AKS). Každý cluster AKS zodpovídá za sadu souvisejících funkcí ve vrstvě. AKS může implementovat architekturu mikroslužeb, která obsahuje řadu kontejnerů, které všechny zapouzdřují konkrétní funkce v clusteru. To umožňuje vysoký stupeň abstrakce a de-párování v kódu. Umožňuje také, aby clustery škálovat jednotlivě, aby zohlednily zvýšené zatížení z více tenantů. Pokud se zatížení clusteru zvýší, může každý cluster vertikálně navýšit kapacitu svých prostředků. Vertikální navýšení kapacity nemá vliv na ostatní clustery ve skupině prostředků, pokud u nich nedochází ke stejnému zvýšení.

  7. Ukládejte a spravujte relační data mimo aplikační architekturu. Tím zajistíte jeden bod zadávání dat pro určitou oblast. K zajištění replikace, dostupnosti, škálovatelnosti a zabezpečení můžete využít sílu elastických fondů Azure SQL. Zřiďte každého tenanta databázi ve fondu. Přidělte prostředky dostupné ve fondu databázím na vyžádání podle zatížení a požadavků. Tím se optimalizují prostředky databáze dostupné pro tenanty podle rozpočtu.

Součásti

Primární komponenty jsou navrhované komponenty pro architekturu v tomto řešení. Pokud některá z primárních komponent nevyhovuje vaší architektuře, podívejte se na seznam alternativních komponent.

Primární komponenty

  • Azure Front Door: Regionální nástroj pro vyrovnávání zatížení, který směruje provoz klientů do správné oblasti. Pokud dojde k selhání oblasti, může převzít služby při selhání druhé oblasti a může zabezpečit vstupní bod směřující k internetu přes Bránu firewall webových aplikací Azure.

  • Microsoft Entra ID: Funguje jako zprostředkovatel identity pro celou aplikaci, vynucuje ověřování a kompletní autorizaci požadavku v aplikaci.

  • Azure DNS: Hostitelská služba v Azure pro překlad názvů domén. Ve víceklientských řešeních má více klientů přístup k řešení prostřednictvím vlastních jednotlivých domén. Pomocí Azure DNS nakonfigurujte a přeložte požadavky klientů na správný zásobník aplikací.

  • Application Gateway: Směruje a vyrovnává zatížení provozu interně v aplikaci do různých služeb, které vyhovují obchodním potřebám klienta. I když Služba Azure Front Door vyrovnává zatížení napříč oblastmi vysoké úrovně, je to Služba Application Gateway, která má povědomí o zatížení jednotlivých služeb v rámci skupiny. Azure Front Door a Application Gateway kombinují komplexní vyrovnávání zatížení na všech úrovních ve víceklientských řešeních. Další informace o možnostech vyrovnávání zatížení v Azure najdete v tomto přehledu o vyrovnávání zatížení Azure.

  • App Service: První služba Azure pro webové aplikace a webová rozhraní API. Zabezpečení se integruje se službami, jako je Microsoft Entra ID a Azure Key Vault. Můžete nakonfigurovat automatické škálování. Množství prostředků, které je možné škálovat, je také flexibilní mezi různými plány služby App Service, na kterých může aplikace běžet. App Service může také využívat integrované funkce DevOps pro kontinuální integraci a nasazování do více prostředí. Tyto a další podpůrné funkce platformy Azure umožňují vývojářům zaměřit se na vývoj aplikací.

  • Azure Kubernetes Service (AKS): Orchestruje instance imagí kontejnerů nasazených do clusteru. Správa dat více klientů často zahrnuje implementaci sady komponent pro správu:

    • Modelování dat

    • Připojení ke zdroji dat

    • Extrakce, transformace, načítání (ETL)

    • Aktivity importu a exportu

    Vývoj těchto mnoha menších komponent jako mikroslužeb založených na kontejnerech vytváří ideální scénář pro nasazení do clusteru AKS. Do architektury jsou integrované nástroje pro automatické škálování, vyrovnávání zatížení a upgrade. AKS se dobře integruje se strategií kontinuální integrace a průběžného doručování (CI/CD) s využitím dostupných funkcí DevOps a služby Azure Container Registry.

  • Elastické fondy Azure SQL: Poskytuje řešení pro flexibilní správu sady databází s fondem prostředků. Služba přidělí prostředky na vyžádání databázím. Poskytuje vývojářům víceklientskou architekturu SaaS výkon k doručování databázových prostředků klientům podle potřeby. Služba také snižuje rozpočet a režii při údržbě více SQL Serverů s velkými bloky nepoužívaných výpočetních prostředků.

  • Azure Cognitive Search (dříve Označované jako Azure Search): Služba, která do vaší aplikace přidá výkonný indexovací a dotazovací modul. Poskytuje klientům přístup k funkcím silného dotazu. Můžou také využít funkce AI Azure k obohacení a vylepšení funkcí dotazů. Azure Cognitive Search může využívat víceklientské prostředí pomocí strategie indexu na tenanta nebo služby na tenanta.

  • Azure Cache for Redis: Použije vrstvu ukládání do mezipaměti jako službu pro řešení, která poskytuje mezipaměť spravovanou v paměti, aby se snížila latence a zvýšil výkon klientů. Vysoká propustnost umožňuje velké množství požadavků pro zpracování více tenantů přistupujících k systému. S rostoucím zatížením aplikace můžete službu pružně vertikálně navýšit. Podporuje také šifrování neaktivních uložených dat, které chrání a izolují data tenanta v mezipaměti.

Alternativní komponenty

  • Škálovací sady virtuálních počítačů Azure: Umožňuje nasazení služeb do prostředí virtuálního počítače, které se škáluje a roste automaticky podle potřeby. Škálovací sady virtuálních počítačů se dobře integrují s nástrojem pro vyrovnávání zatížení nebo službou Application Gateway a automaticky vyrovnává zatížení s rostoucí škálovací sadou. Škálovací sady virtuálních počítačů poskytují škálovatelnost, která toto řešení vyžaduje. V mnoha případech ale není nutné spravovat celé prostředí virtuálního počítače a tuto úroveň zásobníku můžeme odložit do služby App Service nebo AKS.

  • Azure SQL Database: Implementujte jako jednotlivé vyhrazené instance jako náhradu pro elastické fondy. Použití Služby Azure SQL Database zvyšuje režii při správě instance přímo a za přidělené prostředky se účtují vyšší náklady. To znamená, že je to přijatelná alternativa, pokud tenant vyžaduje vyhrazený server. Konkrétně může klient vyžadovat větší kontrolu nad instancí a vyhrazenými dostupnými prostředky. Tenanti, kteří vyžadují vyhrazený SQL Server, mohou existovat vedle tenantů v konfiguraci elastického fondu. Úroveň databází SQL můžete nastavit jako jednu z cenových možností dostupných pro tenanty při nákupu licencí pro SaaS.

  • SQL Server na virtuálních počítačích: Další možnost pro nasazení databází SQL Tenant může mít předem existující infrastrukturu IT a existující SQL Servery v místním prostředí. V takovém případě může tenant chtít použít své aktuální licence, a to buď jako úplnou migraci, nebo v hybridním scénáři. Oddělená povaha SaaS umožňuje datové vrstvě aplikace cílit na jakoukoli databázi SQL prostřednictvím konfigurace.

Podrobnosti scénáře

Když identifikujete část softwarového řešení vaší firmy, kterou můžete odznačovat a nabízet jiným firmám, přidá pro společnost celý nový datový proud výnosů. Konfigurace řešení tak, aby zohlednila zatížení, které přináší slew tenantů, je často náročnou překážkou pro řešení.

Azure nabízí celou řadu služeb pro správu softwarového řešení, které:

  • Flexibilně udržuje databáze pro všechny klienty.

  • Škáluje obchodní a logickou úroveň řešení, aby se zabránilo kritickým bodům ve výpočetní vrstvě.

  • Integruje dostupnost a regionální převzetí služeb při selhání.

  • Poskytuje komplexní zabezpečení na všech úrovních řešení.

Potenciální případy použití

Tyto případy použití mají vzory návrhu, které můžou využívat víceklientské řešení SaaS hostované v Azure:

  • Vyvíjejte řešení správy vztahů se zákazníky (CRM), které můžou klienti nabízet a prodávat zákazníkům.

  • Implementujte systém správy obsahu (CMS) a doručujte ho více uživatelům pomocí této architektury.

Požadavky

Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.

Víceklientská architektura

Klíčovým aspektem tohoto řešení je víceklientských řešení. Řešení zpracovává řadu klientů současně. Také přiděluje dostatek prostředků pro efektivní zpracování všech požadavků klientů. Při zpracování požadavků řešení zabezpečuje provoz z globálních koncových bodů a izoluje klientská data, aby se zabránilo narušení a křížové kontaminaci. Nasaďte klienty do dvojice regionálních skupin prostředků na základě jejich primárního umístění. Tím se optimalizuje regionální dostupnost.

Do jedné výpočetní skupiny můžete nasadit mnoho klientů, protože systém izoluje požadavky na základě ověřování a klientských klíčů, což rozlišuje požadavky na základě těchto jedinečných identifikátorů. Systém může šifrovat všechny požadavky klientů zvlášť svými klíči, aby žádný klient nemohl dešifrovat data jiných klientů. Správa více klientů v jednom výpočetním zásobníku vám umožňuje optimalizovat přidělení prostředků, abyste klientům poskytli rychlost odezvy, kterou potřebují za cenu.

Klientské databáze spravujete podobným způsobem mimo výpočetní zásobník, protože požadavek klienta by mohl přijít z některého z regionálních zásobníků. Mnoho klientských databází může existovat ve stejném elastickém fondu, izolovaném a zabezpečeném transparentním šifrováním dat ( TDE). Každou databázi můžete nakonfigurovat tak, aby šifruje data pomocí klíče spravovaného klientem a dešifruje data za běhu (JIT). Dešifrování JIT chrání klientská data před vývojáři i jinými klienty. Systém využívá elastický fond k poskytování prostředků na vyžádání klientům, kteří k němu přiřazují, a zároveň udržuje nízké náklady za vás. Zásady replikace můžete přiřadit ke každému elastickému fondu, abyste zajistili zálohování a převzetí služeb při selhání klientských dat. Při online nasazení více klientů do systému přineste více elastických fondů.

Další informace o víceklientských řešeních najdete v tématu Návrh víceklientských řešení v Azure.

Spolehlivost

Spolehlivost zajišťuje, že vaše aplikace může splňovat závazky, které uděláte pro vaše zákazníky. Další informace najdete v tématu Přehled pilíře spolehlivosti."

Škálovatelnost a dostupnost

Toto řešení je navržené tak, aby používalo velký počet tenantů využívajících SaaS. Využívá velký počet škálovatelných komponent a služeb k růstu na základě zatížení. Tato architektura není určená pro řešení, která obsluhují několik tenantů nebo malé zatížení požadavků a dat. Může zdůraznit rozpočet řešení, které cílí na jednoho klienta nebo menší zatížení. Je také zbytečné mít režijní náklady ve více oblastech, kde vysoká globální dostupnost není požadavkem, protože to zvyšuje zbytečnou složitost a náklady.

Zabezpečení

Zabezpečení poskytuje záruky proti záměrným útokům a zneužití cenných dat a systémů. Další informace najdete v tématu Přehled pilíře zabezpečení.

Systém řeší zabezpečení od začátku do konce na každé úrovni aplikace:

  • Azure Front Door poskytuje integrovanou podporu HTTPS pro své domény. To znamená, že systém může šifrovat veškerý provoz do aplikace SaaS. Azure Front Door také implementuje bránu firewall webových aplikací Azure, která chrání zásobník SaaS před útoky na hraničních zařízeních před tím, než systém směruje požadavky do aplikace.

  • Každý zásobník aplikací v každé oblasti se nachází ve službě Azure Virtual Network. Systém omezuje provoz do virtuální sítě, který přijímá požadavky ze služby Azure Front Door a chrání všechny aplikační služby před externím provozem. Jakmile je služba Application Gateway uvnitř zabezpečené brány firewall, může ukončit protokol SSL a poskytovat výkonné vyrovnávání zatížení a směrování v rámci aplikace.

  • Všechny přihlašovací údaje, tajné kódy a připojovací řetězec můžete bezpečně spravovat pomocí služby Azure Key Vault. Když tato citlivá data spravujete jako tajné kódy, můžou vývojáři v době nasazení vkládat přihlašovací údaje do aplikace. Tím zajistíte, aby kód nebyl znečisťován citlivými informacemi. Použití tajných kódů chrání klientská data tím, že zajistí, že porušení kódu nebo útoku man-in-the-middle nezíská přístup k databázím tenantů.

  • V tomto scénáři můžou existovat data více tenantů vedle sebe na stejném databázovém serveru, pokud ne stejná databáze. Použití transparentního šifrování dat a dešifrování JIT chrání data v databázi. Systém šifruje všechna neaktivní uložená data v databázi a dešifruje je pouze v případě, že je požaduje tenant. Klienti můžou poskytovat vlastní klíče a všechny klientské klíče můžete uložit do služby Azure Key Vault a spravovat šifrování pro více tenantů. Chrání klientská data až do konce, brání vývojáři v přístupu k klientským datům, izoluje data mezi tenanty a pomáhá splňovat požadavky na dodržování předpisů pro zabezpečení a data.

Optimalizace nákladů

Optimalizace nákladů se zabývá způsoby, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.

služba Aplikace Azure poskytuje mnoho cenových úrovní na základě očekávaných požadovaných výpočetních prostředků. Pro víceklientské saaS jsou funkce vysoké dostupnosti a horizontálního navýšení kapacity klíčovými komponentami při výběru plánu služeb. Pokud očekáváte, že budete hostovat mnoho tenantů, může být volba úrovně Premium nebo izolované úrovně nezbytná k poskytnutí výpočetních prostředků potřebných k zajištění vysokého provozu. Všechny vyhrazené instance virtuálních počítačů jsou úrovně Standard, Premium a izolované. Náklady na jednotku času můžete vypočítat podle toho, kolik virtuálních počítačů uvedené úrovně jste určili. Další informace najdete v přehledu cenových plánů služby App Service.

Azure Kubernetes Service poskytuje nákladově efektivní službu kontejneru. Poplatky za uzly AKS se účtují jenom při využití, takže se vám účtují jenom poplatky:

  • Virtuální počítače

  • Spotřebované úložiště a síťové prostředky

  • Škálování nákladů přímo souvisejících s využitím

Použití AKS jako služby datové vrstvy je ideální, pokud chcete snížit náklady. Odhad cen ve vrstvě instancí AKS najdete v kalkulačce služby Kubernetes.

Ceny elastického fondu Azure SQL jsou záměrně vysoce nákladově efektivní ve scénáři s více tenanty. Databáze tenantů v elastickém fondu budou sdílet dostupné prostředky. S tím, jak se poptávka mezi tenanty v průběhu času přesouvá, se prostředky také posunou. Elastický fond Azure SQL poskytuje maximální dostupné prostředky pro požadované databáze bez nutnosti režijních nákladů na prostředky pro všechny databáze. Služba udržuje nízké náklady pro vývojáře SaaS a tenantů. Cenovou kalkulačku služby Azure SQL Database můžete využít k cenovým cenám a určení úrovně a množství prostředků potřebných k poskytování tenantů a jejich dat.

  • Použití cenového modelu virtuálního jádra (virtuálních jader) poskytuje větší flexibilitu při škálování, aby vyhovovalo požadovaným prostředkům. Můžete také využít Zvýhodněné hybridní využití Azure. Stávající licence SQL Serveru poskytují slevu na prostředky SQL s virtuálními jádry v cloudu. Proto v případě, že místní servery jsou již součástí infrastruktury pro vývojáře, můžete náklady spravovat ještě více pomocí těchto slev. Potenciální úspory můžete odhadnout pomocí kalkulačky Zvýhodněné hybridní využití Azure úspor.

  • Nákupem rezervované kapacity služby Azure SQL Database můžete také ušetřit náklady na prostředky SQL Serveru. Nákup rezervované kapacity označuje závazek dlouhodobého využití služby SQL Database. Termín je obvykle mezi 1 až třemi roky. Zpět získáte slevy na náklady na výpočetní prostředky v rezervaci. Můžete si například rezervovat 32 virtuálních jader pro obecné účely na rok, což snižuje náklady na těchto 32 virtuálních jader pro daný rok. Mít více tenantů, kteří si kupují licence pro SaaS, je silným indikátorem, že použití rezervované kapacity odpovídá řešení a ideální úspora nákladů v této úloze.

Cenovou strukturu služby Azure Cache for Redis najdete na stránce s cenami služby Azure Cache for Redis. Úroveň mezipaměti můžete kdykoli upravit mezi úrovní Basic, Standard a Premium podle potřeby. U větších limitů mezipaměti a dalších funkcí, jako je replikace a zotavení po havárii, uvidíte vyšší ceny. Azure Cache for Redis také nabízí ceny rezervované kapacity pro dlouhodobé závazky využití.

Ceny služby Azure Front Door závisí na množství přenosu dat ve službě a mimo službu. U odchozích dat se ceny liší v závislosti na zónách. Různé oblasti budou mít různé náklady. Pokud narazíte na cenový rozdíl, odhadněte náklady samostatně. Cena zahrnuje určitou kapacitu směrování a domény, ale systém nese náklady za počáteční limity. Firewall webových aplikací Azure se účtuje za zásady nebo pravidlo s malými dalšími poplatky. Podrobnosti o cenách služby Azure Front Door najdete na stránce s cenami služby Azure Front Door.

Ceny služby Azure Cognitive Search jsou plně vrstvené systémy. Úroveň Free je k dispozici pro vývoj a testování. Každá úroveň pak za každou hodinu nese náklady na každou přidělenou instanci kognitivního vyhledávání. S nárůstem úrovní se také zvýší celkové úložiště, počet indexů a omezení horizontálního navýšení kapacity. Azure Cognitive Search poskytuje extrakci obrázků jako službu se stejnou rychlostí pro všechny placené úrovně.

Další kroky