Škálování a řízení souběžnosti

Serverless Applications with AWS Lambda

Claudio Canales

Senior DevOps Engineer

Škálování v jednom obrázku

  • Větší poptávka -> více paralelních běhů.
  • Každý běh používá prostředí pro spouštění.
  • Souběžnost = aktuálně probíhající běhy.

Nárůst poptávky -> více prostředí

Serverless Applications with AWS Lambda

Co je souběžnost?

  • Jedno volání = jedna jednotka práce.
  • Souběžnost = kolik jich právě běží.
  • Pokud běží 10 najednou, souběžnost = 10.

Paralelní volání

Serverless Applications with AWS Lambda

Odhadování potřebné souběžnosti

  • Základní pravidlo: concurrency = rps * duration.
  • Kratší doba trvání snižuje souběžnost.
  • Použij to pro bezpečné nastavení limitů.

Vzorec pro souběžnost

Serverless Applications with AWS Lambda

Příklad: 50 rps při 200 ms

  • 200 ms = 0,2 sekundy.
  • 50 * 0,2 = 10 souběžných spuštění.
  • Rychlejší kód = méně paralelních běhů.

Příklad výpočtu souběžnosti

Serverless Applications with AWS Lambda

Limity: fond účtu vs. podíl funkce

  • Souběžnost je omezena na úrovni účtu.
  • Část fondu si vyhraď pro kritickou funkci.
  • Ostatní funkce sdílejí zbytek.

Fond souběžnosti účtu

Serverless Applications with AWS Lambda

Reserved Concurrency: pevný strop

  • Pojistný ventil.
  • Omezuje paralelní zpracování.
  • Nad limitem se volání throttlují.
  • Hlučná funkce nevyčerpá kapacitu.

Pevný strop souběžnosti

Serverless Applications with AWS Lambda

Throttling: jak vypadá v praxi

  • Lambda throttluje na limitu souběžnosti.
  • Volající nedostane normální odpověď.
  • Throttling vidíš v monitoringu.

Signály throttlingu

Serverless Applications with AWS Lambda

Provisioned Concurrency: teplá kapacita

  • Fond předem inicializovaných prostředí.
  • Často za aliasem.
  • Požadavky startují rychleji.

Teplý fond Provisioned Concurrency

Serverless Applications with AWS Lambda

Cold start vs. provisioned

Cold start

  • Jednorázová prodleva při inicializaci.
  • První požadavek platí za přípravu prostředí.

Provisioned

  • Inicializace proběhne předem.
  • První požadavek za přípravu neplatí.

Časová osa: cold start vs. provisioned

Serverless Applications with AWS Lambda

Reserved vs. provisioned (různé problémy)

  • Reserved řídí zatížení.
  • Provisioned řídí latenci při startu.
  • Produkční funkce často využívají obojí.

Porovnání Reserved vs. Provisioned

Serverless Applications with AWS Lambda

Ochrana navazujících systémů

  • Databáze zvládne jen omezený počet připojení.
  • Strop souběžnosti tomu zabrání.
  • Špička provozu se může proměnit ve výpadek.

Strop souběžnosti chrání databázi

Serverless Applications with AWS Lambda

Špičky vs. stabilní provoz

  • Špičky vytvářejí mnoho paralelních prostředí.
  • Pomalé handlery udržují souběžnost vysokou.
  • Stropy dokáží špičku vyhladit.
  • Zkrácení doby trvání je také strategie škálování.

Provoz při špičce vs. stabilní stav

Serverless Applications with AWS Lambda

Selhání a opakované pokusy zvyšují zátěž

  • Opakované pokusy mohou provoz znásobit.
  • Limity souběžnosti omezují rozsah dopadu.
  • Smyčka selhání může přetížit závislé systémy.

Opakované pokusy násobí zatížení

Serverless Applications with AWS Lambda

Jednoduchý postup ladění

  • Začni měřením.
  • Nastav strop souběžnosti, když se objeví throttling nebo tlak.
  • Přidej provisioned kapacitu, když cold starty zvyšují latenci.

Měř -> omez -> předehřej

Serverless Applications with AWS Lambda

Klíčové poznatky

  • Souběžnost ti pomáhá přemýšlet o škálování.
  • Odhad: rps * duration.
  • Reserved omezuje zátěž; sleduj throttling.
  • Provisioned snižuje latenci cold startů.

Klíčové poznatky o souběžnosti

Serverless Applications with AWS Lambda

Pojďme cvičit!

Serverless Applications with AWS Lambda

Preparing Video For Download...