Sdílet prostřednictvím


Využití bezserverových funkcí

Tip

Tento obsah je výňatek z eBooku, Architekting Cloud Native .NET Applications for Azure, který je k dispozici na webu Docs pro .NET nebo jako soubor PDF zdarma ke stažení, který si můžete přečíst offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Ve spektru od správy fyzických počítačů až po využívání cloudových funkcí žije bezserverová architektura na extrémním konci. Jedinou zodpovědností je váš kód a platíte pouze při spuštění kódu. Azure Functions poskytuje způsob, jak do aplikací nativních pro cloud vytvářet bezserverové funkce.

Co je bezserverová?

Bezserverová architektura je relativně nový model služby cloud computingu. Neznamená to, že servery jsou volitelné – váš kód stále běží na serveru někde. Rozdíl spočívá v tom, že se tým aplikací už nezabíná správou serverové infrastruktury. Místo toho dodavatel cloudu tuto odpovědnost vlastní. Vývojový tým zvyšuje svou produktivitu tím, že poskytuje firemní řešení zákazníkům, nikoli instalatérům.

Bezserverová architektura používá k hostování služeb bezstavové kontejnery aktivované událostmi. Kapacitu můžou škálovat na více instancí a vyhovět poptávce podle potřeby. Bezserverové platformy, jako je Azure Functions, mají úzkou integraci s dalšími službami Azure, jako jsou fronty, události a úložiště.

Jaké problémy řeší bezserverová aplikace?

Bezserverové platformy řeší mnoho časově náročných a nákladných problémů:

  • Nákup počítačů a softwarových licencí
  • Bydlení, zabezpečení, konfigurace a údržba počítačů a jejich sítě, napájení a požadavků na A/C
  • Opravy a upgrade operačních systémů a softwaru
  • Konfigurace webových serverů nebo služeb počítačů pro hostování aplikačního softwaru
  • Konfigurace aplikačního softwaru v rámci své platformy

Mnoho společností přiděluje velké rozpočty na podporu hardwarové infrastruktury. Přechod do cloudu může pomoct snížit tyto náklady; přesun aplikací na bezserverovou aplikaci může pomoct je eliminovat.

Jaký je rozdíl mezi mikroslužbou a bezserverovou funkcí?

Mikroslužba obvykle zapouzdřuje obchodní funkce, například nákupní košík pro web online elektronického obchodování. Zpřístupňuje více operací, které uživateli umožňují spravovat své nákupní prostředí. Funkce je však malý, jednoduchý blok kódu, který spouští jednu účelovou operaci v reakci na událost. Mikroslužby se obvykle vytvářejí tak, aby reagovaly na požadavky, často z rozhraní. Požadavky můžou být založené na protokolu HTTP Rest nebo gRPC. Bezserverové služby reagují na události. Její architektura řízená událostmi je ideální pro zpracování krátkých úloh na pozadí.

Jaké scénáře jsou vhodné pro bezserverovou architekturu?

Bezserverová zpřístupňuje jednotlivé krátkodobé funkce, které jsou vyvolány v reakci na trigger. Díky tomu jsou ideální pro zpracování úloh na pozadí.

Aplikace může potřebovat odeslat e-mail jako krok v pracovním postupu. Místo odeslání oznámení v rámci požadavku mikroslužby umístěte podrobnosti zprávy do fronty. Funkce Azure Může zprávu vyřadit z fronty a asynchronně odeslat e-mail. To by mohlo zlepšit výkon a škálovatelnost mikroslužby. Vyrovnávání zatížení na základě front je možné implementovat, aby nedocházelo k kritickým bodům souvisejícím s odesíláním e-mailů. Kromě toho by se tato samostatná služba dala znovu použít jako nástroj v mnoha různých aplikacích.

Asynchronní zasílání zpráv z front a témat je běžný vzor pro aktivaci bezserverových funkcí. Funkce Azure Functions ale můžou aktivovat jiné události, jako jsou změny ve službě Azure Blob Storage. Služba, která podporuje nahrávání obrázků, může mít funkci Azure Functions zodpovědnou za optimalizaci velikosti image. Funkci je možné aktivovat přímo vložením do služby Azure Blob Storage, což snižuje složitost operací mikroslužeb.

Mnoho služeb má v rámci svých pracovních postupů dlouhotrvající procesy. Tyto úlohy se často provádějí jako součást interakce uživatele s aplikací. Tyto úlohy můžou vynutit, aby uživatel čekal a negativně ovlivnil své zkušenosti. Bezserverová architektura poskytuje skvělý způsob, jak přesunout pomalejší úlohy mimo smyčku interakce uživatele. Tyto úlohy se můžou škálovat podle poptávky, aniž by bylo nutné škálovat celou aplikaci.

Kdy byste se měli vyhnout bezserverové?

Bezserverová řešení zřizují a škáluje na vyžádání. Při vyvolání nové instance jsou běžné problémy se spuštěním studené verze. Studený start je doba, po které trvá zřízení této instance. Obvykle může být toto zpoždění několik sekund, ale může být delší v závislosti na různých faktorech. Po zřízení se jedna instance udržuje naživu, pokud přijímá pravidelné požadavky. Pokud se ale služba volá méně často, Azure ji může odebrat z paměti a při opětovném vyvolání vyžadovat studený start. Při horizontálním navýšení kapacity funkce na novou instanci se vyžaduje také studená spuštění.

Obrázek 3-9 znázorňuje vzor studeného startu. Všimněte si dodatečných kroků potřebných v případě, že je aplikace studená.

Cold versus warm startObrázek 3–9 Studený start versus teplý start.

Abyste se vyhnuli úplně studeným startům, můžete přejít z plánu consumption na vyhrazený plán. Můžete také nakonfigurovat jednu nebo více předem připravených instancí s upgradem plánu Premium. V těchto případech, když potřebujete přidat další instanci, je už vy a připravená k přechodu. Tyto možnosti můžou pomoct zmírnit problém se studeným startem spojený s bezserverovou architekturou.

Poskytovatelé cloudu účtují bezserverové služby na základě doby provádění výpočetních prostředků a spotřebované paměti. Dlouhotrvající operace nebo úlohy s vysokým využitím paměti nejsou vždy nejlepšími kandidáty pro bezserverovou architekturu. Bezserverové funkce upřednostňují malé bloky práce, které se dají rychle dokončit. Většina bezserverových platforem vyžaduje, aby se jednotlivé funkce dokončily během několika minut. Azure Functions ve výchozím nastavení používá 5minutový časový limit, který je možné nakonfigurovat až 10 minut. Plán Azure Functions Premium může tento problém zmírnit i výchozí časový limit 30 minut s nevázaným vyšším limitem, který je možné nakonfigurovat. Výpočetní čas není kalendářní čas. Pokročilejší funkce využívající architekturu Azure Durable Functions můžou během několika dnů pozastavit provádění. Fakturace vychází ze skutečné doby provádění – když se funkce probudí a obnoví zpracování.

Využití Azure Functions pro úlohy aplikací navíc zvyšuje složitost. Je rozumné nejprve navrhnout aplikaci modulárním, volně propojeným designem. Pak určete, jestli bezserverové výhody nabízejí výhody, které by ospravedlňovaly další složitost.