De levenscyclus van events: retries, DLQ's en destinations

Serverless-toepassingen met AWS Lambda

Claudio Canales

Senior DevOps Engineer

De event-levenscyclus in vogelvlucht

  • Lambda roept je handler aan.
  • De handler slaagt of faalt.
  • Bij falen bepalen retries en routing de vervolgstap.

Overzicht event-levenscyclus

Serverless-toepassingen met AWS Lambda

Twee manieren waarop fouten verschijnen

Synchronous

  • Aanroeper wacht en krijgt een foutrespons.

Asynchronous

  • Aanroeper krijgt eerst een bevestiging.
  • Lambda retryt op de achtergrond.
  • Foutafhandeling hangt af van de aanroepmodus.

Foutpaden: sync vs async

Serverless-toepassingen met AWS Lambda

Retries zijn normaal

  • Retries zijn vaak een feature, geen bug.
  • Een tijdelijke fout kan bij de volgende poging slagen.
  • Retries kunnen dubbels veroorzaken; je handler moet daarop voorbereid zijn.

Analogie: opnieuw kiezen (retry)

Serverless-toepassingen met AWS Lambda

Retries in de tijd

  • Retries vangen tijdelijke issues op.
  • Maar hetzelfde event kan meerdere keren draaien.
  • Idempotentie en duidelijke foutafhandeling zijn cruciaal.

Tijdlijn van retry-pogingen

Serverless-toepassingen met AWS Lambda

Wanneer retries gevaarlijk zijn

  • Retries zijn risicovol als werk niet idempotent is.
  • Voorbeelden: kaart belasten, e-mail sturen.
  • Gebruik idempotency keys en veilige updates zodat dubbels geen schade doen.

Doel van idempotentie

Serverless-toepassingen met AWS Lambda

DLQ (Dead-Letter Queue)

  • Een veilige plek voor events die na retries nog falen.
  • Vaak een SQS-queue, de beheerde message queue van AWS.
  • Inspecteer de payload, fix het probleem en re-drive.

DLQ gevonden-voorwerpen-analogie

Serverless-toepassingen met AWS Lambda

DLQ vs destinations

DLQ gevonden-voorwerpen-analogie

  • Vangt gefaalde events na retries.
  • Gebruik voor onderzoek.

Routingdiagram voor destinations

  • Routeer uitkomsten bij succes of falen.
  • Bouw expliciete paden voor succes en falen.
Serverless-toepassingen met AWS Lambda

Destinations: routes voor succes en falen

  • Bij succes stuur je resultaat naar onSuccess.
  • Bij falen stuur je details naar onFailure.
  • Maakt de volgende stap expliciet.

Routingdiagram voor destinations

Serverless-toepassingen met AWS Lambda

Retrybeleid afstemmen

  • Stel in hoe vaak Lambda retryt.
  • Beperk eventleeftijd om oude data te vermijden.
  • Meer retries verhogen betrouwbaarheid maar ook dubbels en vertraging.

Instellingen voor retrybeleid

Serverless-toepassingen met AWS Lambda

Maximale eventleeftijd: houdbaarheidsdatum

  • Maximale eventleeftijd is een vervalbeleid.
  • Is een event te oud, dan is verwerken vaak zinloos.
  • Trade-off: minder late events, sneller gedrag.

Analogie: verlopen eventleeftijd

Serverless-toepassingen met AWS Lambda

Observability: waar kijk je

  • Logs beantwoorden wat er gebeurde.
  • Metrics beantwoorden hoe vaak het gebeurt.
  • Alarms helpen pieken snel te zien.

Logs vs metrics

Serverless-toepassingen met AWS Lambda

Wat te doen met gefaalde events

  • Inspecteer payload en fout.
  • Los de oorzaak op.
  • Re-drive het event en monitor daarna fouten en throughput.

Herstelcyclus voor gefaalde events

Serverless-toepassingen met AWS Lambda

Belangrijkste punten

  • Betrouwbaarheid komt van retries, routing en observability.
  • Synchronous errors gaan naar de aanroeper.
  • Asynchronous errors vragen retries plus DLQ's of destinations.
  • Zo blijven fouten zichtbaar.

Diagram: formule voor betrouwbaarheid

Serverless-toepassingen met AWS Lambda

Laten we oefenen!

Serverless-toepassingen met AWS Lambda

Preparing Video For Download...