Event-driven patronen met EventBridge

Applicaties implementeren op AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Eén order, vier reacties

  • Eén order moet naar billing, fulfillment, analytics, e-mail
  • Rechtstreeks aanroepen van alle vier is kwetsbaar en traag
  • Eén event wordt gefan-out naar elke consumer

Eén event dat vanaf een centraal topic parallel uitwaaiert naar meerdere downstreamservices

Applicaties implementeren op AWS

De juiste messagingservices kiezen

2x2-raster van AWS-messagingservices: SQS-queue met producer-consumerflow, SNS pub/sub-fanout naar meerdere abonnees, EventBridge event bus met regelgebaseerde routering en Kinesis geordende shards met replay

  • SQS: één queue, één consumergroep, at-least-once
  • SNS: pub/sub, push één bericht naar veel abonnees
  • EventBridge: routeer events op inhoud naar veel targets
  • Kinesis Data Streams: geordende, opnieuw afspeelbare streaming
Applicaties implementeren op AWS

Het fanoutpatroon

  • Eén event moet meerdere consumers tegelijk bereiken
  • Publiceer naar een SNS-topic
  • Elke SQS-queue abonneert op het topic
  • Elke consumer krijgt zijn eigen kopie, losgekoppeld

SNS-naar-SQS-fanoutpatroon: één SNS-topic dat publiceert naar meerdere SQS-queues, elke queue bedient zijn eigen consumer in eigen tempo

Applicaties implementeren op AWS

Filteren zodat consumers alleen krijgen wat ze nodig hebben

  • Zonder filters krijgt elke abonnee elk event
  • SNS-abonnementfilterbeleid: filter op berichtattributen
  • EventBridge-inhoudsfilters: match op eventvelden
  • Elke consumer ontvangt alleen relevante events

SNS-abonnementsfilterbeleid en EventBridge-inhoudsfilter: elke consumer ontvangt alleen events die met zijn filterregel matchen, wat onnodige verwerking en kosten vermindert

Applicaties implementeren op AWS

Routeren met EventBridge

EventBridge-routeringsdiagram: event bus die events van meerdere bronnen ontvangt, regels die eventpatronen matchen en gematchte events die naar Lambda, SQS en andere targets gaan

  • Event bus: ontvangt events van veel bronnen
  • Rule: een eventpatroon dat bepaalde events matcht
  • Target: waar gematchte events heen gaan
  • Eén event kan naar meerdere targets routeren
Applicaties implementeren op AWS

Streamen met Kinesis Data Streams

  • Een continue, realtime stroom records
    • Geordende records binnen een shard
    • Opnieuw afspeelbaar: consumers herlezen vanaf elk punt
    • Meerdere consumers lezen dezelfde stream onafhankelijk
    • Gebruik voor clickstream, telemetry, hoge doorvoer

Kinesis Data Streams-architectuur: producers schrijven geordende records in genummerde shards, drie consumers lezen onafhankelijk op verschillende posities, met een terugspoelpijl voor replay

Applicaties implementeren op AWS

Lambda als eventconsumer

  • Lambda kan worden getriggerd door SQS, SNS, EventBridge, Kinesis
  • Event source mapping pollt SQS en Kinesis voor je
  • SNS en EventBridge pushen events naar Lambda
  • Bijna-realtime verwerking zonder servers te beheren

Lambda getriggerd door vier eventbronnen: event source mapping die SQS en Kinesis in batches pollt, terwijl SNS en EventBridge events direct naar Lambda pushen

Applicaties implementeren op AWS

Laten we oefenen!

Applicaties implementeren op AWS

Preparing Video For Download...