Händelsedrivna applikationer

Utveckla applikationer på AWS

Ricardo Sueiras

Principal Technologist

Vad är en händelse?

 

event-vs-messages

  • Ett meddelande är en arbetsenhet som skickas mellan komponenter.
  • En händelse registrerar att något redan inträffat.
  • Tjänster kommunicerar genom att publicera händelser.
  • Andra tjänster reagerar självständigt på dessa händelser.
  • Frikoppling minskar beroenden och förbättrar skalbarhet.
Utveckla applikationer på AWS

Händelseproducenter

 

event producers

  • Producenter skapar och publicerar händelser när åtgärder inträffar.
  • Både AWS-tjänster och anpassade applikationer kan producera händelser.
  • Att ladda upp en fil till Amazon S3 är ett exempel.
  • Amazon S3 skickar då en object-created-händelse.
Utveckla applikationer på AWS

Händelsekonsumenter

 

consumers

  • Konsumenter tar emot och bearbetar händelser asynkront.
  • Händelsekällor använder olika leveransmodeller.
  • Push-baserad: händelser levereras omedelbart.
  • Pollbaserad: konsumenter hämtar händelser vid polling.
Utveckla applikationer på AWS

Händelsekällsmappning

  • AWS Lambda är en vanlig händelsekonsument.
  • Den pollar källor och hämtar poster i batchar automatiskt.

 

event source mapping

Utveckla applikationer på AWS

Finjustering av Lambda-händelsekällsmappningar

  • Justera händelsekällsmappningar för bättre genomströmning.
  • Ange batchstorlek för att styra antal poster per anrop.
  • Konfigurera återförsöksstyrning för misslyckade poster.
  • Använd partiella batchsvar på källor som stöder det.
  • ReportBatchItemFailures undviker ombearbetning av lyckade poster.

 

event source mapping

Utveckla applikationer på AWS

Amazon EventBridge

  • EventBridge dirigerar händelser mellan tjänster och applikationer.
  • Det möjliggör dynamisk dirigering utan tight koppling av tjänster.
  • Applikationer publicerar sina händelser till EventBridge.
  • Dirigeringsregler avgör vilka mål som tar emot varje händelse.

 

event bridge

Utveckla applikationer på AWS

EventBridge-funktioner

 

capabilities

  • EventBridge erbjuder flera dirigeringsfunktioner.
  • Regler skickar en händelse vidare till flera mål.
  • Schemalagda regler eliminerar behovet av cron-servrar.
  • Scheman stöder uttrycken rate(), at() och cron().
  • Pipes ger punkt-till-punkt-integration.
  • Pipes möjliggör även filtrering och transformering.
Utveckla applikationer på AWS

Händelsebussar

 

event bus

  • Olika händelsebussar optimerar hur händelser dirigeras.
  • Standardbussen tar emot händelser från AWS-tjänster.
  • Anpassade bussar hanterar applikationsspecifika händelser.
  • Partnerbussar tar emot händelser från tredjepartsleverantörer.
  • Regler placeras mellan varje buss och dess mål.
Utveckla applikationer på AWS

Schemaidentifiering

 

event schema and registry

  • Producenter och konsumenter utvecklas ofta oberoende av varandra.
  • Det är viktigt att förstå händelsernas struktur.
  • Schemaidentifiering fångar strukturen hos inkommande händelser.
  • Använd det för att granska händelsers innehåll.
  • Använd det för att validera integrationer.
  • Använd det för att generera bindningar för stödda språk.
Utveckla applikationer på AWS

Schemaregister

  • Schemaregistret lagrar dina händelsescheman.
  • Det hjälper utvecklare att förstå händelsestrukturer och generera bindningar.

 

event schema and registry

Utveckla applikationer på AWS

Händelsefiltrering

  • Filtrering minskar onödig bearbetning.
  • Definiera matchningar med JSON-händelsemönster.
  • Mönster matchar endast de specifika händelser du vill ha.
  • Nedströms system bearbetar då bara relevanta händelser.

 

event filtering

Utveckla applikationer på AWS

Händelseordning

  • Händelseordning är inte alltid garanterad.
  • Vissa tjänster kan bearbeta händelser i fel ordning.
  • Använd ordningsstyrning för att genomdriva sekvens explicit.

 

event ordering

Utveckla applikationer på AWS

Arkivering och uppspelning av händelser

 

archiving and replaying

  • EventBridge kan arkivera och senare spela upp händelser igen.
  • Spela upp händelser för att återhämta sig från fel.
  • Spela upp händelser för att testa nya konsumenter.
  • Spela upp händelser för att återskapa nedströmssystem.
Utveckla applikationer på AWS

Felhantering

 

handling errors

  • Händelsedrivna appar måste hantera fel på ett säkert sätt.
  • Fel inkluderar dubbletter av händelser.
    • Misslyckad bearbetning.
    • Otillgängliga konsumenter.
  • Utforma konsumenter att vara idempotenta så långt som möjligt.
Utveckla applikationer på AWS

DLQ:er och destinations

 

handling errors

  • Använd DLQ:er för att isolera händelser som upprepade gånger misslyckas.
  • I EventBridge konfigureras DLQ:er per regelsmål, inte per funktion.
  • Lambda Destinations utökar denna dirigering.
  • Destinations dirigerar både lyckade och misslyckade resultat.
Utveckla applikationer på AWS

Testning och validering av händelser

  • Testning av händelsedrivna appar validerar dirigering.
  • Det validerar även händelsefiltrering.
  • Det validerar även återförsök av händelser.
  • Det bekräftar bearbetning i distribuerade system.
  • Använd AWS SAM för att generera exempeltesthändelser.
  • Exempelhändelser replikerar exakt JSON-utdata.

 

testing

Utveckla applikationer på AWS

Vad du ska testa

  • SAM låter dig testa lokalt innan driftsättning.
  • Validera matchning av händelsemönster.
  • Validera beteende vid återförsök.
  • Validera begränsningsscenarier.
  • Validera leverans av dubbletter av händelser.
  • Validera idempotent konsumentbeteende.

 

testing

Utveckla applikationer på AWS

Nu kör vi en övning!

Utveckla applikationer på AWS

Preparing Video For Download...