Delen via


Aanbevelingen voor het ontwikkelen van achtergrondtaken

Van toepassing op deze aanbeveling voor de Well-Architected Reliability-checklist: Power Platform

RE:05 Vergroot de veerkracht van uw workload door foutafhandeling en kortstondige foutafhandeling te implementeren. Bouw mogelijkheden in de oplossing om onderdeelstoringen en kortstondige fouten op te lossen.

Deze guide beschrijft de aanbevelingen voor het ontwikkelen van achtergrondtaken. Achtergrondtaken worden automatisch uitgevoerd zonder dat gebruikersinteractie nodig is. Veel toepassingen vereisen achtergrondtaken die onafhankelijk van de gebruikersinterface (UI) worden uitgevoerd.

Enkele voorbeelden van achtergrondtaken zijn batchtaken, intensieve verwerkingstaken en langlopende processen, zoals werkstromen. De toepassing start de taak en verwerkt interactieve aanvragen van gebruikers.

Een toepassing moet bijvoorbeeld mogelijk een samenvatting genereren en sentiment en belangrijke punten extraheren uit documenten die gebruikers uploaden. Er kan een achtergrondtaak worden uitgevoerd om de AI-acties uit te voeren en de samenvatting en belangrijkste punten in de database op te slaan. De gebruiker hoeft niet te wachten tot het proces is voltooid. Nog een voorbeeld: een gebruiker kan een onkostendeclaratie indienen, waardoor een achtergrondwerkstroom wordt gestart die de onkostendeclaratie verwerkt en ter goedkeuring indient. De gebruiker kan doorgaan met het indienen van een nieuwe onkostendeclaratie of de toepassing verlaten terwijl de achtergrondtaak wordt uitgevoerd. Nadat de achtergrondtaak is voltooid, wordt er een e-mail naar de gebruiker verzonden om te bevestigen dat de onkostendeclaratie ter goedkeuring is ingediend.

Achtergrondtaken helpen de belasting van de gebruikersinterface van de toepassing te minimaliseren, waardoor de beschikbaarheid wordt verbeterd en de interactieve responstijd wordt verkort.

Belangrijke ontwerpstrategieën

Om te kiezen welke taak u als achtergrondtaak wilt aanwijzen, moet u overwegen of de taak zonder gebruikersinteractie wordt uitgevoerd en of de gebruikersinterface moet wachten tot de taak is voltooid. Taken waarbij de gebruiker of de gebruikersinterface moet wachten terwijl ze worden uitgevoerd, zijn doorgaans geen geschikte achtergrondtaken.

Typen achtergrondtaken

Enkele voorbeelden achtergrondtaken zijn:

  • Resource-intensieve taken die veel tijd in beslag nemen, zoals het uitvoeren van een reeks transacties.

  • Batchtaken, zoals nachtelijke gegevensupdates of geplande verwerking.

  • Langlopende werkstromen, zoals orderafhandeling of levering van services en systemen.

  • Werkstromen die asynchrone samenwerking vereisen, zoals goedkeuringen.

  • Verwerking van gevoelige gegevens die de taak voor verwerking naar een veiligere locatie overbrengt. Het kan bijvoorbeeld zijn dat u geen gevoelige gegevens binnen een web-app wilt verwerken. In plaats daarvan kunt u een patroon zoals het Gatekeeper-patroon gebruiken om de gegevens over te brengen naar een geïsoleerd achtergrondproces dat toegang heeft tot beveiligde opslag.

Triggers

Start achtergrondtaken met:

  • Gebeurtenisgestuurde triggers: Een gebeurtenis, hetzij een gebruikersactie in de toepassing of een gebeurtenis die optreedt tegen een gegevensbron, activeert de taak.

  • Schemagestuurde triggers: Een schema dat is gebaseerd op een timer, roept de taak aan. De taak kan op terugkerende basis of voor een enkele run worden gepland.

Gebeurtenisgestuurde triggers

Een actie activeert een gebeurtenisgestuurde aanroep die de achtergrondtaak start. Voorbeelden van gebeurtenisgestuurde triggers zijn:

  • De gebruikersinterface of een andere taak activeert de achtergrondtaak en geeft gegevens van de uitgevoerde actie door aan de achtergrondtaak. Een gebruiker dient bijvoorbeeld een onkostendeclaratie in via een formulier en de formuliergegevens worden ter verwerking doorgegeven aan de achtergrondtaak.

  • De gebruikersinterface of een andere taak slaat een waarde op of werkt een waarde in de opslag bij. De achtergrondtaak bewaakt de opslag en detecteert wijzigingen, zoals nieuwe waarden die worden toegevoegd of bestaande waarden die worden gewijzigd, en activeert de achtergrondtaak op basis van die wijziging.

  • De gebruikersinterface of een andere taak doet een verzoek aan een eindpunt, zoals een HTTPS-URI of een API die wordt weergegeven als een webservice. Als onderdeel van het verzoek draagt de gebruikersinterface of taak de gegevens over die voor de achtergrondtaak nodig zijn. Het eindpunt of de webservice roept de achtergrondtaak aan, die de gegevens als invoer gebruikt.

Andere voorbeelden van gebeurtenisgestuurde triggers zijn onder andere een formulier dat in een toepassing wordt verzonden, een nieuwe rij die wordt toegevoegd aan gegevensopslag, een triggerzin in copilot die een onderwerp start die een stroom aanroept, de waarde van een veld dat verandert in gegevensopslag, een e-mail met een specifiek onderwerp of van een specifieke afzender die in de inbox arriveert en een bestand dat wordt geüpload naar een bestandsopslaglocatie.

Gebruik triggervoorwaarden om uw werkstromen te stroomlijnen en het aantal onnodige runs te verminderen. Triggervoorwaarden stellen meerdere voorwaarden in waaraan moet worden voldaan voordat een werkstroom wordt geactiveerd.

Notitie

Zorg ervoor dat u triggervoorwaarden gebruikt om eindeloze lussen te voorkomen als u, als onderdeel van de werkstroom, de gegevensbron wijzigt waarmee de werkstroom wordt gestart. De toepassing kan bijvoorbeeld velden in een Microsoft Dataverse-tabelrij wijzigen, en de werkstroom voert aanvullende query's uit op basis van die gewijzigde velden, waardoor dezelfde rij verder wordt gewijzigd. Gebruik triggervoorwaarden om de werkstroom alleen te starten wanneer velden die worden gewijzigd door de toepassing worden bijgewerkt, maar geen andere velden.

Schemagestuurde triggers

Een timer activeert een schemagestuurde aanroep die de achtergrondtaak start. Voorbeelden van schemagestuurde triggers zijn:

  • Een achtergrondtaak wordt dagelijks of wekelijks uitgevoerd en voert een reeks acties uit.

  • Een afzonderlijk proces of afzonderlijke toepassing start een timer die de achtergrondtaak na een bepaalde tijd of op een specifiek tijdstip aanroept.

Andere voorbeelden van taken die geschikt zijn voor een schemagestuurde aanroep zijn batchverwerkingsroutines (zoals het bijwerken van lijsten met gerelateerde producten voor klanten op basis van hun recente gedrag), routinematige gegevensverwerkingstaken (zoals het genereren van verzamelde resultaten), gegevensanalyse voor dagelijkse rapporten, opschoning van gegevensretentie en controles op gegevensconsistentie.

Resultaten retourneren

Achtergrondtaken worden asynchroon uitgevoerd in een afzonderlijk proces van de gebruikersinterface of het proces dat de achtergrondtaak heeft aangeroepen. Idealiter zijn achtergrondtaken starten en vergeten-bewerkingen. Hun runtimevoortgang heeft geen invloed op de gebruikersinterface of het aanroepproces, wat betekent dat het aanroepproces niet wacht tot de taken zijn voltooid. De gebruikersinterface en het aanroepproces kunnen niet detecteren wanneer de taak eindigt.

Als u een achtergrondtaak nodig hebt om te communiceren met de aanroepende taak om de voortgang of voltooiing aan te geven, moet u een mechanisme implementeren zoals:

  • Schrijf een statusindicatorwaarde naar opslag die toegankelijk is voor de gebruikersinterface of de aanroepende taak, die deze waarde kan monitoren of controleren. Andere gegevens die de achtergrondtaak terugstuurt naar de aanroeper kunnen in dezelfde opslag worden geplaatst.

  • Stel een API of eindpunt beschikbaar vanuit de achtergrondtaak waartoe de gebruikersinterface of aanroeper toegang heeft om statusinformatie te verkrijgen. De respons kan de gegevens bevatten die de achtergrondtaak terugstuurt naar de aanroeper.

  • Configureer de achtergrondtaak om te reageren met de status of de gegevens die terug naar de gebruikersinterface zijn verwerkt.

Coördinatie

Achtergrondtaken kunnen complex zijn en vereisen dat er meerdere taken worden uitgevoerd. In deze scenario's is het gebruikelijk om de taak op te delen in kleinere afzonderlijke stappen of subtaken die door meerdere consumenten kunnen worden uitgevoerd. Taken met meerdere stappen zijn efficiënter en flexibeler omdat individuele stappen vaak herbruikbaar zijn in meerdere taken. Het is ook gemakkelijk om stappen toe te voegen of te verwijderen of de volgorde van de stappen te wijzigen.

Het kan een uitdaging zijn om meerdere taken en stappen te coördineren, maar er zijn drie algemene patronen die als leidraad voor uw oplossing kunnen dienen:

  • Splits een taak op in meerdere herbruikbare stappen. Het kan nodig zijn dat een toepassing verschillende taken van verschillende complexiteit uitvoert voor de informatie die wordt verwerkt. Een eenvoudige maar inflexibele benadering voor het implementeren van een dergelijke toepassing is om deze verwerking uit te voeren als een monolithische module. Maar deze aanpak zal waarschijnlijk de mogelijkheden verkleinen om de code te herstructureren, te optimaliseren of te hergebruiken als de toepassing delen van dezelfde verwerking elders nodig heeft.

  • Beheer de orkestratie van de stappen voor een taak. Een toepassing kan taken uitvoeren die uit veel stappen bestaan, waarvan sommige externe services kunnen aanroepen of toegang kunnen krijgen tot externe resources. Soms zijn de afzonderlijke stappen onafhankelijk van elkaar, maar ze worden ingedeeld door de toepassingslogica die de taak implementeert.

  • Beheer het herstel voor taak-stappen die mislukken. Als een of meer van de stappen mislukken, moet een toepassing mogelijk het werk ongedaan maken wat wordt uitgevoerd door een reeks stappen waarmee samen een uiteindelijk consistente werking wordt gedefinieerd.

Overwegingen inzake tolerantie

Maak tolerante achtergrondtaken om betrouwbare services voor de toepassing te bieden. Houd bij het plannen en ontwerpen van achtergrondtaken rekening met de volgende punten:

  • Achtergrondtaken moeten op een correcte manier herstarten afhandelen zonder gegevens te beschadigen of inconsistentie in de toepassing te introduceren. Voor langlopende taken of taken die uit meerdere stappen bestaan, kunt u overwegen controlepunten te gebruiken. Gebruik controlepunten om de status van taken op te slaan in permanente opslag of als berichten in een wachtrij en configureer logica voor opnieuw proberen in geval van onverwachte mislukkingen van een actie.

  • Wanneer u wachtrijen gebruikt om met achtergrondtaken te communiceren, kunnen de wachtrijen fungeren als buffer voor het opslaan van aanvragen die naar de taken worden verzonden terwijl de toepassing zwaarder wordt belast dan normaal. De taken kunnen de gebruikersinterface inhalen tijdens minder drukke perioden, en opnieuw opstarten blokkeert de gebruikersinterface niet.

Schalings- en prestatieoverwegingen

Achtergrondtaken moeten voldoende prestaties bieden om ervoor te zorgen dat ze de toepassing niet blokkeren of de werking ervan vertragen bij belasting. Doorgaans verbeteren de prestaties wanneer u de rekenprocessen schaalt die de achtergrondtaken hosten. Houd bij het plannen en ontwerpen van achtergrondtaken rekening met de volgende punten met betrekking tot schaalbaarheid en prestaties:

  • Achtergrondtaken kunnen de gebruikerservaring beïnvloeden als de resultaten van de achtergrondtaken aan de gebruiker worden gepresenteerd. Voor achtergrondtaken kan het bijvoorbeeld nodig zijn dat de gebruiker op een melding wacht, de pagina vernieuwt of de status van de taak handmatig controleert. Dit gedrag kan de complexiteit van de gebruikersinteractie vergroten en de gebruikerservaring negatief beïnvloeden. Overweeg alternatieven voor het terugsturen van gegevens naar de gebruikersinterface, zoals het verzenden van een melding via e-mail of Microsoft Teams, of het opnemen van de mogelijkheid om te controleren op statusupdates in uw gebruikersinterface. In ons voorbeeld van het indienen van onkostenformulieren zou u, in plaats van de status terug te sturen naar de gebruikersinterface, een pagina in de toepassing kunnen hebben waarop alle ingediende onkostenformulieren worden vermeld, met hun status en de mogelijkheid om een vernieuwing te activeren.

  • Achtergrondtaken kunnen uitdagingen opleveren voor de gegevenssynchronisatie en procescoördinatie, vooral als de achtergrondtaken van elkaar of van andere gegevensbronnen afhankelijk zijn. Achtergrondtaken kunnen bijvoorbeeld problemen met de consistentie van gegevens, race-condities, deadlocks of time-outs afhandelen.

  • Om prestatieverlies bij belasting te voorkomen, kunt u logica implementeren, zodat één enkel punt in de verwerkingsketen geen knelpunt veroorzaakt. Houd rekening met andere beperkingen, zoals de maximale doorvoer van werkstroomacties, opslag en andere services waarvan de toepassing en de achtergrondtaken afhankelijk zijn.

Afweging: Achtergrondtaken introduceren meer componenten en afhankelijkheden in het systeem, wat de complexiteit en onderhoud kosten van de oplossing kan verhogen. Bijvoorbeeld: voor achtergrondtaken is mogelijk een afzonderlijke bewakingsservice en een mechanisme voor opnieuw proberen vereist.

Power Platform faciliteren

In de volgende secties worden de services beschreven die u kunt gebruiken voor het hosten, uitvoeren, configureren en beheren van achtergrondtaken.

Power Automate

Power Automate cloudflows zijn workflows die in de cloud worden uitgevoerd. Het kunnen geautomatiseerde stromen zijn die worden geactiveerd door een gebeurtenis, zoals de aankomst van een e-mail van een specifieke persoon. Het kunnen directe stromen zijn die u met een klik op de knop start, zoals een herinnering naar uw team die u vanaf uw mobiele apparaat verzendt. Het kunnen geplande stromen zijn die op een bepaald tijdstip worden uitgevoerd, zoals een dagelijkse gegevensupload naar SharePoint of een database. U kunt ook terugkerende taken automatiseren vanaf uw desktop of mobiele apparaat.

Stel u op de hoogte van de limieten van geautomatiseerde, geplande en directe stromen met betrekking tot doorvoer, aanvragen, gelijktijdigheid, lussen en debatching. Zorg ervoor dat u met deze limieten rekening houdt bij het ontwerpen van uw werkstroom.

Reduceer het risico door planning voor foutafhandeling.

Hier volgen enkele voorbeelden van situaties waarin u stromen kunt gebruiken om achtergrondtaken uit te voeren: Power Automate

Microsoft Dataverse

Microsoft Dataverse berekende kolommen en rollups:

  • Formulekolommen zijn kolommen die een berekende waarde in een Microsoft Dataverse tabel weergeven.

  • Berekende kolommen automatiseren handmatige berekeningen die in uw bedrijfsproces worden gebruikt. Een verkoper wil bijvoorbeeld weten wat de gewogen opbrengst van een verkoopkans is, die wordt gebaseerd op de geschatte opbrengst van een verkoopkans, vermenigvuldigd met de waarschijnlijkheid. Of, zij willen automatisch een korting toepassen als een order groter is dan een bepaald bedrag. Een berekende kolom kan waarden bevatten zoals het resultaat van eenvoudige berekeningen of voorwaardelijke bewerkingen zoals groter dan of als-anders.

  • Samengetelde kolommen, of samenvoegkolommen, helpen u inzicht te krijgen in gegevens door belangrijke bedrijfsmetrische gegevens te bewaken. Een samengetelde kolom bevat een samengevoegde waarde die is berekend voor de rijen die zijn gerelateerd aan een opgegeven rij. Hierbij gaat het om reguliere tabellen en activiteitstabellen, zoals e-mailberichten en afspraken. In meer complexe scenario's kunt u gegevens samenvoegen uit de hiërarchie van rijen. Als beheerder of aanpasser kunt u samengetelde kolommen definiëren met behulp van de aanpassingshulpmiddelen in Power Apps, zonder dat een ontwikkelaar code hoeft te schrijven.

Achtergrondbewerkingen kunnen verzoeken verzenden die Dataverse asynchroon worden verwerkt. Achtergrondbewerkingen zijn handig als u geen verbinding wilt onderhouden terwijl een aanvraag wordt uitgevoerd.

Plug-ins zijn aangepaste gebeurtenis-handlers die in respons worden uitgevoerd op een specifieke gebeurtenis die is gegenereerd tijdens de verwerking van een Microsoft Dataverse gegevensbewerking.

Microsoft Dataverse biedt ook een krachtige oplossing voor het bereiken van een efficiëntere gegevensarchitectuur en het verminderen van de werkdruk aan de clientzijde via low-code invoegtoepassingen. Deze invoegtoepassingen zijn herbruikbare, realtime werkstromen die een specifieke reeks opdrachten binnen Dataverse uitvoeren, op de server worden uitgevoerd en worden geactiveerd door gepersonaliseerde gebeurtenishandlers.

Controlelijst voor betrouwbaarheid

Raadpleeg de volledige reeks aanbevelingen.