Performance-tuning en optimalisatietechnieken

Serverless-toepassingen met AWS Lambda

Claudio Canales

Senior DevOps Engineer

Performance = latentie + kosten

  • Je betaalt voor tijd.
  • Performance-tuning is ook kostenoptimalisatie.
  • Meten vóór je gaat tunen.
  • Verander één ding tegelijk.

Stopwatch en kosten

Serverless-toepassingen met AWS Lambda

Waar de tijd naartoe gaat

  • Initialisatie.
  • Handler-uitvoering.
  • Tijd wachtend op externe calls.

Init vs handler vs externe calls

Serverless-toepassingen met AWS Lambda

Cold start vs warm start

Cold start

  • Lambda heeft een nieuwe omgeving nodig.

Warm start

  • Hergebruikt een bestaande omgeving.
  • Handler draait met minder overhead.

Cold vs warm-tijdlijn

Serverless-toepassingen met AWS Lambda

Init-werk vs handler-werk

  • Imports en globale setup draaien in init.
  • Zware init = tragere cold starts.
  • Init-duur staat in de metrics.

Init vs handler-verdeling

Serverless-toepassingen met AWS Lambda

Hergebruik clients bij warme aanroepen

  • Elke aanroep een client maken herhaalt de kosten.
  • Hergebruik 'm als de omgeving warm is.

Globale client hergebruiken

Serverless-toepassingen met AWS Lambda

Codepatroon: client buiten de handler

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

Client één keer aangemaakt

Serverless-toepassingen met AWS Lambda

Cache wat kan

  • Houd data in het geheugen.
  • Gebruik /tmp voor kleine tijdelijke files.
  • Cache zorgvuldig en invalideer indien nodig.

In-memory- en /tmp-caching

Serverless-toepassingen met AWS Lambda

Houd dependencies slank

  • Grote packages laden trager.
  • Snoei wat je niet gebruikt.
  • Houd dependencies zo klein mogelijk.

Slanke vs zware dependency-package

Serverless-toepassingen met AWS Lambda

Log verstandig

  • Te veel logging kost geld en maakt lawaai.
  • Streef naar kleine, gestructureerde berichten.
  • Blijf doorzoekbaar; help bij trace en debug.

Logvolume vs signaal

Serverless-toepassingen met AWS Lambda

Verminder overhead van externe calls

  • Calls naar andere services zijn het traagst.
  • Minder calls; batch waar kan.
  • Stel time-outs in om hangen te voorkomen.

Minimaliseer externe calls

Serverless-toepassingen met AWS Lambda

Geheugen beïnvloedt ook CPU

  • CPU schaalt mee met geheugen.
  • CPU-gebonden code kan sneller klaar zijn.
  • Meer geheugen kan duur of tijd verlagen.
  • Test voor de beste waarde.

Geheugen -> CPU -> snellere runtime

Serverless-toepassingen met AWS Lambda

Vind het kosten-sweet spot

  • De beste geheugensetting minimaliseert totale kosten.
  • De curve daalt, vlakt af of stijgt.
  • Test opnieuw na wijzigingen.

Kosten vs geheugen-curve

Serverless-toepassingen met AWS Lambda

Meten met CloudWatch

  • Volg Duration en Init duration.
  • Volg errors en throttles.
  • Let op staartlatenties (p95, p99).

CloudWatch-performancemetrics

Serverless-toepassingen met AWS Lambda

Cold starts verminderen

  • Verminder wat in init draait.
  • Houd je package slank.
  • Hergebruik dure setup.
  • Overweeg geprovisioneerde omgevingen.

Checklist cold starts verminderen

Serverless-toepassingen met AWS Lambda

Belangrijkste punten

  • Weet waar de tijd naartoe gaat.
  • Hergebruik clients en cache zorgvuldig.
  • Geheugen wijzigt CPU en duur.
  • Meet elke wijziging.

Belangrijkste performancepunten

Serverless-toepassingen met AWS Lambda

Laten we oefenen!

Serverless-toepassingen met AWS Lambda

Preparing Video For Download...