Aplicații bazate pe evenimente

Dezvoltarea aplicațiilor pe AWS

Ricardo Sueiras

Principal Technologist

Ce este un eveniment?

 

event-vs-messages

  • Un mesaj este o unitate de lucru trimisă între componente.
  • Un eveniment înregistrează ceva ce s-a întâmplat deja.
  • Serviciile comunică publicând evenimente.
  • Alte servicii reacționează independent la acele evenimente.
  • Decuplarea reduce dependențele și îmbunătățește scalabilitatea.
Dezvoltarea aplicațiilor pe AWS

Producători de evenimente

 

event producers

  • Producătorii creează și publică evenimente când au loc acțiuni.
  • Atât serviciile AWS, cât și aplicațiile personalizate pot produce evenimente.
  • Încărcarea unui fișier în Amazon S3 este un exemplu.
  • Amazon S3 emite apoi un eveniment de tip „obiect creat".
Dezvoltarea aplicațiilor pe AWS

Consumatori de evenimente

 

consumers

  • Consumatorii primesc și procesează evenimentele asincron.
  • Sursele de evenimente folosesc modele diferite de livrare.
  • Bazat pe push: evenimentele sunt livrate imediat.
  • Bazat pe polling: consumatorii preiau evenimentele la interogare.
Dezvoltarea aplicațiilor pe AWS

Maparea surselor de evenimente

  • AWS Lambda este un consumator frecvent de evenimente.
  • Interoghează sursele și preia automat loturi de înregistrări.

 

event source mapping

Dezvoltarea aplicațiilor pe AWS

Optimizarea mapărilor Lambda pentru surse de evenimente

  • Ajustează mapările surselor de evenimente pentru un debit mai bun.
  • Modifică dimensiunea lotului pentru a controla înregistrările per invocare.
  • Configurează controalele de reîncercare pentru înregistrările eșuate.
  • Folosește răspunsuri parțiale pentru loturi pe sursele compatibile.
  • ReportBatchItemFailures evită reprocesarea înregistrărilor reușite.

 

event source mapping

Dezvoltarea aplicațiilor pe AWS

Amazon EventBridge

  • EventBridge rutează evenimente între servicii și aplicații.
  • Permite rutare dinamică fără cuplare strânsă între servicii.
  • Aplicațiile își publică evenimentele în EventBridge.
  • Regulile de rutare stabilesc ce ținte primesc fiecare eveniment.

 

event bridge

Dezvoltarea aplicațiilor pe AWS

Capabilitățile EventBridge

 

capabilities

  • EventBridge oferă mai multe capabilități de rutare.
  • Regulile distribuie un eveniment către mai multe ținte.
  • Regulile programate elimină nevoia de servere cron.
  • Programările suportă expresii rate(), at() și cron().
  • Pipe-urile asigură integrare punct-la-punct.
  • Pipe-urile permit și filtrare și transformare.
Dezvoltarea aplicațiilor pe AWS

Magistrale de evenimente

 

event bus

  • Diferite magistrale de evenimente optimizează modul de rutare.
  • Magistrala implicită primește evenimente de la serviciile AWS.
  • Magistralele personalizate transportă evenimente specifice aplicației.
  • Magistralele partener primesc evenimente de la furnizori terți.
  • Regulile se află între fiecare magistrală și țintele sale.
Dezvoltarea aplicațiilor pe AWS

Descoperirea schemelor

 

event schema and registry

  • Producătorii și consumatorii evoluează adesea independent.
  • Înțelegerea structurii evenimentelor este esențială.
  • Descoperirea schemei captează structura evenimentelor primite.
  • Folosește-o pentru a inspecta payload-urile evenimentelor.
  • Folosește-o pentru a valida integrările.
  • Folosește-o pentru a genera binding-uri pentru limbajele suportate.
Dezvoltarea aplicațiilor pe AWS

Registrul de scheme

  • Registrul de scheme stochează schemele tale de evenimente.
  • Ajută dezvoltatorii să înțeleagă structura evenimentelor și să genereze binding-uri.

 

event schema and registry

Dezvoltarea aplicațiilor pe AWS

Filtrarea evenimentelor

  • Filtrarea reduce procesarea inutilă.
  • Definește potrivirile cu tipare de evenimente JSON.
  • Tiparele selectează doar evenimentele dorite.
  • Sistemele din aval procesează astfel doar evenimentele relevante.

 

event filtering

Dezvoltarea aplicațiilor pe AWS

Ordonarea evenimentelor

  • Ordinea evenimentelor nu este întotdeauna garantată.
  • Unele servicii pot procesa evenimente în afara secvenței.
  • Folosește controale de ordonare pentru a impune secvența explicit.

 

event ordering

Dezvoltarea aplicațiilor pe AWS

Arhivarea și redarea evenimentelor

 

archiving and replaying

  • EventBridge poate arhiva și reda ulterior evenimentele.
  • Redă evenimente pentru a te recupera după eșecuri.
  • Redă evenimente pentru a testa noi consumatori.
  • Redă evenimente pentru a reconstrui sistemele din aval.
Dezvoltarea aplicațiilor pe AWS

Gestionarea erorilor

 

handling errors

  • Aplicațiile bazate pe evenimente trebuie să gestioneze erorile în siguranță.
  • Eșecurile includ evenimente duplicate.
    • Procesare eșuată.
    • Consumatori indisponibili.
  • Proiectează consumatorii să fie idempotenti ori de câte ori este posibil.
Dezvoltarea aplicațiilor pe AWS

DLQ-uri și destinații

 

handling errors

  • Folosește DLQ-uri pentru a izola evenimentele care eșuează repetat.
  • În EventBridge, DLQ-urile sunt configurate per țintă de regulă, nu per funcție.
  • Lambda Destinations extind această rutare.
  • Destinations rutează atât rezultatele de succes, cât și pe cele de eșec.
Dezvoltarea aplicațiilor pe AWS

Testarea și validarea evenimentelor

  • Testarea aplicațiilor bazate pe evenimente validează rutarea.
  • Validează și filtrarea evenimentelor.
  • Validează și reîncercările de evenimente.
  • Confirmă procesarea în sisteme distribuite.
  • Folosește AWS SAM pentru a genera evenimente de test eșantion.
  • Evenimentele eșantion replică exact rezultatul JSON.

 

testing

Dezvoltarea aplicațiilor pe AWS

Ce să testezi

  • SAM îți permite să testezi local înainte de implementare.
  • Validează potrivirea tiparelor de evenimente.
  • Validează comportamentul de reîncercare.
  • Validează scenariile de limitare a traficului.
  • Validează livrarea duplicată a evenimentelor.
  • Validează comportamentul idempotent al consumatorilor.

 

testing

Dezvoltarea aplicațiilor pe AWS

Hai să exersăm!

Dezvoltarea aplicațiilor pe AWS

Preparing Video For Download...