Aplikace řízené událostmi

Developing Applications on AWS

Ricardo Sueiras

Principal Technologist

Co je to událost?

 

event-vs-messages

  • Zpráva je jednotka práce odesílaná mezi komponentami.
  • Událost zaznamenává, že něco již proběhlo.
  • Služby komunikují publikováním událostí.
  • Ostatní služby na tyto události reagují nezávisle.
  • Oddělení závislostí snižuje provázanost a zlepšuje škálovatelnost.
Developing Applications on AWS

Producenti událostí

 

event producers

  • Producenti vytvářejí a publikují události, když nastane určitá akce.
  • Události mohou produkovat jak služby AWS, tak vlastní aplikace.
  • Příkladem je nahrání souboru do Amazon S3.
  • Amazon S3 pak vyšle událost o vytvoření objektu.
Developing Applications on AWS

Konzumenti událostí

 

consumers

  • Konzumenti přijímají a zpracovávají události asynchronně.
  • Zdroje událostí používají různé modely doručování.
  • Push: události jsou doručeny okamžitě.
  • Pull: konzumenti si události načítají při dotazování.
Developing Applications on AWS

Mapování zdrojů událostí

  • AWS Lambda je běžný konzument událostí.
  • Automaticky dotazuje zdroje a načítá dávky záznamů.

 

event source mapping

Developing Applications on AWS

Ladění mapování zdrojů událostí Lambda

  • Uprav mapování zdrojů událostí pro lepší propustnost.
  • Nastav velikost dávky pro počet záznamů na jedno volání.
  • Nakonfiguruj opakování zpracování chybných záznamů.
  • Na podporovaných zdrojích použij částečné odpovědi dávky.
  • ReportBatchItemFailures zabraňuje opětovnému zpracování úspěšných záznamů.

 

event source mapping

Developing Applications on AWS

Amazon EventBridge

  • EventBridge směruje události mezi službami a aplikacemi.
  • Umožňuje dynamické směrování bez těsné provázanosti služeb.
  • Aplikace publikují události do EventBridge.
  • Pravidla směrování určují, které cíle každou událost obdrží.

 

event bridge

Developing Applications on AWS

Možnosti EventBridge

 

capabilities

  • EventBridge nabízí několik možností směrování.
  • Pravidla rozesílají jednu událost do více cílů.
  • Naplánovaná pravidla odstraňují potřebu cron serverů.
  • Plánování podporuje výrazy rate(), at() a cron().
  • Pipes zajišťují propojení typu point-to-point.
  • Pipes také umožňují filtrování a transformaci.
Developing Applications on AWS

Event busy

 

event bus

  • Různé event busy optimalizují způsob směrování událostí.
  • Výchozí bus přijímá události ze služeb AWS.
  • Vlastní busy přenášejí události specifické pro aplikaci.
  • Partnerské busy přijímají události od externích poskytovatelů.
  • Pravidla stojí mezi každým busem a jeho cíli.
Developing Applications on AWS

Rozpoznání schémat

 

event schema and registry

  • Producenti a konzumenti se často vyvíjejí nezávisle.
  • Porozumění struktuře události je klíčové.
  • Automatické rozpoznání schématu zachycuje strukturu příchozích událostí.
  • Použij ho k prohlížení payloadů událostí.
  • Použij ho k ověření integrací.
  • Použij ho k vygenerování bindings pro podporované jazyky.
Developing Applications on AWS

Registr schémat

  • Registr schémat ukládá schémata tvých událostí.
  • Pomáhá vývojářům pochopit strukturu událostí a generovat bindings.

 

event schema and registry

Developing Applications on AWS

Filtrování událostí

  • Filtrování snižuje zbytečné zpracování.
  • Shody definuj pomocí JSON vzorů událostí.
  • Vzory odpovídají jen konkrétním událostem, které chceš zachytit.
  • Navazující systémy pak zpracovávají pouze relevantní události.

 

event filtering

Developing Applications on AWS

Pořadí událostí

  • Pořadí událostí není vždy zaručeno.
  • Některé služby mohou zpracovávat události mimo pořadí.
  • Použij ovládací prvky pořadí pro explicitní vynucení sekvence.

 

event ordering

Developing Applications on AWS

Archivace a přehrávání událostí

 

archiving and replaying

  • EventBridge umí události archivovat a později přehrát.
  • Přehraj události k obnově po selhání.
  • Přehraj události k testování nových konzumentů.
  • Přehraj události k obnově navazujících systémů.
Developing Applications on AWS

Ošetření chyb

 

handling errors

  • Aplikace řízené událostmi musí bezpečně zvládat chyby.
  • Selhání zahrnují duplicitní události.
    • Neúspěšné zpracování.
    • Nedostupné konzumenty.
  • Konzumenty navrhuj jako idempotentní, kdykoli je to možné.
Developing Applications on AWS

DLQ a destinations

 

handling errors

  • Použij DLQ k izolaci opakovaně selhávajících událostí.
  • V EventBridge se DLQ konfigurují pro každý cíl pravidla, nikoli pro funkci.
  • Lambda Destinations toto směrování rozšiřují.
  • Destinations směrují výsledky úspěchu i selhání.
Developing Applications on AWS

Testování a ověřování událostí

  • Testování aplikací řízených událostmi ověřuje směrování.
  • Ověřuje také filtrování událostí.
  • Ověřuje i opakování zpracování událostí.
  • Potvrzuje zpracování napříč distribuovanými systémy.
  • Použij AWS SAM k vygenerování ukázkových testovacích událostí.
  • Ukázkové události replikují přesný JSON výstup.

 

testing

Developing Applications on AWS

Co testovat

  • SAM umožňuje testovat lokálně před nasazením.
  • Ověř shodu vzorů událostí.
  • Ověř chování při opakování zpracování.
  • Ověř scénáře throttlingu.
  • Ověř doručování duplicitních událostí.
  • Ověř idempotentní chování konzumentů.

 

testing

Developing Applications on AWS

Pojďme cvičit!

Developing Applications on AWS

Preparing Video For Download...