Den Event-Lebenszyklus handhaben: Retries, DLQs und Destinations

Serverlose Anwendungen mit AWS Lambda

Claudio Canales

Senior DevOps Engineer

Event-Lebenszyklus auf einen Blick

  • Lambda ruft deinen Handler auf.
  • Der Handler endet mit Erfolg oder Fehler.
  • Bei Fehlern bestimmen Retries und Routing den nächsten Schritt.

Ablauf des Event-Lebenszyklus

Serverlose Anwendungen mit AWS Lambda

Zwei Arten, wie Fehler sichtbar werden

Synchron

  • Aufrufer wartet und erhält eine Fehlermeldung.

Asynchron

  • Aufrufer wird zuerst bestätigt.
  • Lambda versucht es im Hintergrund erneut.
  • Fehlerbehandlung hängt vom Aufrufmodus ab.

Fehlerpfade: synchron vs. asynchron

Serverlose Anwendungen mit AWS Lambda

Retries sind normal

  • Retries sind oft ein Feature, kein Bug.
  • Ein transienter Fehler kann beim nächsten Versuch klappen.
  • Retries können Duplikate erzeugen; dein Handler muss das berücksichtigen.

Analogie: Wiederwahl als Retry

Serverlose Anwendungen mit AWS Lambda

Retries über die Zeit

  • Retries beheben vorübergehende Probleme.
  • Aber dasselbe Event kann mehrfach laufen.
  • Idempotenz und klares Error-Handling sind entscheidend.

Zeitachse der Retry-Versuche

Serverlose Anwendungen mit AWS Lambda

Wenn Retries gefährlich sind

  • Retries sind riskant, wenn Arbeit nicht idempotent ist.
  • Beispiele: Karte belasten, E-Mail senden.
  • Nutze Idempotenz-Keys und sichere Updates, damit Duplikate nicht schaden.

Ziel der Idempotenz

Serverlose Anwendungen mit AWS Lambda

DLQ (Dead-Letter Queue)

  • Ein sicherer Ort für Events, die trotz Retries scheitern.
  • Oft eine SQS-Queue, AWSs verwaltete Message-Queue.
  • Payload prüfen, Problem beheben und erneut zustellen.

DLQ Fundbüro-Analogie

Serverlose Anwendungen mit AWS Lambda

DLQ vs. Destinations

DLQ Fundbüro-Analogie

  • Erfasst fehlgeschlagene Events nach Retries.
  • Für Analyse nutzen.

Routing mit Destinations

  • Leiten Outcomes bei Erfolg oder Fehler weiter.
  • Baue explizite Erfolgs- und Fehlerpfade.
Serverlose Anwendungen mit AWS Lambda

Destinations: Erfolgs- und Fehler-Routen

  • Bei Erfolg Ergebnis an onSuccess senden.
  • Bei Fehler Details an onFailure senden.
  • Macht den nächsten Schritt explizit.

Routing mit Destinations

Serverlose Anwendungen mit AWS Lambda

Retry-Policy abstimmen

  • Einstellen, wie oft Lambda erneut versucht.
  • Ereignisaltersgrenze setzen, um veraltete Daten zu meiden.
  • Mehr Retries erhöhen Zuverlässigkeit, aber auch Duplikate und Verzögerung.

Retry-Policy-Steuerung

Serverlose Anwendungen mit AWS Lambda

Maximales Ereignisalter: ein Ablaufdatum

  • Maximales Ereignisalter ist eine Ablaufpolitik.
  • Zu alte Events zu verarbeiten lohnt oft nicht.
  • Trade-off: weniger späte Events, zeitnäheres Verhalten.

Ablaufdatum fürs Ereignisalter

Serverlose Anwendungen mit AWS Lambda

Observability: Wo nachsehen

  • Logs sagen, was passiert ist.
  • Metriken sagen, wie oft es passiert.
  • Alarme helfen, Spitzen schnell zu erkennen.

Logs vs. Metriken

Serverlose Anwendungen mit AWS Lambda

Umgang mit fehlgeschlagenen Events

  • Payload und Fehler prüfen.
  • Ursache beheben.
  • Event erneut zustellen, dann Fehler und Durchsatz überwachen.

Recovery-Zyklus fehlgeschlagener Events

Serverlose Anwendungen mit AWS Lambda

Wichtigste Erkenntnisse

  • Zuverlässigkeit entsteht durch Retries, Routing und Observability.
  • Synchrone Fehler erreichen den Aufrufer.
  • Asynchrone Fehler brauchen Retries plus DLQs oder Destinations.
  • So bleiben Ausfälle sichtbar.

Diagramm: Zuverlässigkeitsformel

Serverlose Anwendungen mit AWS Lambda

Lass uns üben!

Serverlose Anwendungen mit AWS Lambda

Preparing Video For Download...