Základní webové aplikace

App Service
Key Vault
Monitor
SQL Database
Web Apps

tato referenční architektura ukazuje osvědčené postupy pro webovou aplikaci, která používá Azure App Service a Azure SQL Database.

Referenční architektura pro základní webovou aplikaci v Azure

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

Referenční nasazení

tato architektura zahrnuje plán Azure App Service a prázdnou aplikaci, Azure SQL Database, Azure Key Vault pro uložení připojovacího řetězce databáze a Azure Monitor pro protokolování, monitorování a upozorňování.

Pomocí následujícího příkazu vytvořte skupinu prostředků pro nasazení. Klikněte na tlačítko vyzkoušet a použijte vložené prostředí.

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 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í.

Architektura

Tato architektura se skládá z následujících součástí.

App Service plán: plán App Service poskytuje spravované virtuální počítače, které hostují vaši aplikaci. Veškeré aplikace související s plánem se spouštějí ve stejných instancích virtuálního počítače.

App Service aplikace: Azure App Service je plně spravovaná platforma pro vytváření a nasazování cloudových aplikací.

Sloty nasazení: slot nasazení umožňuje připravit 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 v části týkající se správy.

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: Azure DNS je hostující služba pro domény DNS, která poskytuje překlad adres ip pomocí Microsoft Azure infrastruktury. 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é mapují 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: 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 použít také Azure Database for MySQL nebo Azure Database for PostgreSQL. Jedná se o plně spravované databázové služby založené na Open Source databázových strojích MySQL a Postgres.

Doporučení

Vaše požadavky se mohou od popsané architektury lišit. Jako výchozí bod použijte doporučení uvedená v této části.

Plán služby App Service

Pro účely testování používejte úrovně Free a Shared (Preview), protože sdílené prostředky se nemůžou škálovat. Tyto dvě úrovně poskytují různé možnosti v rámci vašeho rozpočtu. provozní úlohy můžete spouštět na úrovních Basic, Standarda Premium , protože aplikace běží na vyhrazených instancích virtuálních počítačů a má přidělené prostředky, které se můžou škálovat. Plány App Service se účtují za sekundu.

Další informace najdete v článku o tom, kolik stojí App Service plán?

použijte vrstvy Standard nebo Premium, protože podporují škálování na více instancí, automatického škálování a SSL (secure sockets layer). Každá úroveň podporuje několik velikostí instancí , které se liší podle počtu jader a paměti. Úroveň nebo velikost instance můžete změnit po vytvoření plánu. Další informace o plánech služby App Service najdete v tématu Ceny služby App Service.

Instance v plánu služby App Service vám budou účtovány i v případě, kdy je aplikace pozastavená. Dbejte na to, abyste odstranili plány, které nepoužíváte (například testovací nasazení).

SQL Database

Skupina logických serverů usnadňuje úlohy správy. Každá databáze v rámci skupiny je nasazena s určitou úrovní služeb. V rámci každé skupiny databáze nemůžou sdílet prostředky. Pro Server nejsou k dispozici žádné výpočetní náklady, ale je nutné zadat úroveň pro každou databázi. Proto může být výkon lepší z důvodu vyhrazených prostředků, ale náklady mohou být vyšší.

Použijte verzi V12 služby SQL Database. 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). Naplánujte kapacitu a vyberte úroveň a úroveň výkonu odpovídající vašim požadavkům.

Oblast

Plán služby App Service a službu SQL Database zřiďte ve stejné oblasti, abyste minimalizovali latenci sítě. Vyberte oblast, která je vašim uživatelům nejbližší.

Skupina prostředků má také oblast, která určuje to, kam se ukládají metadata nasazení. Skupinu prostředků a její prostředky umístěte do stejné oblasti. Zlepšíte tím dostupnost během nasazení.

Pomocí cenové kalkulačky můžete odhadnout náklady.

Další informace najdete v části věnované nákladům v tématu Dobře navržená architektura Microsoft Azure.

Aspekty zabezpečení

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, což je změna 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, což je 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 škálovat tak, že změníte počet instancí nebo použijete automatické škálování , aby Azure automaticky přidal nebo odebral instance na základě plánu nebo metriky výkonu. Každá operace škálování probíhá 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í. Profily můžete naplánovat. Můžete například vytvořit samostatné profily pro pracovní dny a víkendy. Profil může volitelně obsahovat pravidla týkající se toho, kdy se mají instance přidávat a odebírat. (Příklad: Přidejte dvě instance, pokud je využití procesoru po dobu 5 minut vyšší než 70 %.)

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

  • Jak je to možné, vyhněte se vertikálnímu škálování směrem nahoru a dolů, protože může aktivovat restart aplikace. Místo toho vyberte úroveň a velikost, které odpovídají vašim požadavkům na výkon při obvyklém zatížení, a potom horizontálně navyšujte kapacitu instancí, abyste dokázali zvládnout změny objemu provozu.
  • 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 zatížení nelze předvídat, reagujte na změny zatížení při jejich výskytu pomocí automatického škálování založeného na pravidlech. Oba přístupy můžete kombinovat.
  • 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í.
  • Pravidla automatického škálování zahrnují dobu chladnutí , což je interval, který se má po dokončení akce škálování počkat, než se spustí nová akce škálování. Doba chladnutí umožní, aby se systém před dalším škálováním stabilizoval. Nastavte kratší dobu chladnutí pro přidání instancí a delší dobu chladnutí pro odebrání instancí. Můžete například nastavit 5 minut pro přidání instance, ale 60 minut pro odebrání instance. Je lepší přidat nové instance rychle za těžké zatížení, aby se zajistilo další provoz a pak se postupně znovu změnily.

Škálování služby SQL Database

Pokud potřebujete vyšší úroveň služby nebo úroveň výkonu služby SQL Database, můžete vertikálně navýšit kapacitu jednotlivých databází bez výpadku aplikace. Další informace najdete v tématu škálování prostředků jedné databáze v Azure SQL Database.

Aspekty dostupnosti

v době psaní se smlouva o úrovni služeb (SLA) pro App Service 99,95% a smlouva sla pro SQL Database je 99,99% pro úrovně Basic, Standard a Premium. SLA služby App Service platí pro jednu i více instancí.

Zálohování

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

Další informace najdete v tématu Cloudová provozní kontinuita a zotavení po havárii databáze se službou SQL Database.

Služba App Service poskytuje funkci zálohování a obnovení souborů aplikace. Upozorňujeme však, že zálohované soubory obsahují nastavení aplikace v prostém textu a můžou obsahovat tajné kódy, jako jsou například připojovací řetězce. nepoužívejte funkci App Service backup k zálohování databází SQL, protože exportuje databázi do souboru SQL BACPAC a spotřebovává dtu. Raději použijte obnovení k určitému bodu v čase služby SQL Database popsané výše.

Aspekty správy

Vytvořte samostatné skupiny prostředků pro produkční, vývojové a testovací prostředí. Usnadníte tak správu nasazení, odstranění nasazení v testovacím prostředí a přiřazení přístupových práv.

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

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

Další informace najdete v článku Přehled Azure Resource Manageru.

Důležité informace o DevOps

V této architektuře použijete šablonu Azure Resource Manager ke zřízení prostředků Azure a jejich závislostí. Vzhledem k tomu, že se jedná o jednu webovou aplikaci, všechny prostředky jsou izolované ve stejné základní úloze, což usnadňuje přidružení specifických prostředků ke týmu, aby tým mohl nezávisle spravovat všechny aspekty těchto prostředků. tato izolace umožňuje týmu DevOps provádět průběžnou integraci a průběžné doručování (CI/CD). můžete také použít různé šablony ARM a integrovat je s Azure DevOps Services k zřizování různých prostředí během několika minut, například pro replikaci scénářů podobných produkčním prostředí nebo zátěžových testování v případě potřeby a úspory nákladů.

Zřídí více instancí webové aplikace, takže nezávisí na jediné instanci, která by mohla způsobit selhání v jednom bodě. Kromě toho více instancí zvyšuje odolnost a škálovatelnost.

Nasazení

Nasazení zahrnuje dva kroky:

  1. Zřízení prostředků služby Azure. Pro tento krok doporučujeme použít šablony Azure Resource Manager . Šablony usnadňují automatizaci nasazení prostřednictvím PowerShellu nebo rozhraní příkazového řádku Azure.
  2. Nasazení aplikace (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í vaší aplikace do Azure App Service.

Aplikace služby App Service má vždy jeden slot nasazení s názvem production, který představuje živý provozní web. Doporučujeme vytvořit přípravný slot pro nasazování aktualizací. Mezi výhody použití přípravného slotu patří:

  • Před jejich přepnutím do produkčního prostředí můžete nasazení ověřit úspěšně.
  • 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á značný zahřívání a studený čas spuštění.

Doporučujeme také vytvořit třetí slot pro uložení posledního známého úspěšné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.

Výměna slotů pro produkční a pracovní nasazení

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čů. Například zátěžové testy mohou snižovat provozní pracoviště za provozu. Místo toho pro produkci a testování vytvořte odlišné plány služby App Service. Nasazením testů do samostatného plánu je izolujete z produkční verze.

Konfigurace

Nastavení konfigurace uložte jako nastavení aplikace. Nastavení aplikace definujte v šablonách Správce prostředků 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 je předávejte jako parametry 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 různá nastavení pro produkční a pracovní prostředí, můžete vytvořit nastavení aplikace, která se objeví na slotu a nebudete je měnit.

Diagnostika a monitorování

Povolte protokolování diagnostiky, včetně protokolování aplikace a protokolování webového serveru. Nakonfigurujte protokolování tak, aby používalo Azure Log Analytics. Podrobnější pokyny týkající se protokolování najdete v tématu Pokyny k monitorování a diagnostice.

Pomocí služby, jako je například New Relic nebo Application Insights, monitorujte výkon a chování při zatížení. Mějte na paměti omezení přenosové rychlosti dat pro službu Application Insights.

proveďte testování zatížení pomocí nástroje, jako je Azure DevOps nebo Visual Studio Team Foundation Server. Obecný přehled analýzy výkonu v cloudových aplikacích najdete v tématu Základy analýzy výkonu.

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

další informace najdete v části DevOps v tématu Azure Well-Architected Framework.

Důležité informace o 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í. Některé další důležité informace o zabezpečení najdete v části Zabezpečení aplikace ve službě Azure App 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. Neprodukční sloty zabezpečte pomocí přihlášení služby Azure Active Directory, aby ke koncovým bodům měli přístup pouze členové vývojového týmu a týmu 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 služby App Service zahrnuje bez dalších poplatků koncový bod SSL a subdoménu azurewebsites.net. 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 článku Koupě a konfigurace certifikátu SSL pro službu Azure App Service.

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. Toto chování můžete implementovat do své aplikace nebo můžete použít pravidlo pro přepis adres URL, jak je popsáno v článku Povolení HTTPS pro aplikaci ve službě Azure App Service.

Authentication

Doporučujeme ověřování prostřednictvím zprostředkovatele identit (IDP), jako je například Azure AD, Facebook, Google nebo Twitter. Pro tok ověřování použijte OAuth 2 nebo OpenID Connect (OIDC). Azure AD 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-end služeb, jako je Microsoft 365 a Skype pro firmy.

Nepoužívejte aplikaci k přímé správě uživatelských přihlášení a přihlašovacích údajů, protože vytváří potenciální prostor pro útok. Musíte vyžadovat, abyste měli k dispozici potvrzení e-mailu, obnovení hesla a službu Multi-Factor Authentication, ověřit sílu hesla a bezpečně ukládat hodnoty hash hesel. Poskytovatelé velkých identit zpracovává všechny tyto věci za vás a průběžně monitorují a zlepšují postupy zabezpečení.

Zvažte použití ověřování pomocí služby App Service, abyste mohli implementovat tok ověřování OAuth/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 bodů IDP, neexistuje žádný předdefinovaný mechanismus pro zjišťování domovské sféry.
  • U scénářů s více tenanty musí aplikace implementovat logiku pro ověření vydavatele tokenu.