Základní webová aplikace

Azure App Service
Azure Key Vault
Azure Monitor
Azure SQL Database

Tato architektura ukazuje základní komponenty základní webové aplikace. Architekturu můžete použít k vytvoření webové aplikace a následnému přizpůsobení aplikace podle svých potřeb.

Architektura

Diagram showing the reference architecture for a basic web application in Azure.

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

Komponenty

  • Služba Azure App Service je plně spravovaná platforma pro vytváření a nasazování cloudových aplikací. Umožňuje definovat sadu výpočetních prostředků pro webovou aplikaci, která bude spouštět, nasazovat webové aplikace a konfigurovat sloty nasazení.
  • Sloty nasazení umožňují provést fázi nasazení a pak ho prohodit s produkčním nasazením. Vyhnete se tak nasazování přímo do produkčního prostředí. Konkrétní doporučení najdete níže v části přípravy verzí a nasazení .
  • IP adresa: Aplikace App Service má veřejnou IP adresu a název domény. Název domény je subdoména azurewebsites.net, jako například contoso.azurewebsites.net.
  • Azure DNS je hostitelská služba určená pro domény DNS a zajišťuje překlad názvů s využitím infrastruktury Microsoft Azure. Pokud svoje domény hostujete v Azure, můžete spravovat svoje DNS záznamy pomocí stejných přihlašovacích údajů, rozhraní API a nástrojů a za stejných fakturačních podmínek jako u ostatních služeb Azure. Pokud chcete použít vlastní název domény (například contoso.com), vytvořte záznamy DNS, které mapuje vlastní název domény na IP adresu. Další informace naleznete v tématu Konfigurace vlastního názvu domény ve službě Azure App Service.
  • Azure SQL Database je relační databáze jako služba v cloudu. SQL Database sdílí základ kódu s databázovým strojem Microsoft SQL Serveru. V závislosti na požadavcích vaší aplikace můžete také použít Azure Database for MySQL nebo Azure Database for PostgreSQL. Tyto alternativy jsou plně spravované databázové služby založené na opensourcovém serveru MySQL a databázových strojích Postgres.
  • Microsoft Entra ID je cloudová služba pro správu identit a přístupu, která umožňuje zaměstnancům přistupovat ke cloudovým aplikacím vyvinutým pro vaši organizaci.
  • Azure Monitor je řešení pro shromažďování, analýzu a akce na protokolech a metrikách napříč vašimi prostředími.
  • Azure Key Vault podporuje správu tajných kódů, správu klíčů a správu certifikátů. Může ukládat tajné kódy aplikací, jako jsou databázové připojovací řetězec.

Doporučení

Vaše požadavky se můžou lišit od architektury popsané a uvedené v kódu. Kód se nasadí s produkčními konfiguracemi. Pomocí doporučení můžete přizpůsobit nasazení tak, aby vyhovovalo vašim potřebám.

Plán služby App Service

Plán služby App Service má různé cenové úrovně. Každá cenová úroveň podporuje několik velikostí instancí, které se liší počtem jader a paměti. Cenovou úroveň můžete po nasazení změnit tak, že v levém navigačním panelu vyberete Vertikální navýšení kapacity (plán služby App Service). Tady je několik doporučení služby App Service:

  • Spusťte produkční úlohu na cenových úrovních Basic, Standard a Premium . V těchto třech úrovních běží aplikace na vyhrazených instancích virtuálních počítačů a má přidělené prostředky, které můžou škálovat na více instancí.
  • Pokud potřebujete automatické škálování a TLS/SSL, použijte úrovně Standard a Premier.
  • Vytvořte jiný plán služby App Service pro testování a vývoj. Pro účely testování a vývoje použijte úrovně Free a Shared (Preview) a využijte tak nákladovou efektivitu. Nepoužívejte ale úrovně Free a Shared pro produkční úlohy. Sdílené prostředky nejde škálovat na více instancí.
  • Nezapomeňte odstranit plány, které nepoužíváte, například testovací nasazení. Plány služby App Service se účtují za sekundu. Za instance v plánu služby App Service se vám účtují poplatky, i když je aplikace zastavená. Další informace o plánech a fakturaci služby App Service najdete tady:

Následující šablona ARM se nasadí na cenovou úroveň Standard.

Databáze SQL

  • Využijte Azure SQL Database ke snížení režijních nákladů na správu. Azure SQL Database vytvoří logickou konstrukci, která funguje jako centrální bod správy pro kolekci databází. Tento logický konstruktor snižuje režijní náklady na správu. Každá databáze v rámci skupiny se nasadí s konkrétní úrovní služby. V rámci každé skupiny nemůžou databáze sdílet prostředky. Na server nejsou žádné náklady na výpočetní prostředky, ale musíte zadat úroveň pro každou databázi. Proto může být výkon lepší kvůli vyhrazeným prostředkům, ale náklady můžou být vyšší.
  • Naplánujte kapacitu a vyberte úroveň a úroveň výkonu odpovídající vašim požadavkům. Služba SQL Database podporuje úrovně služby Basic, Standard a Premium s několika úrovněmi výkonu v jednotlivých vrstvách měřenými v jednotkách transakcí databáze (DTU).

Oblast

  • Vytvořte plán služby App Service a službu SQL Database ve stejné oblasti, abyste minimalizovali latenci sítě. Vyberte oblast, která je vašim uživatelům nejbližší.
  • Skupina prostředků má také oblast. Určuje, kde jsou uložena metadata nasazení. Umístěte skupinu prostředků a její prostředky do stejné oblasti, aby se zlepšila dostupnost během nasazování.
  • K odhadu nákladů použijte cenovou kalkulačku.
  • Další informace najdete v části věnované nákladům v tématu Dobře navržená architektura Microsoft Azure.

Důležité informace

Tyto aspekty implementují pilíře dobře architektuře Azure. Pilíře představují sadu hlavních principů, které zlepšují kvalitu úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.

Efektivita výkonu

Hlavní výhodou služby Azure App Service je schopnost škálovat aplikaci podle zatížení. Tady jsou některé aspekty, které byste měli mít na paměti při plánování škálování vaší aplikace.

Škálování aplikace služby App Service

Existují dva způsoby, jak můžete aplikaci služby App Service škálovat:

  • Vertikální navýšení kapacity znamená změnu velikosti instance. Velikost instance určuje paměť, počet jader a úložiště každé instance virtuálního počítače. Kapacitu můžete vertikálně navýšit ručně tak, že změníte velikost instance nebo úroveň plánu.
  • Horizontální navýšení kapacity znamená přidání instancí pro zvládnutí zvýšeného zatížení. Každá cenová úroveň má maximální počet instancí. Horizontální navýšení kapacity můžete provést ruční změnou počtu instancí nebo konfigurací automatického škálování tak, aby Služba Azure automaticky přidávala nebo odebírala instance na základě plánu nebo metrik výkonu. Každá operace škálování se obvykle provede rychle, obvykle během několika sekund.

Pokud chcete povolit automatické škálování, vytvořte profil automatického škálování, který definuje minimální a maximální počet instancí. Můžete nastavit profily založené na plánu pro aktivaci událostí škálování. Můžete například vytvořit samostatné profily pro pracovní dny a víkendy. Profil může obsahovat pravidla pro přidání nebo odebrání instancí. Pokud je například využití procesoru vyšší než 70 % po dobu 5 minut, přidejte dvě instance.

Doporučení pro škálování webové aplikace:

  • Omezte vertikální navýšení a snížení kapacity co nejvíce. Může aktivovat restartování aplikace. Místo toho horizontální navýšení kapacity. Vyberte úroveň a velikost, která splňuje vaše požadavky na výkon v typickém zatížení, a pak škálujte instance tak, aby zpracovávaly změny objemu přenosů.
  • Povolte automatické škálování. Pokud má vaše aplikace předvídatelné a pravidelné zatížení, vytvořte profily, ve kterých předem naplánujete počet instancí. Pokud úloha není předvídatelná, pomocí automatického škálování založeného na pravidlech můžete reagovat na změny zatížení při jejich výskytu. Oba přístupy můžete kombinovat.
  • Použití využití procesoru pro pravidla automatického škálování Dobrou metrikou pro pravidla automatického škálování je obvykle využití procesoru. Nicméně byste měli provést také zátěžový test aplikace, identifikovat potenciální problémová místa a na těchto datech pak založit pravidla automatického škálování.
  • Pro přidávání instancí a delší dobu chlazení pro odebírání instancí nastavte kratší dobu cool-down. Pravidla automatického škálování zahrnují období chlazení . Období ochladnutí je interval čekání po dokončení akce škálování před zahájením nové akce škálování. Doba chladnutí umožní, aby se systém před dalším škálováním stabilizoval. Můžete například nastavit 5 minut pro přidání instance, ale 60 minut pro odebrání instance. Je lepší přidávat nové instance rychle pod velkým zatížením, aby zvládly dodatečný provoz a pak postupně škálovat zpět.

Škálování databází SQL

Vertikálně navyšte kapacitu jednotlivých databází bez výpadků aplikace, pokud potřebujete vyšší úroveň služby nebo úroveň výkonu pro SLUŽBU SQL Database.

Další informace najdete v tématu Škálování prostředků jednoúčelové databáze v Azure SQL Database.

Spolehlivost

V době psaní tohoto článku je smlouva o úrovni služeb (SLA) pro službu App Service 99,95 %. SLA služby App Service platí pro jednu i více instancí. Smlouva SLA pro službu SQL Database je 99,99 % pro úrovně Basic, Standard a Premium.

Zálohování

SQL Database poskytuje obnovení k určitému bodu v čase a geografické obnovení pro obnovení ztráty dat. Tyto funkce jsou dostupné ve všech úrovních a jsou povolené automaticky. Zálohy nemusíte plánovat ani spravovat.

  • Použijte obnovení k určitému bodu v čase. Z lidské chyby se můžete zotavit vrácením databáze k dřívějšímu bodu v čase.
  • Použijte geografické obnovení. Z výpadku služby se můžete zotavit obnovením databáze z geograficky redundantní zálohy.
  • Zvažte použití zálohování a obnovení služby App Service. Zálohování a obnovení je funkce pro soubory vaší aplikace. Zálohované soubory ale obsahují nastavení aplikace ve formátu prostého textu, například připojovací řetězec.
  • Nepoužívejte funkci zálohování služby App Service k zálohování databází SQL. Exportuje databázi do souboru SQL BACPAC s využitím DTU. Raději použijte obnovení k určitému bodu v čase služby SQL Database popsané výše. Další informace najdete v tématu Provozní kontinuita cloudu a zotavení po havárii databáze pomocí SLUŽBY SQL Database.

Provozní dokonalost

Vytvořte samostatné skupiny prostředků pro produkční, vývojové a testovací prostředí. Oddělení prostředí usnadňuje správu nasazení, odstraňování testovacích nasazení a přiřazování přístupových práv.

Při přiřazování prostředků ke skupinám prostředků zvažte následující funkce:

  • Životní cyklus. Prostředky se stejným životním cyklem umístěte do stejné skupiny prostředků.
  • Přístup. Pomocí řízení přístupu na základě role v Azure (RBAC) můžete použít zásady přístupu k prostředkům ve skupině.
  • Fakturace. Můžete zobrazit souhrnné náklady na skupinu prostředků.

Další informace naleznete v tématu Přehled Azure Resource Manager.

Konfigurace aplikací

  • Nastavení konfigurace uložte jako nastavení aplikace. Definujte nastavení aplikace v šablonách Resource Manageru nebo pomocí PowerShellu. V době běhu jsou nastavení aplikace dostupná pro aplikaci jako proměnné prostředí.
  • Nikdy nezapisujte hesla, přístupové klíče nebo připojovací řetězce do správy zdrojového kódu. Místo toho předejte tajné kódy jako parametry do skriptu nasazení, který tyto hodnoty ukládá jako nastavení aplikace.
  • Když přepnete slot nasazení, nastavení aplikace se ve výchozím nastavení přepnou. Pokud potřebujete jiná produkční a přípravná nastavení, můžete vytvořit nastavení aplikace, která se budou držet slotu a neprohodí se.

Diagnostika a monitorování

DevOps

  • Pomocí šablon ARM nasaďte prostředky Azure a jejich závislosti. Doprovodná šablona ARM nasadí jednu webovou aplikaci. Všechny prostředky jsou izolované ve stejné základní úloze. Tato izolace usnadňuje přidružení konkrétních prostředků úlohy k týmu. Tým pak může nezávisle spravovat všechny aspekty těchto prostředků. Tato izolace umožňuje týmu DevOps provádět kontinuální integraci a průběžné doručování (CI/CD).
  • Použijte různé šablony ARM a integrujte je se službami Azure DevOps. Toto nastavení umožňuje vytvářet různá prostředí během několika minut. Můžete například replikovat produkční scénáře nebo prostředí zátěžového testování pouze v případě potřeby a ušetřit náklady.
  • Zřiďte více instancí webové aplikace. Nechcete, aby webová aplikace závisela na jedné instanci a potenciálně vytvořila jediný bod selhání. Více instancí zlepšuje odolnost a škálovatelnost.

Další informace najdete v části DevOps v architektuře Azure Well-Architected Framework.

Příprava a nasazení vydaných verzí

  • Ke zřízení prostředků Azure použijte šablony Azure Resource Manageru. Šablony usnadňují automatizaci nasazení prostřednictvím PowerShellu nebo Azure CLI.
  • Nasaďte aplikaci (kód, binární soubory a soubory obsahu). Máte několik možností, včetně nasazení z místního úložiště Git, použití sady Visual Studio nebo průběžného nasazování z cloudové správy zdrojového kódu. Viz Nasazení aplikace do Azure App Service.

Aplikace App Service má vždy jeden slot nasazení s názvem production. Produkční slot představuje živou produkční lokalitu. Doporučujeme vytvořit přípravný slot pro nasazování aktualizací. Mezi výhody použití přípravného slotu patří:

  • Nasazení bylo úspěšné, než ho prohodíte do produkčního prostředí.
  • Nasazení do přípravného slotu zajistí, že se všechny instance před přepnutím do produkčního prostředí zahřejí. Mnoho aplikací má významný čas zahřátí a studeného startu.
  • Vytvořte třetí slot pro uložení posledního známého dobrého nasazení. Po prohození pracovního a produkčního prostředí přesuňte předchozí produkční nasazení (nyní pracovní) do slotu posledního známého úspěšného nasazení. To vám zajistí, abyste se mohli později při zjištění problému rychle vrátit k poslední známé úspěšné verzi.

Swapping slots for production and staging deployments

  • Pokud se vrátíte k předchozí verzi, ujistěte se, že jsou jakékoli změny schématu databáze zpětně kompatibilní.
  • Sloty produkčního nasazení nepoužívejte pro testování, protože všechny aplikace v rámci jednoho plánu služby App Service sdílejí stejné instance virtuálních počítačů. Zátěžové testy můžou například snížit výkon živého produkčního webu. Místo toho pro produkci a testování vytvořte odlišné plány služby App Service. Umístěním testovacích nasazení do samostatného plánu je izolujete od produkční verze.

Zabezpečení

Tato část obsahuje důležité informace o zabezpečení, které jsou specifické pro služby Azure popsané v tomto článku. Nejedná se o úplný seznam osvědčených postupů zabezpečení. Další aspekty zabezpečení najdete v tématu Zabezpečení aplikace ve službě Aplikace Azure Service.

Auditování služby SQL Database

Auditování pomáhá zajistit dodržování předpisů a získat přehled o nesrovnalostech a nepravidelnostech, které můžou značit problémy obchodního charakteru nebo vzbuzovat podezření na narušení zabezpečení. Přečtěte si článek Začínáme s auditem SQL Database.

Sloty nasazení

Každý slot nasazení má veřejnou IP adresu. Zabezpečte neprodukční sloty pomocí přihlášení Microsoft Entra, aby se k těmto koncovým bodům dostali jenom členové vývojového týmu a týmů DevOps.

Protokolování

Protokoly by nikdy neměly zaznamenávat hesla uživatelů nebo jiné informace, které se dají zneužít k podvodům s identitami. Projděte si tyto podrobnosti dat, než je uložíte.

SSL

Aplikace App Service zahrnuje koncový bod SSL na subdoméně azurewebsites.net bez dalších poplatků. Koncový bod SSL obsahuje certifikát se zástupnými znaky pro doménu *.azurewebsites.net. Pokud používáte vlastní název domény, musíte poskytnout certifikát, který odpovídá vlastní doméně. Nejjednodušším způsobem je koupit certifikát přímo prostřednictvím portálu Azure Portal. Certifikáty také můžete naimportovat z jiných certifikačních autorit. Další informace najdete v tématu zakoupení a konfigurace certifikátu SSL pro vaši službu Aplikace Azure Service.

Protokol HTTPS není ve výchozím nastavení v nasazení šablony ARM povolený. Osvědčeným postupem zabezpečení aplikace by mělo být vynucení protokolu HTTPS prostřednictvím přesměrovávání požadavků HTTP. Https můžete implementovat v aplikaci nebo použít pravidlo přepsání adresy URL, jak je popsáno v článku povolení HTTPS pro aplikaci ve službě Aplikace Azure Service.

Ověřování

Doporučujeme ověřovat prostřednictvím zprostředkovatele identity (IDP), jako je Microsoft Entra ID, Facebook, Google nebo Twitter. Pro tok ověřování použijte OAuth 2 nebo OpenID Connect (OIDC). Id Microsoft Entra poskytuje funkce pro správu uživatelů a skupin, vytváření aplikačních rolí, integraci místních identit a využívání back-endových služeb, jako je Microsoft 365 a Skype pro firmy.

Vyhněte se přímé správě přihlášení uživatele a přihlašovacích údajů aplikace. Vytvoří potenciální prostor pro útok. Minimálně byste museli mít potvrzení e-mailu, obnovení hesla a vícefaktorové ověřování, ověřit sílu hesla a bezpečně ukládat hodnoty hash hesel. Velké zprostředkovatele identit zpracovávají všechny tyto věci za vás a neustále monitorují a vylepšují jejich postupy zabezpečení.

Zvažte použití ověřování služby App Service k implementaci toku ověřování OAuth nebo OIDC. Mezi výhody ověřování pomocí služby App Service patří:

  • Snadno se konfiguruje.
  • Pro jednoduché scénáře ověřování se nevyžaduje kód.
  • Podporuje delegovanou autorizaci pomocí přístupového tokenu OAuth pro využívání prostředků jménem uživatele.
  • Poskytuje integrovanou mezipaměť tokenu.

Toto jsou některá omezení ověřování pomocí služby App Service:

  • Má omezené možnosti vlastního nastavení.
  • Delegovaná autorizace je omezena na jeden back-endový prostředek na relaci přihlášení.
  • Pokud používáte více než jeden protokol IDP, neexistuje žádný integrovaný mechanismus pro zjišťování domovské sféry.
  • U scénářů s více tenanty musí aplikace implementovat logiku pro ověření vydavatele tokenu.

Nasazení tohoto scénáře

Tato architektura zahrnuje plán služby Aplikace Azure a prázdnou aplikaci. Používá Azure SQL Database, Azure Key Vault k ukládání připojovací řetězec databáze a Azure Monitoru pro protokolování, monitorování a upozorňování.

Pomocí následujícího příkazu vytvořte skupinu prostředků pro nasazení. Pokud chcete použít vložené prostředí, vyberte tlačítko Vyzkoušet.

az group create --name basic-web-app --location eastus

Spuštěním následujícího příkazu nasaďte webovou aplikaci a podpůrnou infrastrukturu. Po zobrazení výzvy zadejte uživatelské jméno a heslo. Tyto hodnoty se používají pro přístup k instanci služby Azure SQL Database.

az deployment group create --resource-group basic-web-app  \
    --template-uri https://raw.githubusercontent.com/mspnp/samples/master/solutions/basic-web-app/azuredeploy.json

Podrobné informace a další možnosti nasazení najdete v šablonách ARM použitých k nasazení tohoto řešení.

Další kroky

Tipy pro řešení potíží s aplikací:

Dokumentace k produktu:

Moduly Microsoft Learn: