Event-driven applicaties

Toepassingen ontwikkelen op AWS

Ricardo Sueiras

Principal Technologist

Wat is een event?

 

events vs. berichten

  • Een bericht is een werkeenheid tussen componenten.
  • Een event legt vast dat iets al is gebeurd.
  • Services communiceren door events te publiceren.
  • Andere services reageren daar onafhankelijk op.
  • Ontkoppelen verlaagt afhankelijkheden en verbetert schaalbaarheid.
Toepassingen ontwikkelen op AWS

Event producers

 

event producers

  • Producers maken en publiceren events bij acties.
  • Zowel AWS-services als maatwerkapplicaties kunnen events produceren.
  • Een bestand uploaden naar Amazon S3 is één voorbeeld.
  • Amazon S3 verstuurt dan een object-created event.
Toepassingen ontwikkelen op AWS

Event consumers

 

consumers

  • Consumers ontvangen en verwerken events asynchroon.
  • Eventbronnen gebruiken verschillende leveringsmodellen.
  • Push-based: events worden direct afgeleverd.
  • Poll-based: consumers halen events op wanneer ze pollen.
Toepassingen ontwikkelen op AWS

Event source mapping

  • AWS Lambda is een veelgebruikte consumer.
  • Het pollt bronnen en haalt automatisch batches records op.

 

event source mapping

Toepassingen ontwikkelen op AWS

Lambda event source mappings tunen

  • Stem event source mappings af voor hogere throughput.
  • Pas batchgrootte aan om records per aanroep te sturen.
  • Configureer retries voor mislukte records.
  • Gebruik partial batch responses bij ondersteunde bronnen.
  • ReportBatchItemFailures voorkomt herverwerking van geslaagde records.

 

event source mapping

Toepassingen ontwikkelen op AWS

Amazon EventBridge

  • EventBridge routeert events tussen services en applicaties.
  • Het maakt dynamische routing mogelijk zonder nauwe koppeling.
  • Applicaties publiceren hun events naar EventBridge.
  • Routingregels bepalen welke targets elk event krijgen.

 

event bridge

Toepassingen ontwikkelen op AWS

EventBridge-mogelijkheden

 

mogelijkheden

  • EventBridge biedt diverse routingmogelijkheden.
  • Regels fannen één event uit naar veel targets.
  • Geplande regels maken cron-servers overbodig.
  • Planningen ondersteunen rate(), at() en cron()-expressies.
  • Pipes bieden point-to-point-integratie.
  • Pipes maken ook filtering en transformatie mogelijk.
Toepassingen ontwikkelen op AWS

Eventbussen

 

event bus

  • Verschillende eventbussen optimaliseren hoe events worden gerouteerd.
  • De standaardbus ontvangt events van AWS-services.
  • Aangepaste bussen dragen applicatiespecifieke events.
  • Partnerbussen ontvangen events van derden.
  • Regels zitten tussen elke bus en zijn targets.
Toepassingen ontwikkelen op AWS

Schemas ontdekken

 

event schema en register

  • Producers en consumers evolueren vaak onafhankelijk.
  • Inzicht in eventstructuur is essentieel.
  • Schema discovery legt de structuur van inkomende events vast.
  • Gebruik het om payloads te inspecteren.
  • Gebruik het om integraties te valideren.
  • Gebruik het om bindings te genereren voor ondersteunde talen.
Toepassingen ontwikkelen op AWS

Schemaregister

  • Het schemaregister slaat je eventschema's op.
  • Het helpt ontwikkelaars de structuur te begrijpen en bindings te genereren.

 

event schema en register

Toepassingen ontwikkelen op AWS

Events filteren

  • Filteren vermindert onnodige verwerking.
  • Definieer matches met JSON-eventpatronen.
  • Patronen matchen alleen de events die je wilt.
  • Downstreamsystemen verwerken dan alleen relevante events.

 

event filtering

Toepassingen ontwikkelen op AWS

Volgorde van events

  • Eventvolgorde is niet altijd gegarandeerd.
  • Sommige services verwerken events buiten volgorde.
  • Gebruik ordering controls om de volgorde af te dwingen.

 

event ordering

Toepassingen ontwikkelen op AWS

Events archiveren en opnieuw afspelen

 

archiveren en opnieuw afspelen

  • EventBridge kan events archiveren en later opnieuw afspelen.
  • Speel events opnieuw af om van fouten te herstellen.
  • Speel events opnieuw af om nieuwe consumers te testen.
  • Speel events opnieuw af om downstreamsystemen te herbouwen.
Toepassingen ontwikkelen op AWS

Foutafhandeling

 

fouten afhandelen

  • Event-driven apps moeten fouten veilig afhandelen.
  • Fouten omvatten dubbele events.
    • Mislukte verwerking.
    • Niet-beschikbare consumers.
  • Ontwerp consumers waar mogelijk idempotent.
Toepassingen ontwikkelen op AWS

DLQ's en destinations

 

fouten afhandelen

  • Gebruik DLQ's om events die steeds falen te isoleren.
  • In EventBridge stel je DLQ's in per regeltarget, niet per functie.
  • Lambda Destinations breiden deze routing uit.
  • Destinations routeren zowel successen als fouten.
Toepassingen ontwikkelen op AWS

Events testen en valideren

  • Event-driven apps testen valideert routing.
  • Het valideert ook eventfiltering.
  • Het valideert ook retries.
  • Het bevestigt verwerking over gedistribueerde systemen.
  • Gebruik AWS SAM om voorbeeld-events te genereren.
  • Voorbeelden repliceren de exacte JSON-output.

 

testen

Toepassingen ontwikkelen op AWS

Wat test je

  • Met SAM kun je lokaal testen vóór deployment.
  • Valideer eventpatroon-matching.
  • Valideer retry-gedrag.
  • Valideer throttling-scenario's.
  • Valideer dubbele eventlevering.
  • Valideer idempotent gedrag van consumers.

 

testen

Toepassingen ontwikkelen op AWS

Laten we oefenen!

Toepassingen ontwikkelen op AWS

Preparing Video For Download...