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.
Plnohodnotné aplikace, které kombinují front-endové a back-endové služby, jsou běžným vzorem moderního vývoje webu. Azure Developer CLI (azd) podporuje nasazení plnohodnotných aplikací, kde je front-end a back-end hostovaný jako samostatné služby. Tento článek vysvětluje, jak nasadit full-stack aplikace pomocí azd a zdůrazňuje strategie a výhody efektivního nasazení.
Co je full-stack nasazení?
Nasazení celé platformy s azd se obvykle skládá z:
- Front-endová služba: Uživatelská webová aplikace, která je často sestavená s architekturami, jako jsou React, Angular, Vue nebo Blazor. Front-end může být hostovaný jako statický web nebo jako kontejnerizovaná aplikace.
- Back-endová služba: Vrstva rozhraní API nebo služby, která zpracovává obchodní logiku, přístup k datům a integrace. Back-end je obvykle hostovaný v kontejnerech nebo jako bezserverové funkce.
- Sdílené prostředky: Databáze, účty úložiště, trezory klíčů a další prostředky Azure, které mohou obě služby používat.
Pomocí tohoto příkazu azdmůžete definovat obě služby v jednom azure.yaml souboru a zřizovat je společně pomocí infrastruktury jako kódu (Bicep nebo Terraform).
Životní cyklus Azure Developer CLI
Azure Developer CLI se řídí strukturovaným pracovním postupem s jedinečnými událostmi životního cyklu:
- Balíček: Sestavte zdrojový kód aplikace a připravte artefakty pro nasazení.
- Zřízení: Vytváření nebo aktualizace prostředků infrastruktury Azure pomocí Bicep nebo Terraformu
- Nasazení: Nasaďte kód zabalené aplikace do zřízené infrastruktury.
Příkaz azd up spustí všechny tři fáze postupně. Jednotlivé fáze můžete také spouštět nezávisle pomocí , azd packageazd provisiona azd deploy pro podrobnější řízení. Pochopení tohoto životního cyklu je nezbytné pro správu závislostí mezi službami, zejména ve full-stack nasazeních, kde záleží na načasování a pořadí.
Další informace o azd životním cyklu a přizpůsobení pracovního postupu najdete v tématu Prozkoumání pracovního postupu azd up.
Aspekty návrhu infrastruktury
Při návrhu plnohodnotné aplikace s azd zvolte vhodné hostitelské služby Azure pro front-end a back-end:
| Typ služby | Možnosti hostování | Případ použití |
|---|---|---|
| Front-end | Azure Static Web Apps, Azure App Service, Azure Container Apps | Statické weby, služby SPA, serverově vykreslené aplikace |
| Základní vrstva | Azure Container Apps, Azure App Service, Azure Functions, Azure Kubernetes Service | Rozhraní API, mikroslužby, bezserverové funkce |
Přečtěte si další informace o hostování aplikací v Azure.
Pochopení vzájemné závislosti mezi front-endovými a back-endovými aplikacemi
Full-stack nasazení často čelí problémům s cyklovými závislostmi, kdy každá služba potřebuje informace o ostatní, než je možné ji plně nakonfigurovat. Pochopení těchto vzájemných závislostí vám pomůže navrhnout efektivní pracovní postupy nasazení.
Front-end potřebuje back-endovou adresu URL: Front-endová aplikace obvykle potřebuje znát adresu URL koncového bodu back-endového rozhraní API v době sestavení nebo za běhu. Back-endová služba ale nemá adresu URL, dokud ji nenasadíte do Azure.
Back-end potřebuje front-endovou adresu URL: Služba back-endu může potřebovat front-endovou adresu URL ke konfiguraci zásad CORS, ale front-end nemá adresu URL, dokud ji nenasadíte.
Závislosti sdílených prostředků: Obě služby můžou záviset na sdílených prostředcích, jako jsou databáze, trezory klíčů nebo účty úložiště. Předtím, než lze kteroukoliv službu nakonfigurovat k používání těchto prostředků, musí být tyto prostředky zřízeny.
Konfigurace specifická pro prostředí: Různá prostředí (vývoj, příprava, produkční prostředí) vyžadují různé adresy URL a konfigurace koncových bodů, ale tyto hodnoty nejsou známé, dokud se zřizování nedokončí.
Principy strategií konfigurace
Azure Developer CLI zpracovává tyto vzájemné závislosti prostřednictvím dvou přístupů:
- Konfigurace nasazení: Řešení závislostí během zprovozňování a nasazení
- Konfigurace modulu runtime: Odložit konfiguraci závislostí na při spuštění aplikace
Tyto přístupy představují rozhodnutí o návrhu, která uděláte při sestavování aplikace. V závislosti na architektuře a požadavcích můžete použít výhradně jednu strategii nebo kombinovat obě strategie.
Konfigurace při nasazení
Konfigurace v době nasazení znamená, že připojení a konfigurace služby jsou určeny a zamknuty během fází azd provision a azd deploy. Pomocí tohoto přístupu nakonfigurujete služby s konkrétními adresami URL koncového bodu, připojovacími řetězci a dalšími informacemi o závislostech před spuštěním. Tato konfigurace se stane součástí prostředí nasazené služby, a to buď jako proměnné prostředí, nebo v konfiguračních souborech zabalených s nasazením.
Infrastrukturní zřizování jako první: Když spustíte azd up nebo azd provision, infrastruktura se vytvoří jako první. Tento krok vygeneruje potřebné adresy URL a připojovací řetězce před zahájením nasazení a zajistí, aby závislé služby měly potřebné informace.
Výstupní proměnné: Bicep a Terraform můžou po zřízení poskytovat výstupní hodnoty, jako jsou adresy URL a připojovací řetězce. Tyto výstupy budou dostupné jako proměnné prostředí během fáze nasazení, takže můžete nakonfigurovat služby se správnými koncovými body před jejich spuštěním.
Postupné nasazení: U složitých scénářů možná budete muset nasadit služby v určitém pořadí. Pomocí azdhooků můžete řídit sekvenci nasazení a zajistit, aby před nasazením závislých služeb byly spuštěny požadované služby.
Vzorec upsertu kontejneru: Azure Verified Modules (AVM) poskytuje vzory aplikací kontejnerů, jako je container-app-upsert, které bezproblémově fungují s dvoufázovým pracovním postupem azd. Během zřizování se vytvoří infrastruktura a počáteční kontejner. Během nasazování azd aktualizuje obraz kontejneru s aktualizovanými proměnnými prostředí, které zahrnují hodnoty generované během zřizování, jako jsou připojovací řetězce databáze nebo URL adresy služeb. Tento model vyřeší problém s kuřecím a vejcem tím, že nejprve umožní existenci infrastruktury a pak aktualizuje konfiguraci kontejneru se všemi požadovanými informacemi o závislostech.
Ukázkový pracovní postup front-endu Reactu s back-endem rozhraní API kontejneru:
- Spusťte
azd up, který postupně spouští fáze balíčku, zřizování a nasazování. - Během zřizování vytvoří Bicep infrastrukturu Azure Container Apps pomocí modulů AVM
container-app-upserta vypíše adresu URL back-endového rozhraní API. - Během nasazování
azdautomaticky upsertuje oba kontejnery se správnými proměnnými prostředí, včetně adresy URL rozhraní API pro front-end. - Obě služby začínají správnou konfigurací. Budoucí spuštění
azd upneboazd deploybudou aktualizovat kontejnery s jakýmikoli novými hodnotami konfigurace.
Konfigurace modulu runtime
Konfigurace modulu runtime umožňuje aplikacím načíst konfiguraci, když se aplikace spustí místo během nasazování. Tento přístup poskytuje flexibilitu při aktualizaci koncových bodů služby, připojovacích řetězců a zásad bez opětovného nasazení aplikace.
Zdroje konfigurace: Aplikace můžou načíst konfiguraci modulu runtime ze dvou primárních zdrojů:
Místní konfigurační soubory: Nasaďte konfigurační soubor, například
config.jsonspolečně s vaší aplikací. Aplikace načte tento soubor při spuštění, aby získala adresy URL aktuálního koncového bodu, nastavení ověřování a další konfigurační hodnoty. Tento přístup funguje dobře pro architektury na straně klienta, jako jsou React, Angular, Vue a Blazor WebAssembly, které můžou načíst konfiguraci při spuštění aplikace v prohlížeči.Cloudové služby konfigurace: Použití služby Azure App Configuration nebo podobných služeb k centrální správě konfigurace napříč všemi prostředími Aplikace dotazuje konfigurační službu při spuštění nebo na vyžádání, aby načetly aktuální hodnoty. Tento přístup je užitečný pro architektury mikroslužeb, kde více služeb potřebuje koordinované aktualizace konfigurace.
Výhody: V obou přístupech se změny konfigurace zpřístupní okamžitě bez opětovného nasazení. Aktualizujte konfigurační soubor prostřednictvím kanálu nasazení nebo změňte hodnoty ve službě Azure App Configuration prostřednictvím webu Azure Portal. Když se aplikace restartuje nebo aktualizuje její konfiguraci, převezme nové hodnoty. Tento vzor je užitečný zejména pro:
- Front-endové aplikace, které potřebují zjišťovat adresy URL back-endového rozhraní API, koncové body ověřování a umístění mikroslužeb
- Back-endové služby, které potřebují aktualizovat zásady CORS při změně front-endových adres URL
- Služby, které potřebují jinou konfiguraci v různých vývojových, přípravných a produkčních prostředích
Příklad pracovního postupu pro front-end React, který zjišťuje back-endové rozhraní API:
- Spuštěním
azd upzřiďte infrastrukturu a nasaďte obě služby. - Post-deploy hook vygeneruje
config.jsonsoubor obsahující URL adresu back-endu a nahraje ho do úložiště na front-endu. - Aplikace React načte
config.jsonpři spuštění a zjistí koncový bod rozhraní API. - Pokud chcete koncový bod později aktualizovat, upravte
config.jsonho bez opětovného nasazení front-endu.
Tento přístup nefunguje u staticky generovaných webů, kde se veškerý obsah v době sestavení předem vykresluje.
Naplánujte si pracovní postup nasazení
Při návrhu full-stack nasazení zvažte následující faktory:
- Identifikace závislostí: Namapujte, které služby potřebují informace z jiných služeb. U jednosměrných závislostí (například rozhraní API v závislosti na databázi) zpracovává zřizovací platforma (Bicep nebo Terraform) řazení automaticky. U cyklických závislostí (například u front-endových a back-endových služeb, které při spuštění potřebují adresy URL navzájem), je nutné navrhnout koordinaci pomocí strategií konfigurace pro nasazovací časy nebo pro řídicí moduly runtime.
- Zřízení před nasazením: Před nasazením kódu aplikace se ujistěte, že existuje veškerá infrastruktura.
- Použití proměnných prostředí: Předání konfigurace mezi vrstvami infrastruktury a aplikace pomocí proměnných prostředí azd
- Návrh pro více prostředí: Naplánujte, jak se konfigurace liší v různých vývojových, přípravných a produkčních prostředích.
- Zvažte pořadí nasazení: Některé scénáře můžou vyžadovat nasazení služeb v určitém pořadí.
Příkaz azd up zpracovává většinu scénářů nasazení tím, že automaticky spustí zřizování a nasazení v jednom pracovním postupu. U standardních jednoduchých aplikací tento přístup funguje dobře a vyžaduje minimální konfiguraci.
Pro složitější nasazení, jako je například kompletní stack s cyklickými závislostmi:
Nakonfigurujte pořadí služeb: V
azure.yamlsouboru definujte služby v pořadí, v jakém je chcete nasadit. I kdyžazdslužby nasazuje paralelně, můžete pomocí háků vynutit sekvenční nasazení v případě potřeby.Přizpůsobení kroků pracovního postupu: Přepište výchozí
azd uppracovní postup definováním vlastníworkflowsvlastnosti vazure.yamlsouboru. Můžete například změnit výchozí chování pro spuštění zřizování před sestavením zdrojového kódu aplikace:name: todo-nodejs-mongo metadata: template: todo-nodejs-mongo@0.0.1-beta workflows: up: steps: - azd: provision - azd: package - azd: deployTento vzor je užitečný v případě, že proces sestavení potřebuje konfigurační hodnoty, které jsou k dispozici až po dokončení zřizování.
Samostatné zřizování a nasazení: Místo použití
azd up, spusťteazd provisionaazd deployjako samostatné příkazy. Toto oddělení je užitečné, když potřebujete ověřit konfiguraci infrastruktury před nasazením kódu aplikace nebo při řešení potíží s nasazením. Infrastrukturu můžete zřídit jednou, pak nasadit a znovu nasadit kód aplikace několikrát bez opětovného zřízení.Přizpůsobení pomocí háků: Přidejte před a po háky do svého
azure.yamlsouboru pro spuštění vlastní logiky mezi fázemi zřizování a nasazení. Pomocí háků můžete naplnit konfigurační soubory, ověřit stav prostředí nebo koordinovat složité sekvence nasazení.
Osvědčené postupy
Při vytváření full-stack aplikací s azd dodržujte tyto osvědčené postupy:
- Mapujte závislosti včas: Určete, které služby během fáze návrhu potřebují informace z jiných služeb. Rozlišujte mezi jednosměrnými závislostmi, které Bicep nebo Terraform zpracovává automaticky, a cyklickými závislostmi, které vyžadují strategie konfigurace při nasazení nebo za běhu.
- Zvolte správnou strategii konfigurace: Použijte konfiguraci při nasazení pro služby, které potřebují konfiguraci zamknutou při nasazení. Použijte konfiguraci za běhu, když potřebujete flexibilitu při aktualizaci nastavení bez opětovného nasazení. Pokud je to vhodné, zkombinujte obě strategie.
-
Používejte ověřené moduly Azure (AVM): Využijte Bicep moduly Azure Verified Modules, jako jsou
container-app-upsertpro kontejnerové aplikace. Tyto vzory bezproblémově fungují sazddvoufázovým pracovním postupem pro řešení cyklických závislostí. -
Přizpůsobte pracovní postupy podle potřeby: Pro jednoduchá nasazení použijte
azd upvýchozí nastavení. V případě složitých scénářů s kruhovými závislostmi přizpůsobte vlastnostworkflowsve vašem souboruazure.yaml, abyste mohli řídit pořadí kroků balíčkování, zřízení a nasazení. - Využití konfigurace modulu runtime: Maximální flexibilita napříč prostředími umožňuje spravovat koncové body služby a nastavení, které můžete aktualizovat bez opětovného nasazení, pomocí služby Azure App Configuration nebo místních konfiguračních souborů.
- Testování napříč prostředími: Ujistěte se, že vaše strategie konfigurace funguje správně napříč vývojovými, přípravovými a produkčními prostředími, kde se liší adresy URL a konfigurace služeb.