Ottimizzazione di prestazioni e risorse

Distribuire applicazioni su AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Lenta e costosa

  • L'app rallenta nei picchi di traffico
  • La bolletta Lambda esplode lo stesso mese
  • Il tuning la rende più veloce e più economica

Indicatore velocità/costo che mostra una funzione lenta e costosa, che punta verso l'ottimizzazione

Distribuire applicazioni su AWS

Concorrenza: costo vs cold start


Reserved: limita e protegge

  • Impone un tetto e garantisce capacità a una funzione
  • Controllo più economico, ma non elimina i cold start

Provisioned: paghi per tenerla calda

  • Mantiene istanze pre-riscaldate: niente cold start
  • Costa di più; usala solo dove la latenza conta davvero
Distribuire applicazioni su AWS

Dimensionare la memoria con la curva durata-costo

Curva durata-costo al crescere della memoria: la durata cala e si appiattisce, il costo totale fa una U con l'impostazione di memoria ottimale evidenziata

  • Più memoria = più CPU = durata più breve
  • Costo = prezzo memoria x durata
  • Il punto più economico è spesso a metà
  • Profila a varie dimensioni, poi scegli
Distribuire applicazioni su AWS

Caching a livello applicativo

  • Riusa lavoro dentro il contesto di esecuzione
  • Una Lambda calda mantiene i global tra invocazioni
  • Metti in cache config, client e lookup frequenti
  • ElastiCache per una cache condivisa tra istanze

Caching nel contesto di esecuzione Lambda: oggetto client globale riusato tra invocazioni calde e cluster ElastiCache che condivide dati caldi tra più istanze della funzione

Distribuire applicazioni su AWS

Caching CloudFront al bordo

  • CloudFront: cache delle risposte nelle edge location
  • Serve richieste ripetute senza toccare il backend
  • Le chiavi di cache possono includere header, query string, cookie
  • Contenuti statici e cacheabili scalano gratis

Caching al bordo con CloudFront: globo con edge location che servono risposte in cache agli utenti vicini senza colpire il backend, con chiavi di cache che includono header e query string

Distribuire applicazioni su AWS

Scegliere il livello di cache giusto

Tre livelli di cache impilati: CloudFront al bordo per contenuti statici e molto condivisi, cache in memoria per istanza per oggetti caldi, ed ElastiCache o DAX per letture condivise ad alta frequenza

  • Bordo (CloudFront): contenuti statici e molto condivisi
  • Applicazione (in memoria): oggetti caldi per istanza
  • Dati (ElastiCache/DAX): letture calde condivise
  • Stratifica: ogni livello riduce un costo diverso
Distribuire applicazioni su AWS

Mettere insieme l'ottimizzazione

  • Dimensiona la memoria con la curva durata-costo
  • Aggiungi concorrenza pre-provisionata solo dove la latenza conta
  • Fai caching su bordo, app e dati
  • Misura, cambia una cosa, misura di nuovo

Riepilogo ottimizzazione: curva durata-costo per il dimensionamento memoria, decisione sulla concorrenza pre-provisionata, diagramma dei tre livelli di cache e ciclo misura-cambia-misura

Distribuire applicazioni su AWS

Esercitiamoci!

Distribuire applicazioni su AWS

Preparing Video For Download...