Applicazioni event-driven

Sviluppare applicazioni su AWS

Ricardo Sueiras

Principal Technologist

Che cos'è un evento?

 

event-vs-messages

  • Un messaggio è un'unità di lavoro inviata tra componenti.
  • Un evento registra che qualcosa è già accaduto.
  • I servizi comunicano pubblicando eventi.
  • Altri servizi reagiscono in modo indipendente a quegli eventi.
  • Il disaccoppiamento riduce le dipendenze e migliora la scalabilità.
Sviluppare applicazioni su AWS

Produttori di eventi

 

event producers

  • I produttori creano e pubblicano eventi quando avvengono azioni.
  • Sia i servizi AWS sia le app personalizzate possono produrre eventi.
  • Caricare un file su Amazon S3 è un esempio.
  • Amazon S3 quindi emette un evento object-created.
Sviluppare applicazioni su AWS

Consumer di eventi

 

consumers

  • I consumer ricevono ed elaborano eventi in modo asincrono.
  • Le sorgenti evento usano modelli di consegna diversi.
  • Push-based: gli eventi sono consegnati subito.
  • Poll-based: i consumer recuperano eventi quando effettuano polling.
Sviluppare applicazioni su AWS

Event source mapping

  • AWS Lambda è un consumer di eventi comune.
  • Effettua polling delle sorgenti e recupera batch di record automaticamente.

 

event source mapping

Sviluppare applicazioni su AWS

Ottimizzare le event source mappings di Lambda

  • Ottimizza le event source mappings per aumentare il throughput.
  • Regola la dimensione del batch per controllare i record per invocazione.
  • Configura i retry per i record non riusciti.
  • Usa le risposte parziali del batch sulle sorgenti supportate.
  • ReportBatchItemFailures evita di rielaborare i record riusciti.

 

event source mapping

Sviluppare applicazioni su AWS

Amazon EventBridge

  • EventBridge instrada eventi tra servizi e applicazioni.
  • Abilita routing dinamico senza forte accoppiamento tra servizi.
  • Le applicazioni pubblicano i propri eventi su EventBridge.
  • Le regole di routing decidono quali target ricevono ogni evento.

 

event bridge

Sviluppare applicazioni su AWS

Funzionalità di EventBridge

 

capabilities

  • EventBridge offre diverse funzionalità di routing.
  • Le regole diffondono un evento verso più target.
  • Le regole pianificate eliminano i server cron.
  • Le pianificazioni supportano le espressioni rate(), at() e cron().
  • Le Pipes forniscono integrazione punto a punto.
  • Le Pipes consentono anche filtraggio e trasformazione.
Sviluppare applicazioni su AWS

Event bus

 

event bus

  • Bus di eventi diversi ottimizzano l'instradamento.
  • Il bus predefinito riceve eventi dai servizi AWS.
  • I bus personalizzati trasportano eventi specifici dell'applicazione.
  • I bus partner ricevono eventi da provider terzi.
  • Le regole stanno tra ogni bus e i suoi target.
Sviluppare applicazioni su AWS

Schema discovery

 

event schema and registry

  • Produttori e consumer spesso evolvono in modo indipendente.
  • Capire la struttura dell'evento è essenziale.
  • La discovery degli schemi cattura la struttura degli eventi in arrivo.
  • Usala per ispezionare i payload degli eventi.
  • Usala per validare le integrazioni.
  • Usala per generare binding per i linguaggi supportati.
Sviluppare applicazioni su AWS

Schema registry

  • Il registry degli schemi archivia gli schemi dei tuoi eventi.
  • Aiuta gli sviluppatori a capire la struttura e a generare binding.

 

event schema and registry

Sviluppare applicazioni su AWS

Filtraggio degli eventi

  • Il filtraggio riduce l'elaborazione non necessaria.
  • Definisci corrispondenze con pattern di eventi JSON.
  • I pattern selezionano solo gli eventi che vuoi.
  • I sistemi a valle elaborano solo gli eventi rilevanti.

 

event filtering

Sviluppare applicazioni su AWS

Ordinamento degli eventi

  • L'ordinamento degli eventi non è sempre garantito.
  • Alcuni servizi possono elaborare eventi fuori sequenza.
  • Usa controlli di ordering per imporre esplicitamente la sequenza.

 

event ordering

Sviluppare applicazioni su AWS

Archiviare e riprodurre eventi

 

archiving and replaying

  • EventBridge può archiviare e poi riprodurre eventi.
  • Riproduci eventi per recuperare da errori.
  • Riproduci eventi per testare nuovi consumer.
  • Riproduci eventi per ricostruire i sistemi a valle.
Sviluppare applicazioni su AWS

Gestione degli errori

 

handling errors

  • Le app event-driven devono gestire gli errori in modo sicuro.
  • I problemi includono eventi duplicati.
    • Elaborazioni non riuscite.
    • Consumer non disponibili.
  • Progetta i consumer per essere idempotenti quando possibile.
Sviluppare applicazioni su AWS

DLQ e destinazioni

 

handling errors

  • Usa le DLQ per isolare eventi che falliscono ripetutamente.
  • In EventBridge, le DLQ si configurano per target di regola, non per funzione.
  • Lambda Destinations estende questo routing.
  • Destinations instrada sia i risultati di successo sia quelli di errore.
Sviluppare applicazioni su AWS

Test e validazione degli eventi

  • Testare le app event-driven valida il routing.
  • Valida anche il filtraggio degli eventi.
  • Valida anche i retry degli eventi.
  • Conferma l'elaborazione tra sistemi distribuiti.
  • Usa AWS SAM per generare eventi di test di esempio.
  • Gli esempi replicano l'output JSON esatto.

 

testing

Sviluppare applicazioni su AWS

Cosa testare

  • SAM ti consente di testare in locale prima del deploy.
  • Valida il pattern matching degli eventi.
  • Valida il comportamento dei retry.
  • Valida scenari di throttling.
  • Valida la consegna di eventi duplicati.
  • Valida il comportamento idempotente dei consumer.

 

testing

Sviluppare applicazioni su AWS

Esercitiamoci!

Sviluppare applicazioni su AWS

Preparing Video For Download...