Configurare AWS Lambda per la produzione

Distribuire applicazioni su AWS

Dunieski Otano

Amazon Web Services Solutions Architect

In test funzionava

  • La funzione ha superato tutti i test
  • In produzione va in timeout e subisce throttling
  • Il codice era ok; la configurazione no

Una funzione serverless che ha superato i test ma fatica in produzione, con le manopole di memoria e timeout regolate

Distribuire applicazioni su AWS

Configurazioni Lambda critiche in produzione

Logo Lambda centrale con quattro riquadri di configurazione produzione: Memory con scala CPU, Timeout con orologio, Ephemeral Storage e Concurrency con istanze parallele

  • Memory: scala anche CPU e rete
  • Timeout: secondi massimi prima che la funzione venga interrotta
  • Ephemeral storage: spazio temporaneo in /tmp
  • Concurrency: quante istanze in parallelo
Distribuire applicazioni su AWS

Dimensionamento memoria e legame con la CPU

  • Più memoria = più CPU in proporzione
  • Una funzione CPU-bound può andare più veloce con più memoria
  • Durata minore può significare costo più basso
  • Dimensiona con test, non a intuito

Curva memoria-costo: la durata cala rapidamente con più memoria poi si appiattisce; il costo totale è a U con il punto ottimale più economico evidenziato al centro

Distribuire applicazioni su AWS

Concurrency: reserved vs provisioned


Concurrency riservata

  • Limita le esecuzioni simultanee massime
  • Protegge sistemi a valle e altre funzioni

Concurrency provisionata

  • Pre-riscalda le istanze, niente cold start
  • Per funzioni con bassa latenza, lato utente
Distribuire applicazioni su AWS

Packaging della configurazione e del codice condiviso

  • Environment variables: configurazione per ambiente
  • Layers: condividi codice e dipendenze tra funzioni
  • Extensions: eseguono a fianco della funzione per strumenti
  • Tieni la config fuori dal pacchetto di deployment

Opzioni di packaging Lambda: environment variables con configurazione esterna, layers che condividono librerie comuni tra funzioni ed extensions che girano accanto all'handler per monitoraggio o secrets

Distribuire applicazioni su AWS

Collegare Lambda a una VPC

Lambda connessa a una VPC privata tramite ENI in subnet private, security group che controlla l'accesso in uscita e un NAT gateway per la connettività internet

  • Collega Lambda a subnet private per risorse interne
  • Lambda crea ENI nella tua VPC
  • I security group controllano cosa può raggiungere
  • Serve un NAT o un endpoint VPC per l'accesso esterno
Distribuire applicazioni su AWS

Gestire i fail con Destinations e DLQ

  • Le invocazioni asincrone ritentano automaticamente in caso di errore
  • Lambda Destinations: instrada onSuccess e onFailure
  • Dead-letter queue: cattura eventi che non riescono mai
  • Non perdere mai silenziosamente un evento fallito

Gestione errori asincroni di Lambda: ciclo di retry che porta a Lambda Destinations con rami onSuccess e onFailure, e una dead-letter queue che cattura eventi dopo tutti i tentativi

Distribuire applicazioni su AWS

Esercitiamoci!

Distribuire applicazioni su AWS

Preparing Video For Download...