Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Návod
Tento obsah je výňatek z eBooku, architekt moderní webové aplikace s ASP.NET Core a Azure, který je k dispozici na .NET Docs nebo jako bezplatný soubor PDF ke stažení, který si můžete přečíst offline.
"Vedoucí pracovníci vedení firmy všude obcházejí IT oddělení, aby získali aplikace z cloudu (označované také jako SaaS) a zaplatili za ně, jako by za ně zaplatili předplatné časopisu. A když už službu není třeba používat, mohou zrušit předplatné, aniž by v rohu zůstalo nevyužité vybavení.
- Daryl Plummer, analytik společnosti Gartner
Microsoft Azure ji může podporovat bez ohledu na to, co vaše aplikace potřebuje a architektura. Vaše hostování může být stejně jednoduché jako statický web nebo sofistikovaná aplikace složená z desítek služeb. Pro ASP.NET monolitické webové aplikace Core a podpůrné služby se doporučuje několik známých konfigurací. Doporučení k tomuto článku jsou seskupené na základě typu prostředku, který se má hostovat, ať už jde o úplné aplikace, jednotlivé procesy nebo data.
Webové aplikace
Webové aplikace je možné hostovat pomocí:
Webové aplikace služby App Service
Kontejnery (několik možností)
Virtual Machines (virtuální počítače)
Z toho je doporučeným přístupem pro většinu scénářů App Service Web Apps, včetně jednoduchých aplikací založených na kontejnerech. U architektur mikroslužeb zvažte přístup založený na kontejnerech. Pokud potřebujete větší kontrolu nad počítači, na kterých běží vaše aplikace, zvažte Službu Azure Virtual Machines.
Webové aplikace služby App Service
App Service Web Apps nabízí plně spravovanou platformu optimalizovanou pro hostování webových aplikací. Jedná se o nabídku PaaS (Platforma jako služba), která vám umožní soustředit se na obchodní logiku, zatímco Azure se stará o infrastrukturu potřebnou ke spuštění a škálování aplikace. Některé klíčové funkce App Service Web Apps:
Optimalizace DevOps (kontinuální integrace a doručování, více prostředí, testování A/B, podpora skriptování).
Globální škálování a vysoká dostupnost
Připojení k platformám SaaS a vašim místním datům
Zabezpečení a dodržování předpisů.
Integrace sady Visual Studio
Azure App Service je nejlepší volbou pro většinu webových aplikací. Nasazení a správa jsou integrované do platformy, weby se můžou rychle škálovat, aby zvládly vysoké zatížení provozu, a integrované vyrovnávání zatížení a Traffic Manager poskytují vysokou dostupnost. Existující weby můžete snadno přesunout do služby Azure App Service pomocí nástroje pro online migraci. Můžete použít opensourcovou aplikaci z galerie webových aplikací nebo vytvořit nový web pomocí architektury a nástrojů podle vašeho výběru. Funkce WebJobs usnadňuje přidání zpracování úloh na pozadí do webové aplikace App Service. Pokud máte existující ASP.NET aplikaci hostované místně pomocí místní databáze, existuje jasná cesta k migraci. Webovou aplikaci App Service můžete použít se službou Azure SQL Database (nebo zabezpečený přístup k místnímu databázovému serveru, pokud je to upřednostňované).
Ve většině případů je přechod z místně hostované aplikace ASP.NET do webové aplikace App Service jednoduchý proces. U samotné aplikace by se nemělo vyžadovat jen málo změn a může rychle začít využívat výhod mnoha funkcí, které nabízí Azure App Service Web Apps.
Kromě aplikací, které nejsou optimalizované pro cloud, jsou služba Azure App Service Web Apps skvělým řešením pro mnoho jednoduchých monolitických (nedistribuovaných) aplikací, jako je mnoho aplikací ASP.NET Core. V tomto přístupu je architektura základní a jednoduchá pro pochopení a správu:
Pro správu takové aplikace obvykle stačí malý počet prostředků v jedné skupině prostředků. Aplikace, které se obvykle nasazují jako jedna jednotka, a ne aplikace, které se skládají z mnoha samostatných procesů, jsou vhodnými kandidáty pro tento základní přístup k architektuře. I když je tento přístup architektonicky jednoduchý, umožňuje hostované aplikaci vertikálně navýšit kapacitu (více prostředků na uzel) i horizontálně (více hostovaných uzlů) tak, aby splňovala jakékoli zvýšení poptávky. S automatickým škálováním je možné aplikaci nakonfigurovat tak, aby automaticky upravovala počet uzlů hostujících aplikaci na základě poptávky a průměrného zatížení mezi uzly.
Webové aplikace App Service pro kontejnery
Kromě podpory pro přímé hostování webových aplikací je možné ke spouštění kontejnerizovaných aplikací ve Windows a Linuxu použít app Service Web Apps for Containers . Pomocí této služby můžete snadno nasazovat a spouštět kontejnerizované aplikace, které se můžou škálovat s vaší firmou. Aplikace mají všechny funkce App Service Web Apps uvedené výše. Kromě toho služba Web Apps for Containers podporuje zjednodušenou CI/CD se službou Docker Hub, Azure Container Registry a GitHubem. Pomocí Azure DevOps můžete definovat kanály sestavení a nasazení, které publikují změny v registru. Tyto změny je pak možné otestovat v přípravném prostředí a automaticky nasadit do produkčního prostředí pomocí slotů nasazení, což umožňuje upgrady s nulovými výpadky. Vrácení zpět k předchozím verzím je možné provést stejně snadno.
Existuje několik scénářů, ve kterých služba Web Apps for Containers dává největší smysl. Pokud máte existující aplikace, které můžete kontejnerizovat, ať už v kontejnerech windows nebo Linuxu, můžete je snadno hostovat pomocí této sady nástrojů. Jednoduše publikujte kontejner a nakonfigurujte Službu Web Apps for Containers tak, aby načítá nejnovější verzi této image z vybraného registru. Jedná se o přístup "lift and shift" k migraci z klasických modelů hostování aplikací na model optimalizovaný pro cloud.
Tento přístup také funguje dobře, pokud se váš vývojový tým může přesunout do procesu vývoje založeného na kontejnerech. Vnitřní smyčka vývoje aplikací s kontejnery zahrnuje sestavení aplikace s kontejnery. Změny kódu a konfigurace kontejneru se předávají do správy zdrojového kódu a automatizované sestavení zodpovídá za publikování nových imagí kontejnerů do registru, jako je Docker Hub nebo Azure Container Registry. Tyto image se pak používají jako základ pro další vývoj a také pro nasazení do produkčního prostředí, jak je znázorněno v následujícím diagramu:
Vývoj s využitím kontejnerů nabízí řadu výhod, zejména v případě, že se kontejnery používají v produkčním prostředí. Stejná konfigurace kontejneru se používá k hostování aplikace v každém prostředí, ve kterém běží, od místního vývojového počítače po sestavení a testování systémů do produkčního prostředí. Tento přístup výrazně snižuje pravděpodobnost vad způsobených rozdíly v konfiguraci počítače nebo verzích softwaru. Vývojáři můžou také používat libovolné nástroje, se kterými jsou nejproduktivnější, včetně operačního systému, protože kontejnery můžou běžet na jakémkoli operačním systému. V některých případech můžou být distribuované aplikace zahrnující mnoho kontejnerů velmi náročné na prostředky, aby běžely na jednom vývojovém počítači. V tomto scénáři může být vhodné upgradovat na použití Kubernetes a Azure Dev Spaces, které jsou popsané v další části.
Vzhledem k tomu, že se části větších aplikací rozdělí do vlastních menších, nezávislých mikroslužeb, je možné použít další vzory návrhu ke zlepšení chování aplikací. Místo přímé práce s jednotlivými službami může brána rozhraní API zjednodušit přístup a oddělit klienta od jeho back-endu. Mít oddělené back-endy služeb pro různé front-endy také umožňuje se službám vyvíjet společně se svými uživateli. K běžným službám je možné přistupovat prostřednictvím samostatného kontejneru sidecar, který může zahrnovat běžné knihovny pro připojení klientů pomocí ambassador pattern.
Azure Kubernetes Service
Azure Kubernetes Service (AKS) spravuje hostované prostředí Kubernetes, což usnadňuje nasazení a správu kontejnerizovaných aplikací bez odborných znalostí orchestrace kontejnerů. Eliminuje také zátěž průběžného provozu a údržby zřizováním, upgradem a škálováním prostředků na vyžádání, aniž by bylo nutné vaše aplikace odstavit.
AKS snižuje složitost a provozní režii při správě clusteru Kubernetes tím, že přesměruje většinu této odpovědnosti do Azure. Azure jako hostovaná služba Kubernetes za vás zpracovává důležité úlohy, jako je monitorování stavu a údržba. Platíte také jenom za uzly agentů v rámci clusterů, ne za hlavní servery. Jako spravovaná služba Kubernetes poskytuje AKS:
- Automatizované upgrady a opravy verzí Kubernetes
- Snadné škálování clusteru
- Samoopravení hostované řídicí roviny.
- Úspora nákladů – platíte jenom za provozní uzly fondu agentů.
Když Azure zpracovává správu uzlů v clusteru AKS, nemusíte už provádět mnoho úloh ručně, jako jsou upgrady clusteru. Vzhledem k tomu, že Azure zpracovává tyto důležité úlohy údržby za vás, AKS neposkytuje přímý přístup ke clusteru (například s protokolem SSH).
Týmy, které využívají AKS, můžou využívat také Azure Dev Spaces. Azure Dev Spaces pomáhá týmům soustředit se na vývoj a rychlou iteraci aplikace mikroslužeb tím, že týmům umožní pracovat přímo s celou architekturou mikroslužeb nebo aplikací běžící v AKS. Azure Dev Spaces také poskytuje způsob, jak nezávisle aktualizovat části architektury mikroslužeb izolovaně, aniž by to ovlivnilo zbytek clusteru AKS nebo jiných vývojářů.
Azure Dev Spaces:
- Minimalizace času nastavení a požadavků na prostředky potřebné k místnímu počítači
- Umožněte týmům rychleji iterovat
- Snížení počtu prostředí integrace vyžadovaných týmem
- Odebrání nutnosti napodobení určitých služeb v distribuovaném systému při vývoji/testování
Další informace o Azure Dev Spaces
Azure Virtual Machines
Pokud máte existující aplikaci, která by vyžadovala podstatné úpravy ke spuštění ve službě App Service, můžete zvolit službu Virtual Machines, abyste zjednodušili migraci do cloudu. Správná konfigurace, zabezpečení a údržba virtuálních počítačů ale v porovnání se službou Azure App Service vyžaduje mnohem více času a odborných znalostí IT. Pokud uvažujete o službě Azure Virtual Machines, nezapomeňte vzít v úvahu průběžné úsilí o údržbu potřebné k opravě, aktualizaci a správě prostředí virtuálního počítače. Azure Virtual Machines je infrastruktura jako služba (IaaS), zatímco App Service je PaaS. Měli byste také zvážit, jestli nasazení aplikace jako kontejneru Windows do služby Web App for Containers může být pro váš scénář proveditelnou možností.
Logické procesy
Jednotlivé logické procesy, které je možné oddělit od zbytku aplikace, je možné nasadit nezávisle na službě Azure Functions bezserverovým způsobem. Azure Functions umožňuje napsat jenom kód, který potřebujete pro daný problém, aniž byste se museli starat o aplikaci nebo infrastrukturu, aby ho bylo možné spustit. Můžete si vybrat z nejrůznějších programovacích jazyků, včetně jazyků C#, F#, Node.js, Python a PHP, a vybrat si pro úkol nejproduktivnější jazyk. Stejně jako u většiny cloudových řešení platíte jen za čas, který skutečně využíváte, a můžete se spolehnout, že Azure Functions podle potřeby navýší kapacitu.
Údaje
Azure nabízí širokou škálu možností úložiště dat, aby vaše aplikace pro příslušná data mohli použít příslušného poskytovatele dat.
Pro transakční a relační data jsou nejlepší volbou azure SQL Database. Pro vysoce výkonná data převážně pro čtení je dobrou řešením mezipaměť Redis, která je zajištěna službou Azure SQL Database.
Nestrukturovaná data JSON se dají ukládat různými způsoby, od sloupců SLUŽBY SQL Database po objekty blob nebo tabulky ve službě Azure Storage až po Službu Cosmos DB. Z těchto možností nabízí Azure Cosmos DB nejlepší funkci dotazování a je doporučenou možností pro velký počet dokumentů založených na JSON, které musí podporovat dotazování.
Přechodná data založená na příkazech nebo událostech, která se používají ke koordinaci chování aplikací, mohou používat fronty Azure Service Bus nebo fronty Azure Storage Queues. Azure Service Bus nabízí větší flexibilitu a je doporučenou službou pro jiné než triviální zasílání zpráv v rámci aplikací a mezi aplikacemi.
Doporučení pro architekturu
Požadavky vaší aplikace by měly určovat její architekturu. K dispozici je mnoho různých služeb Azure. Volba správné možnosti je důležitým rozhodnutím. Microsoft nabízí galerii referenčních architektur, která pomáhá identifikovat typické architektury optimalizované pro běžné scénáře. Můžete najít referenční architekturu, která přesně mapuje požadavky vaší aplikace, nebo alespoň nabízí dobrý výchozí bod.
Obrázek 11–1 ukazuje ukázkovou referenční architekturu. Tento diagram popisuje doporučený přístup k architektuře pro web systému správy obsahu Sitecore optimalizovaný pro marketing.
Obrázek 11–1 Referenční architektura marketingového webu Sitecore
Reference – doporučení pro hostování Azure
Architektury řešení Azure
https://azure.microsoft.com/solutions/architecture/Architektura webových aplikací Azure Basic
https://learn.microsoft.com/azure/architecture/reference-architectures/app-service-web-app/basic-web-appVzory návrhu pro mikroslužby
https://learn.microsoft.com/azure/architecture/microservices/design/patternsPříručka pro vývojáře Azure
https://azure.microsoft.com/campaigns/developer-guide/Přehled Web Apps
https://learn.microsoft.com/azure/app-service/app-service-web-overviewWebová aplikace pro kontejnery
https://azure.microsoft.com/services/app-service/containers/Úvod do služby Azure Kubernetes Service (AKS)
https://learn.microsoft.com/azure/aks/intro-kubernetes