Osvědčené postupy pro spolehlivé Azure Functions

Azure Functions je výpočetní prostředí řízené událostmi na vyžádání, které rozšiřuje stávající aplikační platformu Azure App Service o možnosti implementace kódu aktivovaného událostmi 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í událostí a reakci na ně. Služba Functions běží v datových centrech Azure, která jsou složitá s mnoha integrovanými komponentami. V hostovaném cloudovém prostředí se očekává, že virtuální počítače se můžou občas restartovat nebo přesunout a dojde k upgradu systémů. Vaše 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ému nespolehlivosti.

Tento článek podrobně popisuje některé osvědčené postupy pro návrh a nasazení efektivních aplikací funkcí, které zůstávají v dobrém stavu a dobře fungují v cloudovém prostředí.

Volba správného plánu hostování

Když vytváříte aplikaci funkcí v Azure, musíte pro svou aplikaci zvolit plán hostování. Plán, který zvolíte, má vliv na výkon, spolehlivost a náklady. Pro službu Functions jsou k dispozici tři základní plány hostování:

Všechny plány hostování jsou obecně dostupné (GA) v Linuxu nebo Windows.

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

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

  • Jak se vaše 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é porovnání plánů najdete v tématu Azure Functions možnosti hostování.

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í, především mezi plány Consumption a Elastic Premium. Další informace najdete v tématu Plánování migrace.

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

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

Tato nastavení jsou podporovaná jenom v případě, že používáte plán Premium nebo Plán Consumption ve Windows.

Když vytvoříte aplikaci funkcí v Azure Portal nebo pomocí Azure CLI nebo Azure PowerShell, vytvoří se tato nastavení pro vaši aplikaci funkcí v případě potřeby. Když vytváříte prostředky ze šablony Azure Resource Manager (šablony ARM), musíte je do šablony zahrnout WEBSITE_CONTENTAZUREFILECONNECTIONSTRING také.

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

Ke správné konfiguraci těchto nastavení můžete použít následující příklady šablon ARM:

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. Služba Functions spoléhá na Azure Storage pro operace, jako je správa triggerů a protokolování spuštění funkcí. Připojovací řetězec účtu úložiště pro vaši aplikaci funkcí najdete v AzureWebJobsStorage nastavení aplikace a WEBSITE_CONTENTAZUREFILECONNECTIONSTRING .

Při vytváření tohoto účtu úložiště mějte na paměti následující skutečnosti:

  • 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 Durable Functions a centra událostí.

  • U funkcí aktivovaných centrem událostí 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řidáním sdílené složky přidat další úložiště. Připojení sdílené složky představuje pohodlný způsob, jak může funkce zpracovat velkou existující datovou sadu. Další informace najdete v tématu Připojení sdílených složek.

Uspořádání funkcí

Jako součást řešení pravděpodobně vyvíjíte a publikujete více funkcí. Tyto funkce se často kombinují do jedné aplikace funkcí, ale dají se spustit 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 ovlivnit výkon, škálování, konfiguraci, nasazení a zabezpečení vašeho celkového řešení.

U plánů Consumption a Premium se všechny funkce v aplikaci funkcí dynamicky škálují dohromady.

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í ve stejnou dobu, obvykle ze stejného balíčku pro nasazení.

Pro úspěšné nasazení zvažte tyto možnosti:

  • Nechte své funkce spouštět z balíčku pro nasazení. Toto 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ů.
    • Dá se nasadit přímo do produkční aplikace, která aktivuje restartování.
    • Mějte na to, že všechny soubory v balíčku jsou dostupné pro vaši aplikaci.
    • Zlepšuje výkon nasazení šablon ARM.
    • Může zkrátit časy studeného spuštění, zejména u javascriptových funkcí s velkými stromy balíčků npm.
  • Zvažte použití průběžného nasazování pro připojení nasazení k vašemu řešení správy zdrojového kódu. Průběžné nasazování také umožňují spouštět z balíčku pro nasazení.

  • V případě hostování plánu Premium zvažte přidání triggeru pro přípravu, který sníží latenci při přidávání nových instancí. Další informace najdete v tématu Azure Functions triggeru pro přípravu.

  • Pokud chcete minimalizovat výpadky nasazení a mít možnost vrátit zpět nasazení, zvažte použití slotů nasazení. Další informace najdete v tématu Azure Functions sloty nasazení.

Psaní robustních funkcí

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

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

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

Zabezpečení je nejlepší zvážit během fáze plánování, a ne až poté, co jsou vaše funkce připravené. 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 v důsledku příchozích událostí bude vaše aplikace funkcí navazovat na poptávku, aplikace funkcí spuštěné 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 zatížení a jak je možné nakonfigurovat triggery pro zpracování příchozích událostí. Obecný přehled najdete v tématu Škálování řízené událostmi v Azure Functions.

Vyhrazené (App Service) plány 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ší zvládnout zatížení tím, že v instanci před horizontálním navýšením kapacity vytvoříte několik procesů, označovaných jako procesy pracovních procesů jazyka. Maximální povolený počet jazykových pracovní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 s plánem Premium nebo vyhrazeným plánem (App Service) mějte na paměti počet jader poskytovaných vaším plánem. Například plán EP2 Premium poskytuje dvě jádra, takže byste měli začít s hodnotou 2 a podle potřeby navýšit o dvě, až do maxima.

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. Úprava hodnot v těchto možnostech může často pomoct každé instanci škálovat odpovídajícím způsobem podle požadavků vyvolaných funkcí. Tyto možnosti konfigurace se použijí u všech triggerů v aplikaci funkcí a uchovávají se v souboru host.json pro aplikaci. Podrobnosti o nastavení najdete v části Konfigurace v referenčních informacích ke konkrétnímu triggeru.

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í

Na aplikace funkcí spuštěné v plánu Consumption se vztahují omezení připojení. Tato omezení se vynucují na základě jednotlivých instancí. Vzhledem k těmto omezení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í v Azure Functions.

Důležité informace týkající se jazyka

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

Maximalizace dostupnosti

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

Plán Premium je doporučený plán pro omezení studených startů 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 v aplikaci funkcí
Nastavte hodnoty pro Always-Ready instancí a limit maximálního nárazu.
Použití podpory triggerů virtuální sítě při použití triggerů jiných než HTTP ve virtuální síti
Vyhrazené plány Spustit alespoň na dvou instancích s povolenou kontrolou stavu Azure App Service
Implementace automatického škálování
Plán Consumption • Zkontrolujte, jak používáte jednoúčelové vzory a nastavení souběžnosti pro vazby a triggery, abyste se vyhnuli umělému omezování škálování vaší aplikace funkcí.
Zkontrolujte functionAppScaleLimit nastavení, které může omezit horizontální navýšení kapacity.
• Během vývoje a testování zkontrolujte, jestli je nastavený limit denní kvóty využití (GB-sec). 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í funkcí a trasování 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í Azure Monitoru.

Při použití integrace Application Insights k monitorování funkcí byste měli vědět o následujících aspektech:

  • Ujistěte se, že je odebráno nastavení aplikace AzureWebJobsDashboard . Toto nastavení bylo podporováno ve starších verzích functions. Pokud existuje, odebrání AzureWebJobsDashboard zvýší výkon vašich funkcí.

  • Projděte si protokoly Application Insights. Pokud data, která očekáváte, chybí, zvažte úpravu nastavení vzorkování, abyste lépe zachytili scénář monitorování. Nastavení můžete použít excludedTypes k vyloučení určitých typů z vzorkování, například Request nebo 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 v současné době ve verzi Preview.

Redundance sestavení

Vaše obchodní potřeby můžou vyžadovat, aby vaše funkce byly vždy dostupné, a to i během výpadku datového centra. Informace o tom, jak používat přístup založený na více oblastech, aby vaše důležité funkce byly vždy spuštěné, najdete v tématu Azure Functions zotavení po geografické havárii a vysoká dostupnost.

Další kroky

Správa aplikace funkcí