Schalen en concurrency-controles

Serverless-toepassingen met AWS Lambda

Claudio Canales

Senior DevOps Engineer

Schalen in één beeld

  • Meer vraag -> meer parallelle runs.
  • Elke run gebruikt een uitvoeringomgeving.
  • Concurrency = runs die nu draaien.

Vraagpiek -> meer omgevingen

Serverless-toepassingen met AWS Lambda

Wat is concurrency?

  • Eén invocation = één werkeenheid.
  • Concurrency = hoeveel er nu draaien.
  • Als er 10 draaien, is concurrency = 10.

Parallelle invocations

Serverless-toepassingen met AWS Lambda

Benodigde concurrency schatten

  • Vuistregel: concurrency = rps * duration.
  • Verlaag de duur om concurrency te verlagen.
  • Gebruik dit om limieten veilig te kiezen.

Concurrency-formule

Serverless-toepassingen met AWS Lambda

Voorbeeld: 50 rps bij 200 ms

  • 200 ms = 0,2 seconden.
  • 50 * 0,2 = 10 gelijktijdige uitvoeringen.
  • Snellere code = minder parallelle runs.

Voorbeeldberekening concurrency

Serverless-toepassingen met AWS Lambda

Limieten: accountpool vs. functieslice

  • Concurrency is op accountniveau beperkt.
  • Reserveer een deel voor een kritieke functie.
  • Andere functies delen de rest.

Account-concurrency-pool

Serverless-toepassingen met AWS Lambda

Reserved concurrency: harde cap

  • Een veiligheidsklep.
  • Beperkt parallel werk.
  • Boven de cap wordt afgeremd.
  • Een lawaaiige functie put de capaciteit niet uit.

Gereseveerde concurrency-cap

Serverless-toepassingen met AWS Lambda

Throttling: zo ziet het eruit

  • Lambda remt bij de concurrencylimiet.
  • De aanroeper krijgt geen normale uitvoering.
  • Je ziet throttles in monitoring.

Signalen van throttling

Serverless-toepassingen met AWS Lambda

Provisioned concurrency: warme capaciteit

  • Een pool met voorgestructureerde omgevingen.
  • Vaak achter een alias.
  • Verzoeken starten sneller.

Provisioned concurrency-warme pool

Serverless-toepassingen met AWS Lambda

Cold start vs provisioned

Cold start

  • Eenmalige initialisatievertraging.
  • Eerste verzoek betaalt de opstartkost.

Provisioned

  • Init-werk vooraf gedaan.
  • Eerste verzoek betaalt de opstartkost niet.

Tijdlijn: cold vs provisioned

Serverless-toepassingen met AWS Lambda

Reserved vs provisioned (andere problemen)

  • Reserved beheerst load.
  • Provisioned verlaagt opstartlatentie.
  • Veel productie-functies gebruiken beide.

Vergelijking reserved vs provisioned

Serverless-toepassingen met AWS Lambda

Bescherm downstream-systemen

  • Een database kan maar beperkt aantal connecties aan.
  • Een concurrency-cap voorkomt dit.
  • Een verkeerspiek kan tot een outage leiden.

Concurrency-cap beschermt een database

Serverless-toepassingen met AWS Lambda

Bursts vs steady verkeer

  • Bursts maken veel parallelle omgevingen.
  • Trage handlers houden concurrency hoog.
  • Caps kunnen de piek afvlakken.
  • Duur verkorten is ook een schaalstrategie.

Burstverkeer vs steady state

Serverless-toepassingen met AWS Lambda

Fouten en retries verhogen de load

  • Retries kunnen verkeer versterken.
  • Concurrency-limieten verkleinen de impact.
  • Een faalloop kan afhankelijkheden overbelasten.

Retries vermenigvuldigen load

Serverless-toepassingen met AWS Lambda

Een simpele tuning-workflow

  • Begin met meten.
  • Zet een cap als throttles of druk verschijnen.
  • Voeg provisioned capaciteit toe als cold starts de latentie schaden.

Meten -> cap -> voorverwarmen

Serverless-toepassingen met AWS Lambda

Belangrijkste punten

  • Concurrency helpt nadenken over schalen.
  • Schatting: rps * duration.
  • Reserved begrenst load; let op throttles.
  • Provisioned verlaagt cold-startlatentie.

Belangrijkste punten over concurrency

Serverless-toepassingen met AWS Lambda

Laten we oefenen!

Serverless-toepassingen met AWS Lambda

Preparing Video For Download...