Ottimizzazione delle prestazioni

Applicazioni serverless con AWS Lambda

Claudio Canales

Senior DevOps Engineer

Prestazioni = latenza + costo

  • Paghi per il tempo.
  • Ottimizzare le prestazioni riduce anche i costi.
  • Misura prima di ottimizzare.
  • Cambia una cosa alla volta.

Cronometro e costo

Applicazioni serverless con AWS Lambda

Dove va il tempo

  • Inizializzazione.
  • Esecuzione dell'handler.
  • Tempo in attesa di chiamate esterne.

Init vs handler vs chiamate esterne

Applicazioni serverless con AWS Lambda

Cold start vs warm start

Cold start

  • Lambda crea un nuovo ambiente.

Warm start

  • Riusa un ambiente esistente.
  • L'handler gira con meno overhead.

Timeline cold vs warm

Applicazioni serverless con AWS Lambda

Lavoro di init vs lavoro dell'handler

  • Import e setup globali girano in init.
  • Init pesante = cold start più lenti.
  • La durata di init appare nelle metriche.

Divisione init vs handler

Applicazioni serverless con AWS Lambda

Riusa i client tra invocazioni warm

  • Creare un client a ogni invocazione ripete il costo.
  • Riutilizzalo quando l'ambiente è warm.

Riutilizzo client globale

Applicazioni serverless con AWS Lambda

Pattern: client fuori dall'handler

import boto3
sts = boto3.client("sts")
def handler(event, context):
    return sts.get_caller_identity()

Client creato una volta

Applicazioni serverless con AWS Lambda

Fai cache quando puoi

  • Tieni i dati in memoria.
  • Usa /tmp per file temporanei piccoli.
  • Fai cache con cura e invalida quando serve.

Cache in memoria e /tmp

Applicazioni serverless con AWS Lambda

Mantieni leggere le dipendenze

  • I pacchetti grandi si caricano più lentamente.
  • Elimina ciò che non usi.
  • Tieni le dipendenze il più leggere possibile.

Pacchetto leggero vs pesante

Applicazioni serverless con AWS Lambda

Fai logging con criterio

  • Troppi log aggiungono costo e rumore.
  • Punta a messaggi piccoli e strutturati.
  • Restano ricercabili; aiutano trace e debug.

Volume di log vs segnale

Applicazioni serverless con AWS Lambda

Riduci l'overhead delle chiamate esterne

  • Le chiamate ad altri servizi sono la parte più lenta.
  • Riduci le chiamate; fai batch quando puoi.
  • Imposta timeout per evitare blocchi.

Minimizza le chiamate esterne

Applicazioni serverless con AWS Lambda

La memoria influisce anche sulla CPU

  • La CPU scala con la memoria.
  • Il codice CPU-bound può finire prima.
  • Più memoria può ridurre durata o costo.
  • Testa per trovare il valore ottimale.

Memoria -> CPU -> runtime più veloce

Applicazioni serverless con AWS Lambda

Trova il punto di costo ottimale

  • Il miglior settaggio memoria minimizza il costo totale.
  • La curva scende, poi si appiattisce o risale.
  • Riesegui i test dopo i cambiamenti.

Curva costo vs memoria

Applicazioni serverless con AWS Lambda

Misura con CloudWatch

  • Traccia Duration e Init duration.
  • Traccia errori e throttles.
  • Osserva le tail latency (p95, p99).

Metriche prestazioni CloudWatch

Applicazioni serverless con AWS Lambda

Ridurre i cold start

  • Riduci ciò che gira in init.
  • Tieni il pacchetto leggero.
  • Riusa setup costosi.
  • Valuta ambienti provisioned.

Checklist riduzione cold start

Applicazioni serverless con AWS Lambda

Punti chiave

  • Sappi dove va il tempo.
  • Riusa client e fai cache con cura.
  • La memoria cambia CPU e durata.
  • Misura ogni modifica.

Punti chiave prestazioni

Applicazioni serverless con AWS Lambda

Passiamo alla pratica !

Applicazioni serverless con AWS Lambda

Preparing Video For Download...