Gestionarea ciclului de viață al evenimentelor: reîncercări, DLQ-uri și destinații

Aplicații serverless cu AWS Lambda

Claudio Canales

Senior DevOps Engineer

Ciclul de viață al evenimentului pe scurt

  • Lambda apelează handlerul tău.
  • Handlerul fie reușește, fie eșuează.
  • La eșec, reîncercările și rutarea decid ce se întâmplă în continuare.

Fluxul ciclului de viață al evenimentului

Aplicații serverless cu AWS Lambda

Două moduri în care apar eșecurile

Sincron

  • Apelantul așteaptă și primește un răspuns de eroare.

Asincron

  • Apelantul este confirmat imediat.
  • Lambda reîncercă în fundal.
  • Gestionarea eșecurilor depinde de modul de invocare.

Căi de eșec sincron vs. asincron

Aplicații serverless cu AWS Lambda

Reîncercările sunt normale

  • Reîncercările sunt adesea o facilitate, nu o eroare.
  • Un eșec tranzitoriu poate reuși la următoarea încercare.
  • Reîncercările pot provoca procesare duplicată; handlerul trebuie să țină cont de asta.

Analogie reîncercare apel

Aplicații serverless cu AWS Lambda

Reîncercările în timp

  • Reîncercările pot remedia probleme tranzitorii.
  • Același eveniment poate fi executat de mai multe ori.
  • Idempotența și gestionarea clară a erorilor sunt esențiale.

Cronologia tentativelor de reîncercare

Aplicații serverless cu AWS Lambda

Când reîncercările sunt periculoase

  • Reîncercările sunt riscante când operațiile nu sunt idempotente.
  • Exemple: debitarea unui card, trimiterea unui email.
  • Folosește chei de idempotență și actualizări sigure ca duplicatele să nu cauzeze daune.

Obiectivul idempotentei

Aplicații serverless cu AWS Lambda

DLQ (Dead-Letter Queue)

  • Un loc sigur pentru evenimentele care eșuează și după reîncercări.
  • De obicei, o coadă SQS, serviciul de mesagerie gestionat AWS.
  • Inspectează payload-ul, remediază problema și reprocesează.

Analogie DLQ obiect pierdut

Aplicații serverless cu AWS Lambda

DLQ vs. destinații

Analogie DLQ obiect pierdut

  • Reține evenimentele eșuate după reîncercări.
  • Folosit pentru investigare.

Diagramă rutare destinații

  • Rutează rezultatele la succes sau eșec.
  • Definește explicit căi de succes și eșec.
Aplicații serverless cu AWS Lambda

Destinații: rute de succes și eșec

  • La succes, trimite rezultatul la onSuccess.
  • La eșec, trimite detaliile la onFailure.
  • Astfel, pasul următor devine explicit.

Diagramă rutare destinații

Aplicații serverless cu AWS Lambda

Ajustarea politicii de reîncercări

  • Configurează numărul de reîncercări ale Lambda.
  • Limitează vârsta evenimentului pentru a evita procesarea datelor expirate.
  • Mai multe reîncercări cresc fiabilitatea, dar și duplicatele și întârzierile.

Controale politică reîncercări

Aplicații serverless cu AWS Lambda

Vârsta maximă a evenimentului: o dată de expirare

  • Vârsta maximă a evenimentului este o politică de expirare.
  • Un eveniment prea vechi s-ar putea să nu mai aibă sens să fie procesat.
  • Un compromis: mai puține evenimente târzii, comportament mai oportun.

Analogie expirare vârstă eveniment

Aplicații serverless cu AWS Lambda

Observabilitate: unde să te uiți

  • Logurile răspund la întrebarea ce s-a întâmplat.
  • Metricile răspund la întrebarea cât de des se întâmplă.
  • Alarmele te ajută să detectezi rapid anomaliile.

Loguri vs. metrici

Aplicații serverless cu AWS Lambda

Ce faci cu evenimentele eșuate

  • Inspectează payload-ul și eroarea.
  • Remediază cauza principală.
  • Reprocesează evenimentul, apoi monitorizează erorile și debitul.

Ciclul de recuperare a evenimentelor eșuate

Aplicații serverless cu AWS Lambda

Concluzii cheie

  • Fiabilitatea vine din reîncercări, rutare și observabilitate.
  • Erorile sincrone ajung la apelant.
  • Erorile asincrone necesită reîncercări plus DLQ-uri sau destinații.
  • Astfel, eșecurile rămân vizibile.

Diagramă formula fiabilității

Aplicații serverless cu AWS Lambda

Hai să exersăm!

Aplicații serverless cu AWS Lambda

Preparing Video For Download...