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.
Azure Functions je služba založená na událostech a výpočetních prostředcích na vyžádání, která rozšiřuje stávající aplikační platformu Azure App Service. Přidává možnosti pro implementaci kódu aktivovaného událostmi, ke kterým dochází v Azure, v partnerské službě a v místních systémech. Pomocí služby Functions můžete vytvářet řešení, která se připojují ke zdrojům dat nebo řešením zasílání zpráv, což usnadňuje zpracování a reakci na události. Funkce běží v Azure datových centrech, která jsou složitá s mnoha integrovanými komponentami. V hostované cloudovém prostředí se očekává, že se virtuální počítače můžou občas restartovat nebo přesunout a dojde k upgradům systémů. Aplikace funkcí také pravděpodobně závisejí na externích rozhraních API, Azure Services a dalších databázích, které jsou také náchylné k pravidelné nespolehlivosti.
Tento článek podrobně popisuje některé osvědčené postupy pro navrhování a nasazování efektivních aplikací funkcí, které zůstávají v pořádku a dobře fungují v cloudovém prostředí.
Volba správného plánu hostování
Když v Azure vytvoříte aplikaci funkcí, musíte zvolit plán hostování vaší aplikace. Zvolený plán má vliv na výkon, spolehlivost a náklady. Azure Functions poskytuje následující plány hostování:
Pokud je to možné, použijte plán Flex Consumption k hostování aplikací s dynamickým škálováním.
V kontextu platformy App Service je plán Premium , který dynamicky hostuje vaše funkce, plánem Elastic Premium (EP). Další vyhrazené plány (App Service) se nazývají Premium. Další informace najdete v Azure Functions plánu Premium.
Zvolený plán hostování určuje následující chování:
- Jak se aplikace funkcí škáluje na základě poptávky a jak se spravuje přidělování instancí.
- Prostředky dostupné pro každou instanci aplikace funkcí.
- Podpora pokročilých funkcí, jako je připojení Azure Virtual Network
Další informace o výběru správného plánu hostování a podrobném porovnání plánů najdete v tématu Azure Functions možnosti hostování.
Při vytváření aplikace funkcí zvolte správný plán. Služba Functions poskytuje omezenou možnost přepnout plán hostování, a to především mezi plány Consumption a Elastic Premium. Další informace najdete v části Plánování migrace.
Správně nakonfigurovat úložiště
Funkce vyžaduje, aby byl účet úložiště přidružený k vaší aplikační funkci. Hostitel služby Functions používá připojení účtu úložiště k operacím, jako je správa triggerů a protokolování provádění funkcí. Používá se také při dynamickém škálování aplikací funkcí. Další informace najdete v části Úvahy o úložišti pro Azure Functions.
Chybně nakonfigurovaný systém souborů nebo účet úložiště ve vaší aplikaci funkcí může ovlivnit výkon a dostupnost vašich funkcí. Nápovědu k řešení potíží s nesprávně nakonfigurovaným účtem úložiště najdete v článku o řešení potíží s úložištěm .
Nastavení připojení k úložišti
Aplikace Function Apps, které se dynamicky škálují, mohou běžet buď z koncového bodu Azure Files ve vašem účtu úložiště, nebo ze souborových serverů spojených s vašimi instancemi škálování. Toto chování se řídí následujícími nastaveními aplikace:
Plán Premium a plán Consumption na Windows podporují tato nastavení. Plán Flex Consumption nevyžaduje tato nastavení a k hostování balíčků nasazení používá kontejner úložiště objektů blob místo sdílené složky Azure Files.
Když vytvoříte aplikaci funkcí na portálu Azure nebo pomocí Azure CLI nebo Azure PowerShell, vytvoříte tato nastavení pro aplikaci funkcí v případě potřeby. Při vytváření prostředků ze šablony Azure Resource Manager (šablona ARM) musíte také zahrnout WEBSITE_CONTENTAZUREFILECONNECTIONSTRING do šablony.
Při prvním nasazení pomocí šablony ARM nezahrňte WEBSITE_CONTENTSHARE, který je pro vás vygenerován.
Následující příklady šablon ARM vám pomůžou správně nakonfigurovat tato nastavení:
- Plán spotřeby
- Dedikovaný plán
- Plán Premium s integrací virtuální sítě
- Plán spotřeby s nasazovacím slotem
Důležité
Služba Azure Files v současné době nepodporuje připojení založená na identitě. Plán Flex Consumption plně podporuje spravované identity. Další informace najdete v tématu Vytvoření aplikace bez Azure Files.
Konfigurace účtu úložiště
Při vytváření aplikace funkcí musíte vytvořit nebo propojit účet pro obecné účely Azure Storage, který podporuje službu Blob, Queue a Table Storage. Funkce spoléhají na Azure Storage pro operace, jako je správa triggerů a spouštění funkcí protokolování. Připojovací řetězec účtu úložiště pro vaši funkční aplikaci najdete v nastavení aplikace AzureWebJobsStorage a WEBSITE_CONTENTAZUREFILECONNECTIONSTRING.
Při vytváření tohoto účtu úložiště mějte na paměti následující aspekty:
Pokud chcete snížit latenci, vytvořte účet úložiště ve stejné oblasti jako aplikace funkcí.
Pokud chcete zvýšit výkon v produkčním prostředí, použijte pro každou aplikaci funkcí samostatný účet úložiště. Tento aspekt platí zejména u funkcí aktivovaných službou Durable Functions a Event Hubs.
U funkcí spuštěných událostmi služby Event Hubs nepoužívejte účet s povoleným Data Lake Storage.
Zpracování velkých datových sad
Při spuštění v Linuxu můžete přidat další úložiště připojením sdílené složky. Připojení sdílené složky představuje pohodlný způsob, jak funkce zpracovat velkou existující datovou sadu. Další informace najdete v tématu Připojení sdílených složek.
Uspořádání funkcí
V rámci vašeho řešení pravděpodobně vyvíjíte a publikujete více funkcí. Tyto funkce se často kombinují do jedné aplikace funkcí, ale můžou se spouštět i v samostatných aplikacích funkcí. V hostovacích plánech Premium a Dedicated (App Service) mohou funkční aplikace také sdílet stejné prostředky tím, že běží ve stejném plánu. Způsob seskupení funkcí a aplikací funkcí může ovlivnit výkon, škálování, konfiguraci, nasazení a zabezpečení celkového řešení.
V případě plánu Consumption a Premium se všechny funkce v aplikační funkci dynamicky škálují společně.
Další informace o uspořádání funkcí najdete v tématu Osvědčené postupy organizace funkcí.
Optimalizace nasazení
Při nasazování aplikace funkcí nezapomeňte, že jednotkou nasazení funkcí v Azure je aplikace funkcí. Všechny funkce nasadíte v aplikaci funkcí současně, obvykle ze stejného balíčku pro nasazení.
Zvažte tyto možnosti úspěšného nasazení:
Spusťte funkce z balíčku pro nasazení. Tento přístup spuštění z balíčku přináší následující výhody:
- Snižuje riziko problémů s uzamčením kopírování souborů.
- Je možné nasadit přímo do produkční aplikace a neaktivuje restartování.
- Všechny soubory v balíčku jsou k dispozici pro vaši aplikaci.
- Zlepšuje výkon nasazení šablon ARM.
- Může snížit čas spuštění za studena, zejména pro JavaScriptové funkce s velkými npm balíčkovými stromy.
Zvažte použití průběžného nasazování pro připojení nasazení k řešení správy zdrojového kódu. Průběžná nasazení také umožňují spuštění z balíčku nasazení.
U hostování na plánu Premium zvažte přidání triggeru pro zahřátí, aby se snížila latence při přidání nových instancí. Další informace najdete v tématu Azure Functions aktivační událost pro přípravu.
Pokud chcete minimalizovat výpadky nasazení, použijte sloty nasazení pro plány Consumption, Premium a Dedicated. Nebo nakonfigurujte kumulativní aktualizace pro nasazení s nulovými výpadky v plánu Flex Consumption. Další informace najdete v tématech Azure Functions nasazovací sloty a strategie aktualizace stránek ve službě Flex Consumption.
Psaní robustních funkcí
Dodržujte principy návrhu, které pomáhají s obecným výkonem a dostupností vašich funkcí. Mezi tyto principy patří:
- Vyhněte se dlouhotrvajícím funkcím
- Plánování komunikace mezi funkcemi
- Zápis funkcí, které mají být bezstavové
- Psaní defenzivních funkcí
V cloud computingu jsou běžná přechodná selhání, takže při přístupu ke cloudovým prostředkům použijte vzor opakování . Mnoho triggerů a vazeb již implementuje opakování.
Upřednostněte testování integrace průběžným testováním vašich funkcí v kontextu celé aplikace a v kanálech automatizace sestavení.
Navrhování s důrazem na zabezpečení
Zvažte zabezpečení během fáze plánování, ne po dokončení připravenosti vašich funkcí. Další informace najdete v tématu Sekuring Azure Functions.
Zvažte souběžnost
Když se kvůli příchozím událostem zvyšuje poptávka na vaši aplikaci funkcí, plány typu Consumption a Premium škálují aplikace funkcí na více instancí. Je důležité pochopit, jak vaše funkční aplikace reaguje na zátěž a jak lze triggery konfigurovat pro zpracovávání příchozích událostí. Obecný přehled najdete v tématu Uventované škálování v Azure Functions.
Vyhrazené plány (App Service) vyžadují, abyste zajistili škálování pro funkční aplikace.
Počet pracovních procesů
V některých případech je efektivnější zvládat zatížení vytvořením více procesů, označovaných jako jazykové pracovní procesy, v instanci před škálováním. Nastavení FUNCTIONS_WORKER_PROCESS_COUNT řídí maximální povolený počet jazykových pracovních procesů. Výchozí hodnota pro toto nastavení je 1, což znamená, že se nepoužívá více procesů. Po dosažení maximálního počtu procesů se aplikace funkcí škáluje na více instancí, aby zvládla zatížení. Toto nastavení se nevztahuje na funkce knihovny tříd jazyka C#, které se spouští v hostitelském procesu.
Pokud používáte FUNCTIONS_WORKER_PROCESS_COUNT na plánu Premium nebo plánu Dedicated (App Service), zvažte počet jader, které váš plán poskytuje. Plán Premium EP2 například poskytuje dvě jádra, takže byste měli začít s hodnotou 2 a podle potřeby zvýšit o dvě až na maximum.
Konfigurace triggeru
Při plánování propustnosti a škálování zjistěte, jak různé typy triggerů zpracovávají události. Některé spouštěče poskytují kontrolu nad funkcemi dávkování a souběžností. Úprava těchto hodnot může pomoci každé instanci odpovídajícím způsobem škálovat podle požadavků vyvolaných funkcí. Tyto možnosti konfigurace použijete pro všechny triggery v aplikaci funkcí a udržujete je v souboru host.json aplikace. Podrobnosti o nastavení najdete v části Konfigurace konkrétního odkazu na aktivační událost.
Další informace o tom, jak Functions zpracovává streamy zpráv, najdete v tématu Azure Functions spolehlivé zpracování událostí.
Plánování připojení
Limity připojení platí pro aplikace funkcí spuštěné v plánu Consumption. Tato omezení platí pro každou instanci. Vzhledem k těmto limitům a jako obecně osvědčený postup optimalizujte odchozí připojení, která vaše funkce používá. Další informace najdete v tématu Spravování připojení v Azure Functions.
Aspekty specifické pro jazyk
Pro jazyk, který si zvolíte, mějte na paměti následující aspekty:
Používejte asynchronní kód, ale vyhněte se blokování volání.
Používejte tokeny zrušení (pouze v rámci procesu).
Maximalizace dostupnosti
Studený start je klíčovým aspektem bezserverových architektur. Další informace najdete v tématu Chladné starty. Pokud je pro váš scénář problém studený start, přečtěte si téma Principy bezserverového studeného startu.
Plány Flex Consumption a Premium se doporučují ke snížení studených startů při zachování dynamického škálování. Pomocí následujících doprovodných materiálů snižte počet studených startů a vylepšete dostupnost ve všech plánech hostování.
| Plánování | Pokyny |
|---|---|
| Plán Flex Consumption | • Používejte vždy připravené instance k udržování spuštěných instancí. • Nastavit vždy připravené počty instancí |
| Plán Premium | • Implementujte warmup trigger ve vaší funkční aplikaci • Nastavte hodnoty pro instance Always-Ready a maximální limit nárazového nárůstu. • Použití podpory triggerů virtuální sítě při použití triggerů mimo protokol HTTP ve virtuální síti |
| Vyhrazené programy | • Spusťte alespoň dvě instance s povolenou kontrolou stavu Azure App Service • Implementace automatického škálování |
| Plán spotřeby | • Zkontrolujte své použití vzorů Singleton a nastavení souběžnosti pro vazby a triggery, abyste se vyhnuli umělému nastavení limitů pro škálování vaší funkční aplikace. • Zkontrolujte functionAppScaleLimit nastavení, které může omezit škálování.• Zkontrolujte limit denní kvóty využití (GB-s) nastavený během vývoje a testování. Zvažte odebrání tohoto limitu v produkčních prostředích. |
Efektivní monitorování
Azure Functions nabízí integrovanou integraci s Aplikace Azure Insights pro monitorování spouštění a trasování funkcí napsaných z kódu. Další informace najdete v tématu Monitorování výkonů v Azure Functions. Azure Monitor také poskytuje zařízení pro monitorování stavu samotné aplikace funkcí. Další informace najdete v tématu Monitor Azure Functions.
Při monitorování funkcí mějte na paměti následující aspekty při použití integrace Application Insights:
Odeberte nastavení aplikace AzureWebJobsDashboard . Toto nastavení bylo podporováno ve starších verzích funkcí. Odebrání
AzureWebJobsDashboardzlepšuje výkon vašich funkcí.Projděte si protokoly Application Insights. Pokud chybí data, která očekáváte najít, zvažte úpravu nastavení vzorkování, abyste lépe zachytili váš scénář monitorování.
excludedTypesPomocí nastavení můžete vyloučit určité typy z vzorkování, napříkladRequestneboException. Další informace najdete v tématu Konfigurace vzorkování.
Azure Functions také umožňuje odeslat systémové a uživatelské záznamy do Azure Monitor Logů. Integrace s Azure Monitor Logs je momentálně ve verzi Preview.
Zabudovat redundanci
Vaše obchodní potřeby můžou vyžadovat, aby vaše funkce byly vždy dostupné i během výpadku datového centra. Informace o používání víceregionálního přístupu k nepřetržitému provozu důležitých funkcí najdete v tématu Spolehlivost v Azure Functions.