Výkon a optimalizace zdrojů

Nasazování aplikací na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Pomalé a drahé

  • Při špičkách provozu je aplikace pomalá
  • Stejný měsíc skočí i účet za Lambda
  • Ladění ji zrychlí a zlevní

Ukazatel rychlosti a nákladů zobrazující funkci, která je zároveň pomalá a drahá, s ukazatelem směřujícím k optimalizaci

Nasazování aplikací na AWS

Souběžnost: náklady vs. cold start


Rezervovaná: omez a ochraň

  • Omezuje a garantuje kapacitu funkce
  • Nejlevnější způsob řízení, ale cold starty neřeší

Provisioned: plať za zahřátí

  • Udržuje instance předehřáté – žádné cold starty
  • Stojí víc; použij jen tam, kde latence skutečně záleží
Nasazování aplikací na AWS

Správná velikost paměti pomocí křivky nákladů

Křivka nákladů v závislosti na paměti: čas trvání klesá a pak se vyrovnává, celkové náklady tvoří tvar U s vyznačeným optimálním nastavením paměti

  • Více paměti = více CPU = kratší doba běhu
  • Cena = cena paměti × doba běhu
  • Nejlevnější bod bývá uprostřed
  • Profiluj při více velikostech, pak vyber
Nasazování aplikací na AWS

Cachování na úrovni aplikace

  • Znovu používej práci uvnitř execution contextu
  • Teplá Lambda si uchovává globální proměnné mezi voláními
  • Ukládej do cache konfiguraci, klienty a časté vyhledávání
  • ElastiCache pro sdílenou cache napříč instancemi

Cachování v execution contextu Lambda: globální objekt klienta znovu použitý při teplých voláních a cluster ElastiCache sdílející hot data napříč instancemi funkce

Nasazování aplikací na AWS

Edge cachování přes CloudFront

  • CloudFront: ukládá odpovědi v edge lokacích
  • Opakované požadavky obslouží bez zátěže backendu
  • Klíče cache mohou zahrnovat hlavičky, query stringy, cookies
  • Statický a kešovatelný obsah se škáluje zdarma

Edge cachování přes CloudFront: glóbus s edge lokacemi obsluhující blízké uživatele z cache bez zatěžování backendu, s konfigurací klíčů cache zahrnující hlavičky a query stringy

Nasazování aplikací na AWS

Výběr správné vrstvy cache

Tři vrstvy cache: CloudFront na edge pro statický široce sdílený obsah, in-memory cache pro hot objekty v rámci instance a ElastiCache nebo DAX pro sdílená vysokofrekvenční čtení

  • Edge (CloudFront): statický, široce sdílený obsah
  • Aplikační (in-memory): hot objekty v rámci instance
  • Datová (ElastiCache/DAX): sdílená hot čtení
  • Vrstvuj je; každá snižuje jiné náklady
Nasazování aplikací na AWS

Optimalizace v praxi

  • Nastav paměť podle křivky nákladů
  • Provisioned concurrency přidej jen tam, kde záleží na latenci
  • Cachuj na úrovni edge, aplikace i dat
  • Měř, změň jednu věc, měř znovu

Shrnutí optimalizace: křivka nákladů pro nastavení paměti, rozhodování o provisioned concurrency, diagram tří vrstev cache a iterační cyklus měř–změň–měř

Nasazování aplikací na AWS

Pojďme cvičit!

Nasazování aplikací na AWS

Preparing Video For Download...