Scalabilità e controlli di concorrenza

Applicazioni serverless con AWS Lambda

Claudio Canales

Senior DevOps Engineer

Scalabilità in un'immagine

  • Più domanda -> più esecuzioni in parallelo.
  • Ogni esecuzione usa un ambiente di runtime.
  • Concorrenza = esecuzioni in corso ora.

Picco di domanda -> più ambienti

Applicazioni serverless con AWS Lambda

Cos'è la concorrenza?

  • Una invocazione = un'unità di lavoro.
  • Concorrenza = quante sono in esecuzione ora.
  • Se 10 sono in esecuzione, concorrenza = 10.

Invocazioni in parallelo

Applicazioni serverless con AWS Lambda

Stimare la concorrenza necessaria

  • Regola pratica: concurrency = rps * duration.
  • Riduci la durata per ridurre la concorrenza.
  • Usalo per impostare limiti in sicurezza.

Formula della concorrenza

Applicazioni serverless con AWS Lambda

Esempio: 50 rps a 200 ms

  • 200 ms = 0,2 secondi.
  • 50 * 0,2 = 10 esecuzioni concorrenti.
  • Codice più veloce = meno esecuzioni in parallelo.

Esempio di calcolo della concorrenza

Applicazioni serverless con AWS Lambda

Limiti: pool account vs quota funzione

  • La concorrenza è limitata a livello di account.
  • Riserva parte del pool per una funzione critica.
  • Le altre funzioni condividono il resto.

Pool di concorrenza dell'account

Applicazioni serverless con AWS Lambda

Concorrenza riservata: limite rigido

  • Una valvola di sicurezza.
  • Limita il lavoro in parallelo.
  • Oltre il tetto, le invocazioni vengono limitate.
  • Una funzione rumorosa non esaurisce la capacità.

Limite di concorrenza riservata

Applicazioni serverless con AWS Lambda

Throttling: come si presenta

  • Lambda limita al raggiungimento del tetto di concorrenza.
  • Il caller non ottiene un'esecuzione normale.
  • Vedi i throttle nel monitoring.

Segnali di throttling

Applicazioni serverless con AWS Lambda

Provisioned Concurrency: capacità calda

  • Un pool di ambienti pre-inizializzati.
  • Spesso dietro un alias.
  • Le richieste partono più velocemente.

Pool caldo con Provisioned Concurrency

Applicazioni serverless con AWS Lambda

Cold start vs provisioned

Cold start

  • Un ritardo di inizializzazione una tantum.
  • La prima richiesta paga il costo di setup.

Provisioned

  • L'inizializzazione è fatta in anticipo.
  • La prima richiesta non paga il setup.

Timeline: cold vs provisioned

Applicazioni serverless con AWS Lambda

Reserved vs provisioned (problemi diversi)

  • La riservata controlla il carico.
  • La provisioned riduce la latenza di avvio.
  • Molte funzioni in produzione usano entrambe.

Confronto reserved vs provisioned

Applicazioni serverless con AWS Lambda

Proteggi i sistemi a valle

  • Il database regge solo un certo numero di connessioni.
  • Un tetto di concorrenza lo previene.
  • Un picco di traffico può diventare un outage.

Il tetto di concorrenza protegge un database

Applicazioni serverless con AWS Lambda

Burst vs traffico costante

  • I burst creano molti ambienti in parallelo.
  • Handler lenti mantengono alta la concorrenza.
  • I tetti possono smussare il picco.
  • Ridurre la durata è anche una strategia di scaling.

Traffico a burst vs costante

Applicazioni serverless con AWS Lambda

Errori e retry aumentano il carico

  • I retry possono amplificare il traffico.
  • I limiti di concorrenza riducono il raggio d'impatto.
  • Un loop di failure può sovraccaricare le dipendenze.

I retry moltiplicano il carico

Applicazioni serverless con AWS Lambda

Un semplice workflow di tuning

  • Parti dalla misurazione.
  • Metti un tetto quando compaiono throttle o pressione.
  • Aggiungi capacità provisioned quando i cold start alzano la latenza.

Misura -> limita -> pre-riscalda

Applicazioni serverless con AWS Lambda

Punti chiave

  • La concorrenza aiuta a ragionare sullo scaling.
  • Stima: rps * duration.
  • La riservata mette un tetto al carico; monitora i throttle.
  • La provisioned riduce la latenza da cold start.

Punti chiave sulla concorrenza

Applicazioni serverless con AWS Lambda

Mettiamoci alla prova!

Applicazioni serverless con AWS Lambda

Preparing Video For Download...