Životní cyklus událostí: opakování, DLQ a destinations

Serverless Applications with AWS Lambda

Claudio Canales

Senior DevOps Engineer

Životní cyklus události v kostce

  • Lambda zavolá tvůj handler.
  • Handler buď uspěje, nebo selže.
  • Při selhání rozhodují opakování a směrování o dalším postupu.

Tok životního cyklu události

Serverless Applications with AWS Lambda

Dva způsoby, jak se selhání projeví

Synchronní

  • Volající čeká a obdrží chybovou odpověď.

Asynchronní

  • Volající je nejprve potvrzen.
  • Lambda opakuje pokus na pozadí.
  • Způsob zpracování selhání závisí na režimu volání.

Cesty selhání u sync vs async

Serverless Applications with AWS Lambda

Opakování jsou normální

  • Opakování jsou často funkce, ne chyba.
  • Přechodné selhání může při příštím pokusu uspět.
  • Opakování mohou způsobit duplicitní zpracování — handler s tím musí počítat.

Analogie opakovaného vytáčení

Serverless Applications with AWS Lambda

Opakování v čase

  • Opakování mohou vyřešit přechodné problémy.
  • Stejná událost ale může proběhnout vícekrát.
  • Idempotence a jasné ošetření chyb jsou nezbytné.

Časová osa pokusů o opakování

Serverless Applications with AWS Lambda

Kdy jsou opakování nebezpečná

  • Opakování jsou riziková, pokud operace není idempotentní.
  • Příklady: strhnutí platby, odeslání e-mailu.
  • Používej idempotentní klíče a bezpečné aktualizace, aby duplikáty nenapáchaly škodu.

Diagram cíle idempotence

Serverless Applications with AWS Lambda

DLQ (Dead-Letter Queue)

  • Bezpečné místo pro události, které selžou i po opakováních.
  • Nejčastěji fronta SQS, spravovaná fronta zpráv od AWS.
  • Prozkoumej payload, oprav příčinu a znovu spusť.

Analogie DLQ jako ztráty a nálezy

Serverless Applications with AWS Lambda

DLQ vs destinations

Analogie DLQ jako ztráty a nálezy

  • Zachytí neúspěšné události po opakováních.
  • Slouží k analýze problémů.

Diagram směrování destinations

  • Směrují výsledky při úspěchu i selhání.
  • Definují explicitní cesty pro oba případy.
Serverless Applications with AWS Lambda

Destinations: cesty pro úspěch i selhání

  • Při úspěchu pošli výsledek do onSuccess.
  • Při selhání pošli detaily do onFailure.
  • Další krok je tak vždy jasně definovaný.

Diagram směrování destinations

Serverless Applications with AWS Lambda

Ladění zásad opakování

  • Nastav, kolikrát Lambda opakování zkusí.
  • Omezte stáří události, aby se nezpracovávala zastaralá data.
  • Více opakování zvyšuje spolehlivost, ale i počet duplikátů a zpoždění.

Nastavení zásad opakování

Serverless Applications with AWS Lambda

Maximální stáří události: datum expirace

  • Maximální stáří události je expirace.
  • Příliš stará událost už nemá smysl zpracovávat.
  • Kompromis: méně opožděných událostí, rychlejší chování systému.

Analogie expirace stáří události

Serverless Applications with AWS Lambda

Observability: kde hledat

  • Logy říkají, co se stalo.
  • Metriky říkají, jak často se to děje.
  • Alarmy pomáhají rychle zachytit výkyvy.

Logy vs metriky

Serverless Applications with AWS Lambda

Co dělat s neúspěšnými událostmi

  • Prozkoumej payload a chybu.
  • Oprav příčinu problému.
  • Znovu spusť událost a sleduj chyby i propustnost.

Cyklus obnovy neúspěšných událostí

Serverless Applications with AWS Lambda

Klíčové poznatky

  • Spolehlivost zajišťují opakování, směrování a observability.
  • Synchronní chyby se dostanou ke volajícímu.
  • Asynchronní chyby potřebují opakování a DLQ nebo destinations.
  • Selhání tak zůstávají viditelná.

Diagram vzorce spolehlivosti

Serverless Applications with AWS Lambda

Pojďme cvičit!

Serverless Applications with AWS Lambda

Preparing Video For Download...