Performance-Tuning und Optimierung

Serverlose Anwendungen mit AWS Lambda

Claudio Canales

Senior DevOps Engineer

Performance = Latenz + Kosten

  • Du zahlst für Zeit.
  • Performance-Tuning spart auch Kosten.
  • Messen vor dem Tuning.
  • Immer nur eine Änderung.

Stoppuhr und Kosten

Serverlose Anwendungen mit AWS Lambda

Wohin die Zeit geht

  • Initialisierung.
  • Handler-Ausführung.
  • Wartezeit auf externe Aufrufe.

Init vs. Handler vs. externe Aufrufe

Serverlose Anwendungen mit AWS Lambda

Cold Start vs. Warm Start

Cold Start

  • Lambda braucht eine neue Umgebung.

Warm Start

  • Bestehende Umgebung wird genutzt.
  • Handler läuft mit weniger Overhead.

Cold vs. Warm Zeitleiste

Serverlose Anwendungen mit AWS Lambda

Init-Arbeit vs. Handler-Arbeit

  • Imports und globales Setup laufen im Init.
  • Schweres Init verlangsamt Cold Starts.
  • Init-Dauer erscheint in den Metriken.

Init vs Handler-Aufteilung

Serverlose Anwendungen mit AWS Lambda

Clients über warme Aufrufe wiederverwenden

  • Einen Client pro Aufruf neu erstellen kostet jedes Mal.
  • Wiederverwende ihn bei warmen Umgebungen.

Globaler Client-Reuse

Serverlose Anwendungen mit AWS Lambda

Code-Muster: Client außerhalb des Handlers

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

Client einmal erstellt

Serverlose Anwendungen mit AWS Lambda

Cache, was möglich ist

  • Daten im Speicher halten.
  • /tmp für kleine temporäre Dateien nutzen.
  • Vorsichtig cachen und bei Bedarf invalidieren.

In-Memory- und /tmp-Caching

Serverlose Anwendungen mit AWS Lambda

Abhängigkeiten schlank halten

  • Große Pakete laden langsamer.
  • Unnötiges entfernen.
  • Abhängigkeiten so klein wie möglich halten.

Schlankes vs. schweres Paket

Serverlose Anwendungen mit AWS Lambda

Sinnvoll loggen

  • Zu viel Logging kostet und rauscht.
  • Kurze, strukturierte Messages.
  • Durchsuchbar bleiben; Tracing und Debug helfen.

Log-Volumen vs. Signal

Serverlose Anwendungen mit AWS Lambda

Overhead externer Aufrufe senken

  • Aufrufe externer Services bremsen am meisten.
  • Weniger Aufrufe; wenn möglich bündeln.
  • Timeouts setzen, damit Fehler nicht hängen.

Externe Aufrufe minimieren

Serverlose Anwendungen mit AWS Lambda

Speicher beeinflusst auch die CPU

  • CPU skaliert mit Speicher.
  • CPU-lastiger Code wird schneller fertig.
  • Mehr Speicher kann Dauer oder Kosten senken.
  • Testen, um den besten Wert zu finden.

Speicher -> CPU -> schnellere Laufzeit

Serverlose Anwendungen mit AWS Lambda

Das Kostenoptimum finden

  • Die beste Speichergröße minimiert Gesamtkosten.
  • Die Kurve fällt, flacht ab oder steigt.
  • Nach Änderungen erneut testen.

Kosten-vs.-Speicher-Kurve

Serverlose Anwendungen mit AWS Lambda

Mit CloudWatch messen

  • Dauer und Init-Dauer tracken.
  • Fehler und Throttles tracken.
  • Tail-Latenzen beobachten (p95, p99).

CloudWatch Performance-Metriken

Serverlose Anwendungen mit AWS Lambda

Cold Starts reduzieren

  • Arbeit im Init verkleinern.
  • Paket schlank halten.
  • Teures Setup wiederverwenden.
  • Provisionierte Umgebungen erwägen.

Checkliste zur Reduktion von Cold Starts

Serverlose Anwendungen mit AWS Lambda

Wesentliche Punkte

  • Wissen, wo die Zeit hingeht.
  • Clients wiederverwenden und bedacht cachen.
  • Speicher ändert CPU und Dauer.
  • Jede Änderung messen.

Wichtigste Performance-Punkte

Serverlose Anwendungen mit AWS Lambda

Lass uns üben!

Serverlose Anwendungen mit AWS Lambda

Preparing Video For Download...