Complexe workflows orkestreren
Bouw geavanceerde serverless workflows met voorwaardelijke logica, parallelle uitvoering en foutafhandeling met Step Functions.
Complexe workflows orkestreren is een gratis Serverloze backend met AWS Lambda en API Gateway-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Serverloze backend met AWS Lambda en API Gateway. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Serverloze backend met AWS Lambda en API Gateway bevat in totaal 4 lessen.
Complexe workflows orkestreren
Welkom! In deze les leer je hoe je geavanceerde serverloze workflows bouwt met AWS Step Functions.
We bekijken hoe je besluitvorming toevoegt, taken gelijktijdig uitvoert en je workflows bestand maakt tegen fouten.
Besluitvorming met Choice
De Choice-status is de "if/else"-instructie van je workflow. Hiermee kan je statusmachine beslissingen nemen op basis van de invoer die deze ontvangt.
- Elke keuzeregel heeft een voorwaarde (bijvoorbeeld: de invoerwaarde is gelijk aan "X").
- Als aan een voorwaarde wordt voldaan, gaat de workflow over naar een opgegeven status.
- Een standaardstatus behandelt gevallen waarin geen enkele voorwaarde overeenkomt.
Voorbeeld van een Choice-status
Zo ziet een Choice-status eruit in je Step Functions-definitie. Deze controleert het veld orderStatus om de volgende stap te bepalen.
{ "StartAt": "CheckOrderStatus", "States": { "CheckOrderStatus": { "Type": "Choice", "Choices": [ { "Variable": "$.orderStatus", "StringEquals": "PENDING", "Next": "ProcessPendingOrder" }, { "Variable": "$.orderStatus", "StringEquals": "SHIPPED", "Next": "NotifyShipping" } ], "Default": "HandleUnknownStatus" }, "ProcessPendingOrder": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processPending", "End": true }, "NotifyShipping": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:notifyShipping", "End": true }, "HandleUnknownStatus": { "Type": "Fail", "Cause": "Unknown order status", "Error": "InvalidOrderStatus" } }}Taken parallel uitvoeren
Met de Parallel-status kun je meerdere takken van je workflow gelijktijdig uitvoeren. Dit is handig voor taken die niet van elkaar afhankelijk zijn en tegelijkertijd kunnen worden uitgevoerd.
- Elke tak wordt onafhankelijk uitgevoerd.
- De Parallel-status wacht totdat alle takken zijn voltooid.
- De uitvoer van alle takken wordt gecombineerd in een array.
Voorbeeld van een Parallel-status
Deze Parallel-status verwerkt tegelijkertijd een bestelling en werkt de voorraad bij, waarna de resultaten worden gecombineerd.
{ "StartAt": "ProcessOrderAndInventory", "States": { "ProcessOrderAndInventory": { "Type": "Parallel", "Branches": [ { "StartAt": "ProcessOrder", "States": { "ProcessOrder": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processOrder", "End": true } } }, { "StartAt": "UpdateInventory", "States": { "UpdateInventory": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:updateInventory", "End": true } } } ], "Next": "CombineResults" }, "CombineResults": { "Type": "Pass", "End": true } }}Fouten netjes afhandelen
Er kan van alles misgaan! Step Functions biedt robuuste foutafhandeling met het veld Catch. Je kunt opgeven welke fouten moeten worden opgevangen en naar welke status moet worden overgegaan wanneer er een fout optreedt.
- Fouten worden geïdentificeerd aan de hand van hun type (bijvoorbeeld
States.TaskFailed). - Je kunt specifieke fouten opvangen of een algemene fout met
States.ALL. ResultPathgeeft aan waar de foutuitvoer wordt geplaatst.
Voorbeeld van een Catch-status
Als de taak ProcessPayment hier mislukt, wordt de fout opgevangen en gaat de workflow over naar de status RefundOrder.
{ "StartAt": "ProcessPayment", "States": { "ProcessPayment": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:processPayment", "Catch": [ { "ErrorEquals": [ "States.TaskFailed", "PaymentFailure" ], "Next": "RefundOrder", "ResultPath": "$.errorInfo" } ], "Next": "CompleteOrder" }, "RefundOrder": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:refundOrder", "End": true }, "CompleteOrder": { "Type": "Pass", "End": true } }}Mislukte taken opnieuw proberen
Bij tijdelijke fouten (zoals netwerk-time-outs) is het vaak beter om de taak enkele keren opnieuw te proberen voordat deze mislukt. Met het veld Retry kun je beleid voor nieuwe pogingen definiëren.
- Geef op welke fouten opnieuw moeten worden geprobeerd.
- Configureer
IntervalSeconds,MaxAttemptsenBackoffRate. - Exponentiële wachttijd (
BackoffRate > 1) wordt sterk aanbevolen.
Voorbeeld van een Retry-status
Deze taak wordt maximaal 3 keer opnieuw geprobeerd met exponentiële wachttijd als er een Timeout of NetworkError optreedt.
{ "StartAt": "CallExternalService", "States": { "CallExternalService": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:callExternalService", "Retry": [ { "ErrorEquals": [ "States.Timeout", "NetworkError" ], "IntervalSeconds": 2, "MaxAttempts": 3, "BackoffRate": 1.5 } ], "End": true } }}Alles orkestreren
De echte kracht van Step Functions komt voort uit het combineren van deze statussen. Je kunt zeer geavanceerde workflows bouwen door Parallel-statussen binnen Choices te nesten, Retries aan Tasks toe te voegen en fouten op verschillende niveaus op te vangen.
Hiermee kun je vrijwel elk bedrijfsproces modelleren, zodat je serverloze toepassingen robuust en aanpasbaar worden.
Logica van een workflow controleren
Bekijk een workflow die het volgende moet doen:
- Controleren of een gebruiker premium is.
- Als de gebruiker premium is, tegelijkertijd een gepersonaliseerde e-mail versturen EN diens loyaliteitspunten bijwerken.
- Als de gebruiker geen premium is, een standaard-e-mail versturen.
- Eventuele fouten bij het versturen van e-mails afhandelen door ze te loggen zonder de workflow te stoppen.
Welke Step Functions-statussen zijn essentieel om deze logica te implementeren?
Samenvatting: complexe workflows
Je beheerst nu geavanceerde Step Functions-concepten!
- We gebruikten Choice-statussen voor voorwaardelijke logica.
- We gebruikten Parallel-statussen voor gelijktijdige uitvoering.
- We implementeerden robuuste foutafhandeling met Catch-blokken.
- Ook leerden we over Retry-beleid voor tijdelijke fouten.
Met deze hulpmiddelen kun je bijzonder krachtige en veerkrachtige serverloze toepassingen bouwen die door gebeurtenissen worden aangestuurd!
Leer Serverloze backend met AWS Lambda en API Gateway met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Complexe workflows orkestreren” gratis?
Ja — de volledige tekst van “Complexe workflows orkestreren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Serverloze backend met AWS Lambda en API Gateway wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Serverloze backend met AWS Lambda en API Gateway bevat in totaal 4 lessen.
Wat leer ik in “Complexe workflows orkestreren”?
Bouw geavanceerde serverless workflows met voorwaardelijke logica, parallelle uitvoering en foutafhandeling met Step Functions. Je oefent met Serverloze backend met AWS Lambda en API Gateway door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Serverloze backend met AWS Lambda en API Gateway te beginnen?
Ervaring vooraf is niet nodig. Serverloze backend met AWS Lambda en API Gateway op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Complexe workflows orkestreren”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Serverloze backend met AWS Lambda en API Gateway?
Ja. Elke les over Serverloze backend met AWS Lambda en API Gateway bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Inleiding tot AWS Step Functions
- State machines bouwen
- Complexe workflows orkestreren
- Foutafhandeling en retries in state machines