Gestire il ciclo di vita degli eventi: retry, DLQ e destinazioni

Applicazioni serverless con AWS Lambda

Claudio Canales

Senior DevOps Engineer

Il ciclo di vita dell'evento in breve

  • Lambda invoca il tuo handler.
  • L'handler ha esito positivo o fallisce.
  • Se fallisce, retry e instradamento decidono il seguito.

Flusso ciclo di vita evento

Applicazioni serverless con AWS Lambda

Due modi in cui emergono gli errori

Sincrono

  • Il caller attende e riceve un errore.

Asincrono

  • Il caller riceve prima l'ok.
  • Lambda riprova in background.
  • La gestione degli errori dipende dalla modalità di invocazione.

Percorsi di errore: sync vs async

Applicazioni serverless con AWS Lambda

I retry sono normali

  • I retry sono spesso una feature, non un bug.
  • Un errore transitorio può riuscire al tentativo successivo.
  • I retry possono causare duplicati; l'handler deve gestirli.

Analogia dei retry: richiamare

Applicazioni serverless con AWS Lambda

Retry nel tempo

  • I retry recuperano problemi temporanei.
  • Ma lo stesso evento può eseguire più volte.
  • Idempotenza e gestione chiara degli errori sono essenziali.

Cronologia dei tentativi di retry

Applicazioni serverless con AWS Lambda

Quando i retry sono pericolosi

  • I retry sono rischiosi se il lavoro non è idempotente.
  • Esempi: addebitare una carta, inviare un'email.
  • Usa chiavi di idempotenza e update sicuri per evitare danni da duplicati.

Obiettivo idempotenza

Applicazioni serverless con AWS Lambda

DLQ (Dead-Letter Queue)

  • Un posto sicuro per eventi che falliscono anche dopo i retry.
  • Spesso una coda SQS, il servizio di queue gestito di AWS.
  • Ispeziona il payload, risolvi il problema e re-drive.

Analogia DLQ oggetti smarriti

Applicazioni serverless con AWS Lambda

DLQ vs destinazioni

Analogia DLQ oggetti smarriti

  • Cattura eventi falliti dopo i retry.
  • Usala per indagare.

Schema instradamento destinazioni

  • Instrada gli esiti su successo o errore.
  • Crea percorsi espliciti di successo e fallimento.
Applicazioni serverless con AWS Lambda

Destinazioni: percorsi di successo ed errore

  • In caso di successo, invia il risultato a onSuccess.
  • In caso di errore, invia i dettagli a onFailure.
  • Rende esplicito il prossimo passo.

Schema instradamento destinazioni

Applicazioni serverless con AWS Lambda

Regolare la policy di retry

  • Regola quante volte Lambda ritenta.
  • Limita l'età dell'evento per evitare dati obsoleti.
  • Più retry aumentano l'affidabilità ma anche duplicati e ritardi.

Controlli policy di retry

Applicazioni serverless con AWS Lambda

Età massima evento: una data di scadenza

  • L'età massima dell'evento è una policy di scadenza.
  • Se un evento è troppo vecchio, potrebbe non valere la pena elaborarlo.
  • Trade-off: meno eventi in ritardo, comportamento più tempestivo.

Analogia scadenza età evento

Applicazioni serverless con AWS Lambda

Osservabilità: dove guardare

  • I log dicono cosa è successo.
  • Le metriche dicono quanto spesso accade.
  • Gli allarmi aiutano a cogliere subito i picchi.

Log vs metriche

Applicazioni serverless con AWS Lambda

Cosa fare con gli eventi falliti

  • Ispeziona payload ed errore.
  • Risolvi la causa radice.
  • Re-drive l'evento, poi monitora errori e throughput.

Ciclo di recupero eventi falliti

Applicazioni serverless con AWS Lambda

Punti chiave

  • L'affidabilità deriva da retry, instradamento e osservabilità.
  • Gli errori sincroni arrivano al caller.
  • Gli errori asincroni richiedono retry più DLQ o destinazioni.
  • Così i fallimenti restano visibili.

Diagramma formula affidabilità

Applicazioni serverless con AWS Lambda

Ayo berlatih!

Applicazioni serverless con AWS Lambda

Preparing Video For Download...