Skalierung und Concurrency-Kontrollen

Serverlose Anwendungen mit AWS Lambda

Claudio Canales

Senior DevOps Engineer

Skalierung auf einen Blick

  • Mehr Nachfrage -> mehr parallele Läufe.
  • Jeder Lauf nutzt eine Ausführungsumgebung.
  • Concurrency = laufende Ausführungen jetzt.

Nachfragespitze -> mehr Umgebungen

Serverlose Anwendungen mit AWS Lambda

Was ist Concurrency?

  • Eine Invocation = eine Arbeitseinheit.
  • Concurrency = wie viele jetzt laufen.
  • Wenn 10 laufen, ist Concurrency = 10.

Parallele Invocations

Serverlose Anwendungen mit AWS Lambda

Erforderliche Concurrency schätzen

  • Faustregel: concurrency = rps * duration.
  • Kürzere Dauer senkt Concurrency.
  • Nutze das, um Limits sicher zu dimensionieren.

Concurrency-Formel

Serverlose Anwendungen mit AWS Lambda

Beispiel: 50 rps bei 200 ms

  • 200 ms = 0,2 Sekunden.
  • 50 * 0,2 = 10 gleichzeitige Ausführungen.
  • Schnellere Funktionen brauchen weniger Parallelität.

Beispiel: Concurrency-Berechnung

Serverlose Anwendungen mit AWS Lambda

Limits: Konto-Pool vs. Funktionsanteil

  • Concurrency ist auf Kontoebene begrenzt.
  • Reserviere einen Teil für eine kritische Funktion.
  • Andere Funktionen teilen sich den Rest.

Konto-Concurrency-Pool

Serverlose Anwendungen mit AWS Lambda

Reserved Concurrency: hartes Limit

  • Ein Sicherheitsventil.
  • Begrenzt parallele Arbeit.
  • Über dem Limit wird gedrosselt.
  • Eine laute Funktion verbraucht nicht alles.

Reservierte Concurrency als Limit

Serverlose Anwendungen mit AWS Lambda

Throttling: so sieht es aus

  • Lambda drosselt am Concurrency-Limit.
  • Der Aufrufer erhält keine normale Ausführung.
  • Drosselungen sieht man im Monitoring.

Drosselungs-Signale

Serverlose Anwendungen mit AWS Lambda

Provisioned Concurrency: warme Kapazität

  • Ein Pool vorinitialisierter Umgebungen.
  • Oft hinter einem Alias.
  • Anfragen starten schneller.

Provisioned Concurrency, vorgewärmter Pool

Serverlose Anwendungen mit AWS Lambda

Cold Start vs. Provisioned

Cold Start

  • Einmalige Initialisierungsverzögerung.
  • Erste Anfrage zahlt die Einrichtung.

Provisioned

  • Init-Arbeit vorab erledigt.
  • Erste Anfrage zahlt nicht die Einrichtung.

Zeitverlauf: Cold vs. Provisioned

Serverlose Anwendungen mit AWS Lambda

Reserved vs. Provisioned (verschiedene Probleme)

  • Reserved steuert Last.
  • Provisioned steuert Start-Latenz.
  • Viele Produktionsfunktionen nutzen beides.

Reserved vs. Provisioned: Vergleich

Serverlose Anwendungen mit AWS Lambda

Downstream-Systeme schützen

  • Datenbanken vertragen nur begrenzte Verbindungen.
  • Ein Concurrency-Limit verhindert Überlast.
  • Eine Traffic-Spitze kann sonst zum Ausfall führen.

Concurrency-Limit schützt eine Datenbank

Serverlose Anwendungen mit AWS Lambda

Bursts vs. konstanter Traffic

  • Bursts erzeugen viele parallele Umgebungen.
  • Langsame Handler halten Concurrency hoch.
  • Limits können Spitzen glätten.
  • Kürzere Dauer ist auch eine Skalierungsstrategie.

Burst-Traffic vs. stabiler Zustand

Serverlose Anwendungen mit AWS Lambda

Fehler und Retries erhöhen die Last

  • Retries können Traffic verstärken.
  • Concurrency-Limits verkleinern den Einschlag.
  • Schleifen bei Fehlern überlasten Abhängigkeiten.

Retries vervielfachen Last

Serverlose Anwendungen mit AWS Lambda

Ein einfacher Tuning-Workflow

  • Starte mit Messungen.
  • Setze ein Concurrency-Limit bei Drosseln oder Druck.
  • Füge Provisioned hinzu, wenn Cold Starts die Latenz schmerzen.

Messen -> begrenzen -> vorwärmen

Serverlose Anwendungen mit AWS Lambda

Wichtigste Erkenntnisse

  • Concurrency hilft beim Denken über Skalierung.
  • Schätzung: rps * duration.
  • Reserved begrenzt Last; beobachte Drosseln.
  • Provisioned senkt Cold-Start-Latenz.

Concurrency: wichtigste Punkte

Serverlose Anwendungen mit AWS Lambda

Lass uns üben!

Serverlose Anwendungen mit AWS Lambda

Preparing Video For Download...