Osvědčené postupy pro spolehlivé služby Azure Functions

Azure Functions je prostředí založené na událostech na vyžádání, které rozšiřuje stávající aplikační platformu služby Aplikace Azure service s možnostmi implementace kódu aktivovaného událostmi, ke kterým dochází v Azure, ve službě třetích stran a v místních systémech. Funkce umožňují vytvářet řešení připojením ke zdrojům dat nebo řešením pro zasílání zpráv, což usnadňuje zpracování a reakci na události. Funkce běží v datových centrech Azure, která jsou složitá s mnoha integrovanými komponentami. V hostované cloudovém prostředí se předpokládá, že virtuální počítače se 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, službách Azure 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í

Při vytváření aplikace funkcí v Azure musíte zvolit plán hostování vaší aplikace. Zvolený plán má vliv na výkon, spolehlivost a náklady. Toto jsou plány hostování poskytované službou Azure Functions:

Důležité

Plán Flex Consumption je aktuálně ve verzi Preview.

V kontextu platformy Služby App Service je plán Premium používaný k dynamickému hostování vašich funkcí plánem Elastic Premium (EP). Existují další plány Dedicated (App Service), které se nazývají Premium. Další informace najdete v článku o plánu Premium.

Zvolený plán hostování určuje následující chování:

  • Způsob škálování aplikace funkcí na základě poptávky a způsobu, jakým 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í k virtuální síti Azure.

Další informace o výběru správného plánu hostování a podrobném porovnání plánů najdete v tématu Možnosti hostování služby Azure Functions.

Při vytváření aplikace funkcí je důležité zvolit 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 tématu Plánování migrace.

Správně nakonfigurovat úložiště

Funkce vyžadují, aby byl účet úložiště přidružený k vaší aplikaci funkcí. Připojení účtu úložiště používá hostitel služby Functions k operacím, jako je správa triggerů a spouštění funkcí protokolování. Používá se také při dynamickém škálování aplikací funkcí. Další informace najdete v tématu Aspekty úložiště 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 funkcí, které se škálují dynamicky, můžou běžet buď z koncového bodu služby Azure Files ve vašem účtu úložiště, nebo ze souborových serverů přidružených k vašim instancím se škálováním na více instancí. Toto chování se řídí následujícími nastaveními aplikace:

Tato nastavení se podporují jenom v případech, kdy používáte plán Premium nebo plán Consumption ve Windows.

Když vytvoříte aplikaci funkcí na webu Azure Portal nebo pomocí Azure CLI nebo Azure PowerShellu, vytvoří se tato nastavení pro vaši aplikaci funkcí v případě potřeby. Při vytváření prostředků ze šablony Azure Resource Manageru (šablona ARM) musíte do šablony zahrnout WEBSITE_CONTENTAZUREFILECONNECTIONSTRING také.

Při prvním nasazení pomocí šablony ARM nezahrňte WEBSITE_CONTENTSHARE, která se pro vás vygeneruje.

Následující příklady šablon ARM vám pomůžou správně nakonfigurovat tato nastavení:

Konfigurace účtu úložiště

Když vytváříte aplikaci funkcí, musíte vytvořit nebo propojit účet služby Azure Storage pro obecné účely, který podporuje služby Blob Storage, Queue Storage a Table Storage. Funkce spoléhají na Službu Azure Storage pro operace, jako je správa triggerů a spouštění funkcí protokolování. Účet úložiště připojovací řetězec pro vaši aplikaci funkcí se nachází v AzureWebJobsStorage nastavení aplikace a WEBSITE_CONTENTAZUREFILECONNECTIONSTRING v nastavení aplikace.

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ě. To platí zejména u funkcí aktivovaných službou Durable Functions a centrem událostí.

  • U aktivovaných funkcí centra událostí nepoužívejte účet s povolenou službou 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 plánech hostování Premium a Dedicated (App Service) může několik aplikací funkcí také sdílet stejné prostředky spuštěním ve stejném plánu. Způsob seskupení funkcí a aplikací funkcí může mít vliv na 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 aplikaci funkcí 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í je důležité mít na paměti, že jednotkou nasazení funkcí v Azure je aplikace funkcí. Všechny funkce v aplikaci funkcí se nasazují 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í. Toto spuštění z přístupu k balíčkům 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, která aktivuje restartování.
    • Víme, že všechny soubory v balíčku jsou k dispozici pro vaši aplikaci.
    • Zlepšuje výkon nasazení šablon ARM.
    • Může zkrátit dobu studeného spuštění, zejména pro funkce JavaScriptu s velkými stromy balíčků npm.
  • 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í spouštět z balíčku nasazení.

  • U hostování plánů Premium zvažte přidání triggeru pro přípravu, aby se snížila latence při přidání nových instancí. Další informace najdete v tématu Trigger pro přípravu služby Azure Functions.

  • Pokud chcete minimalizovat výpadky nasazení a umožnit vrácení nasazení zpět, zvažte použití slotů nasazení. Další informace najdete v tématu Sloty nasazení azure Functions.

Psaní robustních funkcí

Při psaní kódu funkce můžete sledovat několik principů návrhu, které pomáhají s obecným výkonem a dostupností funkcí. Mezi tyto principy patří:

Vzhledem k tomu, že v cloud computingu jsou běžná přechodná selhání, měli byste při přístupu ke cloudovým prostředkům použít vzor opakování. Mnoho triggerů a vazeb již implementuje opakování.

Navrhování s důrazem na zabezpečení

Zabezpečení se nejlépe považuje za fázi plánování, a ne po tom, co jsou vaše funkce připravené k přechodu. Informace o tom, jak bezpečně vyvíjet a nasazovat funkce, najdete v tématu Zabezpečení azure Functions.

Zvažte souběžnost

Vzhledem k tomu, že poptávka vychází z vaší aplikace funkcí v důsledku příchozích událostí, aplikace funkcí běžící v plánech Consumption a Premium se škálují na více instancí. Je důležité pochopit, jak vaše aplikace funkcí reaguje na načtení a jak se triggery dají nakonfigurovat tak, aby zpracovávaly příchozí události. Obecný přehled najdete v tématu Škálování řízené událostmi ve službě Azure Functions.

Vyhrazené plány (App Service) vyžadují, abyste zajistili horizontální navýšení kapacity aplikací funkcí.

Počet pracovních procesů

V některých případech je efektivnější zpracovat zatížení vytvořením více procesů, označovaných jako procesy pracovních procesů jazyka, v instanci před horizontálním navýšením kapacity. Maximální povolený počet povolených jazykových procesů je řízen nastavením FUNCTIONS_WORKER_PROCESS_COUNT . 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.

Při použití FUNCTIONS_WORKER_PROCESS_COUNT plánu Premium nebo plánu Dedicated (App Service) mějte na paměti počet jader poskytovaných vaším plánem. 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í je důležité pochopit, jak různé typy triggerů zpracovávají události. Některé triggery umožňují řídit chování dávkování a spravovat souběžnost. Často úpravou hodnot v těchto možnostech může každá instance odpovídajícím způsobem škálovat podle požadavků vyvolaných funkcí. Tyto možnosti konfigurace se použijí pro všechny triggery v aplikaci funkcí a uchovávají se 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 Spolehlivé zpracování událostí ve službě Azure Functions.

Plánování připojení

Aplikace funkcí spuštěné v plánu Consumption podléhají omezením připojení. Tato omezení se vynucují pro jednotlivé instance. Vzhledem k těmto limitům a obecně osvědčeným postupem byste měli optimalizovat odchozí připojení z kódu funkce. Další informace najdete v tématu Správa připojení ve službě Azure Functions.

Aspekty specifické pro jazyk

Pro jazyk, který si zvolíte, mějte na paměti následující aspekty:

Maximalizace dostupnosti

Studený start je klíčovým aspektem bezserverových architektur. Další informace najdete v tématu Začátek studená verze. Pokud je pro váš scénář problém studený start, najdete podrobnější informace v příspěvku Principy bezserverového studeného startu .

Plán Premium je doporučeným plánem pro snížení chladu při zachování dynamického škálování. Následující doprovodné materiály můžete použít ke snížení počtu studených startů a zlepšení dostupnosti ve všech třech plánech hostování.

Plánování Pokyny
Plán Premium Implementace triggeru warmup ve vaší aplikaci funkcí
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é plány Spusťte alespoň na dvou instancích s povolenou kontrolou stavu služby Aplikace Azure
Implementace automatického škálování
Plán Consumption • Zkontrolujte své použití vzorů Singleton a nastavení souběžnosti pro vazby a triggery, abyste se vyhnuli uměle umisťování limitů, jak se vaše aplikace funkcí škáluje.
Zkontrolujte functionAppScaleLimit nastavení, které může omezit horizontální navýšení kapacity.
• 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 Přehledy pro monitorování spouštění a trasování funkcí napsaných z kódu. Další informace najdete v tématu Monitorování azure Functions. Azure Monitor také poskytuje zařízení pro monitorování stavu samotné aplikace funkcí. Další informace najdete v tématu Monitorování pomocí služby Azure Monitor.

Při použití integrace Přehledy aplikací k monitorování funkcí byste měli vědět následující aspekty:

  • Ujistěte se, že je odebráno nastavení aplikace AzureWebJobsDashboard . Toto nastavení bylo podporováno ve starší verzi služby Functions. Pokud existuje, odebrání AzureWebJobsDashboard zvyšuje výkon vašich funkcí.

  • Zkontrolujte protokoly Přehledy aplikace. Pokud data, která očekáváte, že chybí, zvažte úpravu nastavení vzorkování, aby lépe zachytila váš scénář monitorování. Toto excludedTypes nastavení můžete použít k vyloučení určitých typů z vzorkování, například Request .Exception Další informace najdete v tématu Konfigurace vzorkování.

Azure Functions také umožňuje odesílat systémem generované a uživatelem generované protokoly do protokolů služby Azure Monitor. Integrace s protokoly služby Azure Monitor je aktuálně ve verzi Preview.

Sestavení v 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 tom, jak používat víceregionální přístup k udržování důležitých funkcí vždy spuštěných, najdete v tématu Geografické zotavení po havárii a vysoká dostupnost azure Functions.

Další kroky

Správa aplikace funkcí