Sdílet prostřednictvím


Doporučení pro vývoj úloh na pozadí

Platí pro toto doporučení kontrolního seznamu spolehlivosti pro Well-Architected Power Platform:

RE:05 Posilte odolnost své úlohy implementací zpracování chyb a přechodných poruch. Zabudujte do řešení možnosti pro řešení selhání součástí a přechodných chyb.

Tato příručka popisuje doporučení pro vývoj úloh na pozadí. Úlohy na pozadí se spouštějí automaticky bez nutnosti zásahu uživatele. Mnoho aplikací vyžaduje úlohy na pozadí, které běží nezávisle na uživatelském rozhraní (UI).

Některé příklady úloh na pozadí zahrnují dávkové úlohy, intenzivní úlohy zpracování a dlouhotrvající procesy, jako jsou pracovní postupy. Aplikace spustí úlohu a zpracuje interaktivní požadavky od uživatelů.

Aplikace může například potřebovat vygenerovat souhrn a extrahovat sentiment a klíčové body z dokumentů, které uživatelé nahrávají. Pro spuštění akcí AI a uložení souhrnu a klíčových bodů do databáze lze provést úlohu na pozadí. Uživatel nemusí čekat na dokončení procesu. Jako další příklad může uživatel odeslat žádost o výdaje, která spustí pracovní postup na pozadí, který zpracuje žádost o výdaje a odešle ji ke schválení. Uživatel může pokračovat v podávání další žádosti o výdaje nebo opustit aplikaci, zatímco úloha na pozadí běží. Po dokončení úlohy na pozadí odešle uživateli e-mail s potvrzením, že žádost o výdaje byla odeslána ke schválení.

Úlohy na pozadí pomáhají minimalizovat zatížení uživatelského rozhraní aplikace, což zlepšuje dostupnost a zkracuje dobu interaktivní odezvy.

Klíčové strategie návrhu

Chcete-li vybrat, kterou úlohu chcete označit jako úlohu na pozadí, zvažte, zda se úloha spouští bez interakce uživatele a zda uživatelské rozhraní musí čekat na dokončení úlohy. Úlohy, které vyžadují, aby uživatel nebo uživatelské rozhraní čekali na jejich spuštění, obvykle nejsou vhodné úlohy na pozadí.

Typy úloh na pozadí

Některé příklady úloh na pozadí jsou:

  • Úlohy náročné na zdroje, jejichž dokončení trvá dlouho, jako je například provádění série transakcí.

  • Dávkové úlohy, jako jsou noční aktualizace dat nebo plánované zpracování.

  • Dlouhotrvající pracovní postupy, jako je plnění objednávek nebo poskytování služeb a systémů.

  • Pracovní postupy, které vyžadují asynchronní spolupráci, jako je schvalování.

  • Zpracování citlivých dat, které přenese úkol na bezpečnější místo pro zpracování. Například možná nebudete chtít zpracovávat citlivá data v rámci webové aplikace. Místo toho můžete použít vzor, jako je Vzor gatekeeper k přenosu dat do izolovaného procesu na pozadí, který má přístup k chráněnému úložišti.

Spouštěče

Spusťte úlohy na pozadí pomocí:

Spouštěče řízené událostmi

Akce spustí vyvolání řízené událostmi, které spustí úlohu na pozadí. Mezi příklady triggerů řízených událostí patří:

  • Uživatelské rozhraní nebo jiná úloha spustí úlohu na pozadí a předá data z provedené akce do úlohy na pozadí. Uživatel například odešle žádost o výdaje prostřednictvím formuláře a údaje formuláře jsou předány úloze na pozadí ke zpracování.

  • Uživatelské rozhraní nebo jiná úloha uloží nebo aktualizuje hodnotu, která je v úložišti. Úloha na pozadí monitoruje úložiště a zjišťuje změny, jako jsou přidávání nových hodnot nebo upravování stávajících hodnot, a na základě této změny spouští úlohu na pozadí.

  • Uživatelské rozhraní nebo jiná úloha odešle požadavek na koncový bod, jako je HTTPS URI nebo API, které je vystaveno jako webová služba. V rámci požadavku uživatelské rozhraní nebo úloha přenese data, která úloha na pozadí vyžaduje. Koncový bod nebo webová služba vyvolá úlohu na pozadí, která použije data jako svůj vstup.

Mezi další příklady triggerů řízených událostmi patří formulář odeslaný v aplikaci, přidání nového řádku do úložiště dat, aktivační fráze v agent zahajující téma, které volá tok, hodnota pole měnícího se v úložišti dat, e-mail s konkrétním předmětem nebo od konkrétního odesílatele přicházející do doručené pošty, a soubor, který se nahrává do umístění úložiště souborů.

Použijte spouštěcí podmínky ke zefektivnění vašich pracovních postupů a snížení počtu zbytečných spuštění. Spouštěcí podmínky nastavují více podmínek, které musí být splněny před spuštěním pracovního postupu.

Poznámka:

Pokud v rámci pracovního postupu změníte zdroj dat, který pracovní postup spouští, ujistěte se, že používáte spouštěcí podmínky, abyste zabránili nekonečným smyčkám. Aplikace může například změnit pole v řádku tabulky Microsoft Dataverse a pracovní postup provede další dotazy na základě těchto změněných polí a dále upraví stejný řádek. Spouštěcí podmínky použijte ke spuštění pracovního postupu pouze v případě, že jsou aktualizována pole, která jsou změněna aplikací, ale ne žádná jiná pole.

Triggery na základě plánu

Časovač spustí vyvolání řízené plánem, které spustí úlohu na pozadí. Mezi příklady triggerů řízených plánem patří:

  • Úloha na pozadí běží denně nebo týdně a provádí sadu akcí.

  • Samostatný proces nebo aplikace spustí časovač, který vyvolá úlohu na pozadí po časové prodlevě nebo v určitý čas.

Mezi další příklady úloh, které jsou vhodné pro vyvolání řízené podle plánu, patří rutiny dávkového zpracování (jako je aktualizace seznamů souvisejících produktů pro zákazníky na základě jejich nedávného chování), rutinní úlohy zpracování dat (jako je generování nashromážděných výsledků), analýza dat pro každodenní zprávy, čištění uchovávání dat a kontroly konzistence dat.

Vrácení výsledků

Úlohy na pozadí běží asynchronně v procesu odděleném od uživatelského rozhraní nebo procesu, který úlohu na pozadí vyvolal. V ideálním případě jsou úlohy na pozadí operace typu spustit a zapomenout. Průběh jejich běhu neovlivňuje uživatelské rozhraní ani proces volání, což znamená, že proces volání nečeká na dokončení úkolů. Uživatelské rozhraní a proces volání nemohou zjistit, kdy úloha končí.

Pokud požadujete, aby úloha na pozadí komunikovala s volající úlohou, aby indikovala průběh nebo dokončení, musíte implementovat mechanismus, jako je:

  • Zapsat hodnotu indikátoru stavu do úložiště, které je přístupné uživatelskému rozhraní nebo úloze volajícího, které může tuto hodnotu sledovat nebo kontrolovat. Další data, která úloha na pozadí vrací volajícímu, lze umístit do stejného úložiště.

  • Vystavte API nebo koncový bod z úlohy na pozadí, ke které má uživatelské rozhraní nebo volající přístup, aby získal informace o stavu. Odpověď může obsahovat data, která úloha na pozadí vrací volajícímu.

  • Nakonfigurujte úlohu na pozadí tak, aby odpovídala stavu nebo datům, která zpracovala, zpět do uživatelského rozhraní.

Koordinace

Úlohy na pozadí mohou být složité a ke spuštění vyžadují více úloh. V těchto scénářích je běžné rozdělit úlohu na menší samostatné kroky nebo dílčí úlohy, které může spustit více spotřebitelů. Vícekrokové úlohy jsou efektivnější a flexibilnější, protože jednotlivé kroky jsou často opakovaně použitelné ve více úlohách. Je také snadné přidat, odebrat nebo upravit pořadí kroků.

Koordinace více úkolů a kroků může být náročná, ale existují tři běžné vzorce, kterými se můžete řídit:

  • Rozložte úkol na více opakovaně použitelných kroků. Aplikace může být vyžadována k provádění různých úkolů různé složitosti na informacích, které zpracovává. Přímým, ale neflexibilním přístupem k implementaci takové aplikace je provést toto zpracování jako monolitický modul. Tento přístup však pravděpodobně sníží příležitosti pro refaktorování kódu, jeho optimalizaci nebo opětovné použití, pokud aplikace vyžaduje části stejného zpracování jinde.

  • Spravujte orchestraci kroků pro úlohu. Aplikace může provádět úlohy, které zahrnují mnoho kroků, z nichž některé mohou vyvolat vzdálené služby nebo přistupovat ke vzdáleným zdrojům. Někdy jsou jednotlivé kroky na sobě nezávislé, ale jsou řízeny aplikační logikou, která úkol implementuje.

  • Spravujte obnovu pro kroky úlohy, které selžou. Pokud jeden nebo více kroků selže, aplikace může potřebovat vrátit zpět práci, kterou provádí řada kroků, které společně definují nakonec konzistentní operaci.

Úvahy o odolnosti

Vytvářejte odolné úlohy na pozadí, které poskytují spolehlivé služby pro aplikaci. Při plánování a návrhu úloh na pozadí zvažte následující body:

  • Úlohy na pozadí musí elegantně zvládnout restartování bez poškození dat nebo zavedení nekonzistence do aplikace. Pro dlouhotrvající nebo vícekrokové úlohy zvažte použití kontrolních bodů. Použijte kontrolní body k uložení stavu úloh do trvalého úložiště nebo jako zprávy ve frontě a nakonfigurujte logiku opakování v případě neočekávaných selhání akce.

  • Když ke komunikaci s úlohami na pozadí používáte fronty, mohou fronty fungovat jako vyrovnávací paměť pro ukládání požadavků, které jsou odesílány úlohám, zatímco je aplikace zatížena vyšší než obvykle. Úlohy mohou dohnat uživatelské rozhraní během méně vytížených období a restartování neblokuje uživatelské rozhraní.

Záležitosti škálování a výkonu

Úlohy na pozadí musí nabízet dostatečný výkon, aby bylo zajištěno, že neblokují aplikaci nebo nezdržují provoz při zatížení systému. Výkon se obvykle zlepší, když škálujete instance výpočtu, které hostí úlohy na pozadí. Při plánování a návrhu úloh na pozadí zvažte následující body související se škálovatelností a výkonem:

  • Úlohy na pozadí mohou ovlivnit uživatelské prostředí, pokud jsou uživateli prezentovány výsledky úloh na pozadí. Úlohy na pozadí mohou například vyžadovat, aby uživatel čekal na oznámení, obnovil stránku nebo ručně zkontroloval stav úlohy. Toto chování může zvýšit složitost uživatelské interakce a negativně ovlivnit uživatelské prostředí. Zvažte alternativy k odesílání dat zpět do uživatelského rozhraní, jako je zaslání oznámení e-mailem nebo Microsoft Teams nebo zahrnutí možnosti kontrolovat aktualizace stavu ve vašem uživatelském rozhraní. V našem příkladu odesílání výdajových formulářů byste místo reagování na stav zpět do uživatelského rozhraní mohli mít v aplikaci stránku se seznamem všech odeslaných výdajových formulářů s jejich stavem a schopností spustit aktualizaci.

  • Úlohy na pozadí mohou představovat problémy pro synchronizaci dat a koordinaci procesů, zejména pokud úlohy na pozadí závisí na sobě navzájem nebo na jiných zdrojích dat. Úlohy na pozadí mohou například zpracovávat problémy s konzistencí dat, závody, uváznutí nebo časové limity.

  • Chcete-li zabránit ztrátě výkonu při zatížení, můžete implementovat logiku tak, aby jediný bod řetězce zpracování nezpůsobil úzké místo. Zvažte další omezení, jako je maximální propustnost akcí pracovního postupu, úložiště a další služby, na které aplikace a úlohy na pozadí spoléhají.

Kompromis: Na pozadí běžící úlohy zavádějí do systému více komponent a závislostí, což může zvýšit složitost a náklady na údržbu řešení. Úlohy na pozadí mohou například vyžadovat samostatnou službu monitorování a mechanismus opakování.

Usnadnění díky Power Platform

Následující části popisují služby, které můžete použít k hostování, spouštění, konfiguraci a správě úloh na pozadí.

Power Automate

Cloudové toky Power Automate jsou pracovní postupy, které běží v cloudu. Mohou to být automatizované toky, které jsou spuštěny nějakou událostí, jako je příchod e-mailu od konkrétní osoby. Mohou to být okamžité toky, které spustíte kliknutím na tlačítko, jako připomenutí vašemu týmu, které odešlete ze svého mobilního zařízení. Mohou to být naplánované toky, které běží v určitou dobu, jako je například denní nahrávání dat do SharePoint nebo databáze. Automatizaci opakujících se úkolů můžete také provádět z počítače nebo mobilních zařízení.

Seznamte se s limity automatických, plánovaných a okamžitých toků s ohledem na propustnost, požadavek, souběžnost, smyčkování a debatování. Při navrhování pracovního postupu se ujistěte, že tato omezení berete v úvahu.

Snižte riziko plánováním pro zpracování chyb.

Zde je několik příkladů, kde můžete použít toky Power Automate ke spouštění úloh na pozadí:

Microsoft Dataverse

Počítané a souhrnné sloupce Microsoft Dataverse:

  • Sloupce se vzorci jsou sloupce, které zobrazují vypočítanou hodnotu v tabulce Microsoft Dataverse.

  • Počítané sloupce automatizují ruční výpočty použité v obchodní procesu. Prodejce může například chtít znát vážený výnos u příležitosti, který je založen na odhadovaném výnosu z příležitostí vynásobeném pravděpodobností. Nebo chce automaticky aplikovat slevu, jestliže objednávka je větší než určitá částka. Počítaný sloupec může obsahovat hodnoty vyplývající z mnoha jednoduchých matematických operátorů a podmíněných operací, jako například větší než nebo if-else (pokud-pak).

  • Souhrnné sloupce pomáhají uživatelům získat přehled o údajích sledováním klíčových obchodních metrik. Souhrnný sloupec obsahuje celkovou hodnotu spočítanou ze řádků vztahujících se k určitému řádku. Jedná se o běžné tabulky a tabulky aktivit, jako jsou e-maily a schůzky. Ve složitějších případech lze agregovat data prostřednictvím hierarchie řádků. Jako správce nebo úpravce můžete definovat souhrnné sloupuce pomocí nástrojů pro vlastní nastavení v Power Apps, aniž by bylo nutné psát kód.

Operace na pozadí může posílat žádosti, které Dataverse zpracovává asynchronně. Operace na pozadí jsou užitečné, když nechcete udržovat připojení, když běží požadavek.

Pluginy jsou vlastní manipulátory událostí, které se spouštějí v reakci na konkrétní událost vyvolanou během zpracování datového provozu Microsoft Dataverse.

Microsoft Dataverse také nabízí výkonné řešení pro dosažení efektivnější datové architektury a snížení zátěže na straně klienta prostřednictvím plug-inů s minimálním psaním kódu. Tyto plug-iny jsou opakovaně použitelné pracovní postupy v reálném čase, které provádějí konkrétní sadu příkazů v rámci Dataverse běžící na straně serveru a spouštěné personalizovanými obslužnými rutinami událostí.

Kontrolní seznam spolehlivosti

Podívejte se na úplný soubor doporučení.