Gérer le cycle de vie des événements : reprises, DLQ et destinations

Applications sans serveur avec AWS Lambda

Claudio Canales

Senior DevOps Engineer

Le cycle de vie d'un événement en bref

  • Lambda appelle votre gestionnaire.
  • Le gestionnaire réussit ou échoue.
  • En cas d'échec, les reprises et l'acheminement décident de la suite.

Schéma du cycle de vie d'un événement

Applications sans serveur avec AWS Lambda

Deux façons dont les échecs surviennent

Synchrone

  • L'appelant attend et reçoit une erreur.

Asynchrone

  • L'appelant est accusé réception d'abord.
  • Lambda réessaie en arrière-plan.
  • Le traitement d'échec dépend du mode d'appel.

Parcours d'échec synchrone vs asynchrone

Applications sans serveur avec AWS Lambda

Les reprises sont normales

  • Les reprises sont souvent une fonctionnalité, pas un bogue.
  • Un échec transitoire peut réussir à la tentative suivante.
  • Les reprises peuvent créer des doublons ; votre gestionnaire doit en tenir compte.

Analogie : recomposer après un échec

Applications sans serveur avec AWS Lambda

Reprises dans le temps

  • Les reprises peuvent corriger des problèmes transitoires.
  • Mais le même événement peut s'exécuter plusieurs fois.
  • L'idempotence et une gestion d'erreurs claire sont essentielles.

Chronologie des tentatives de reprise

Applications sans serveur avec AWS Lambda

Quand les reprises sont dangereuses

  • Les reprises sont risquées si le travail n'est pas idempotent.
  • Exemples : débiter une carte, envoyer un courriel.
  • Utilisez des clés d'idempotence et des mises à jour sécuritaires pour éviter les effets des doublons.

Objectif : idempotence

Applications sans serveur avec AWS Lambda

DLQ (Dead‑Letter Queue)

  • Un endroit sûr pour les événements qui échouent malgré les reprises.
  • Souvent une file SQS, le service de file de messages géré d'AWS.
  • Inspectez la charge utile, corrigez le problème, puis réinjectez.

Analogie : DLQ comme objets trouvés

Applications sans serveur avec AWS Lambda

DLQ vs destinations

Analogie : DLQ comme objets trouvés

  • Capture les événements en échec après reprises.
  • À utiliser pour l'enquête.

Diagramme d'acheminement des destinations

  • Acheminez les résultats en cas de succès ou d'échec.
  • Construisez des parcours explicites de réussite et d'échec.
Applications sans serveur avec AWS Lambda

Destinations : parcours de succès et d'échec

  • En cas de succès, envoyer le résultat à onSuccess.
  • En cas d'échec, envoyer les détails à onFailure.
  • La prochaine étape devient explicite.

Diagramme d'acheminement des destinations

Applications sans serveur avec AWS Lambda

Ajuster la stratégie de reprise

  • Réglez le nombre de reprises de Lambda.
  • Limitez l'âge des événements pour éviter les données périmées.
  • Plus de reprises : fiabilité accrue, mais plus de doublons et de délais.

Contrôles de la stratégie de reprise

Applications sans serveur avec AWS Lambda

Âge maximal de l'événement : date d'expiration

  • L'âge maximal d'un événement agit comme une date d'expiration.
  • Si l'événement est trop vieux, le traiter peut être inutile.
  • Compromis : moins d'événements tardifs, comportement plus opportun.

Analogie : expiration de l'âge d'un événement

Applications sans serveur avec AWS Lambda

Observabilité : où regarder

  • Les journaux indiquent ce qui s'est passé.
  • Les mesures indiquent la fréquence.
  • Les alarmes permettent de repérer vite les pointes.

Journaux vs mesures

Applications sans serveur avec AWS Lambda

Que faire des événements en échec

  • Inspectez la charge utile et l'erreur.
  • Corrigez la cause première.
  • Réinjectez l'événement, puis surveillez erreurs et débit.

Cycle de rétablissement des événements en échec

Applications sans serveur avec AWS Lambda

Points clés

  • La fiabilité vient des reprises, de l'acheminement et de l'observabilité.
  • Les erreurs synchrones parviennent à l'appelant.
  • Les erreurs asynchrones exigent des reprises plus des DLQ ou des destinations.
  • Ainsi les échecs restent visibles.

Diagramme : formule de fiabilité

Applications sans serveur avec AWS Lambda

Passons à la pratique !

Applications sans serveur avec AWS Lambda

Preparing Video For Download...