Applications pilotées par les événements

Développer des applications sur AWS

Ricardo Sueiras

Principal Technologist

Qu'est-ce qu'un événement ?

 

event-vs-messages

  • Un message est une unité de travail envoyée entre composants.
  • Un événement enregistre qu'une action a déjà eu lieu.
  • Les services communiquent en publiant des événements.
  • D'autres services réagissent à ces événements de façon indépendante.
  • Le découplage réduit les dépendances et améliore l'évolutivité.
Développer des applications sur AWS

Producteurs d'événements

 

event producers

  • Des producteurs créent et publient des événements quand des actions se produisent.
  • Les services AWS comme les applications personnalisées peuvent produire des événements.
  • Charger un fichier dans Amazon S3 en est un exemple.
  • Amazon S3 émet alors un événement « object-created ».
Développer des applications sur AWS

Consommateurs d'événements

 

consumers

  • Des consommateurs reçoivent et traitent les événements de façon asynchrone.
  • Les sources d'événements utilisent différents modèles de livraison.
  • Push : les événements sont livrés immédiatement.
  • Poll : les consommateurs récupèrent les événements lorsqu'ils interrogent la source.
Développer des applications sur AWS

Mappage des sources d'événements

  • AWS Lambda est un consommateur d'événements courant.
  • Il interroge les sources et récupère automatiquement des lots d'enregistrements.

 

event source mapping

Développer des applications sur AWS

Optimiser les mappages de sources pour Lambda

  • Réglez les mappages de source pour améliorer le débit.
  • Ajustez la taille de lot pour contrôler les enregistrements par invocation.
  • Configurez les nouvelles tentatives pour les enregistrements en échec.
  • Utilisez des réponses partielles de lot sur les sources prises en charge.
  • ReportBatchItemFailures évite de retraiter les enregistrements réussis.

 

event source mapping

Développer des applications sur AWS

Amazon EventBridge

  • EventBridge achemine les événements entre services et applications.
  • Il permet un routage dynamique sans couplage fort.
  • Les applications publient leurs événements vers EventBridge.
  • Des règles de routage décident quelles cibles reçoivent chaque événement.

 

event bridge

Développer des applications sur AWS

Capacités d'EventBridge

 

capabilities

  • EventBridge offre plusieurs capacités de routage.
  • Les règles diffusent un événement vers de nombreuses cibles.
  • Les règles planifiées évitent d'avoir des serveurs cron.
  • Les plannings prennent en charge les expressions rate(), at() et cron().
  • Les Pipes fournissent une intégration point à point.
  • Les Pipes permettent aussi filtrage et transformation.
Développer des applications sur AWS

Bus d'événements

 

event bus

  • Différents bus d'événements optimisent l'acheminement.
  • Le bus par défaut reçoit les événements des services AWS.
  • Les bus personnalisés transportent les événements propres à l'application.
  • Les bus partenaires reçoivent les événements de fournisseurs tiers.
  • Des règles se trouvent entre chaque bus et ses cibles.
Développer des applications sur AWS

Découverte de schémas

 

event schema and registry

  • Producteurs et consommateurs évoluent souvent indépendamment.
  • Comprendre la structure des événements est essentiel.
  • La découverte de schémas capture la structure des événements entrants.
  • Utilisez-la pour inspecter les charges utiles.
  • Utilisez-la pour valider les intégrations.
  • Utilisez-la pour générer des liaisons pour les langages pris en charge.
Développer des applications sur AWS

Registre de schémas

  • Le registre de schémas stocke vos schémas d'événements.
  • Il aide les développeurs à comprendre la structure et à générer des liaisons.

 

event schema and registry

Développer des applications sur AWS

Filtrage des événements

  • Le filtrage réduit les traitements inutiles.
  • Définissez des correspondances avec des modèles d'événements JSON.
  • Les modèles ne correspondent qu'aux événements voulus.
  • Les systèmes en aval traitent alors uniquement les événements pertinents.

 

event filtering

Développer des applications sur AWS

Ordonnancement des événements

  • L'ordre des événements n'est pas toujours garanti.
  • Certains services peuvent traiter des événements hors séquence.
  • Utilisez des contrôles d'ordonnancement pour imposer la séquence.

 

event ordering

Développer des applications sur AWS

Archivage et relecture des événements

 

archiving and replaying

  • EventBridge peut archiver puis rejouer des événements.
  • Rejouez des événements pour récupérer après un échec.
  • Rejouez des événements pour tester de nouveaux consommateurs.
  • Rejouez des événements pour reconstruire les systèmes en aval.
Développer des applications sur AWS

Gestion des erreurs

 

handling errors

  • Les applications pilotées par événements doivent gérer les erreurs en toute sécurité.
  • Les échecs incluent des événements dupliqués.
    • Traitement en échec.
    • Consommateurs indisponibles.
  • Concevez des consommateurs idempotents autant que possible.
Développer des applications sur AWS

DLQ et destinations

 

handling errors

  • Utilisez des DLQ pour isoler les événements qui échouent à répétition.
  • Dans EventBridge, les DLQ se configurent par cible de règle, pas par fonction.
  • Lambda Destinations étend ce routage.
  • Les Destinations routent à la fois les réussites et les échecs.
Développer des applications sur AWS

Tester et valider les événements

  • Tester des apps pilotées par événements valide le routage.
  • Cela valide aussi le filtrage des événements.
  • Cela valide aussi les nouvelles tentatives.
  • Cela confirme le traitement sur des systèmes distribués.
  • Utilisez AWS SAM pour générer des événements de test.
  • Les exemples reproduisent exactement la sortie JSON.

 

testing

Développer des applications sur AWS

Que tester

  • SAM permet de tester en local avant déploiement.
  • Validez la correspondance des modèles d'événement.
  • Validez le comportement de nouvelle tentative.
  • Validez les scénarios de limitation (throttling).
  • Validez la livraison d'événements en doublon.
  • Validez le comportement idempotent des consommateurs.

 

testing

Développer des applications sur AWS

Passons à la pratique !

Développer des applications sur AWS

Preparing Video For Download...