Asynchrone Nebenläufigkeitssteuerung in Node.js: Semaphore, Throttling und Backpressure

Promise.all(items.map(fn)) ist eine der gefährlichsten Zeilen in einer Node.js-Codebasis. Sie sieht vernünftig aus — alles parallel verarbeiten und das Ergebnis abwarten. Was sie tatsächlich tut: Sie feuert jedes Promise gleichzeitig ab, ohne Rücksicht auf Speicher, Rate-Limits nachgelagerter APIs oder Datenbank-Verbindungspools. Bei 50 Elementen ist das okay. Bei 50.000 ist es ein Incident.

Nebenläufigkeit zu steuern ist in produktiven Node.js-Services ein erstklassiges Thema, kein nachträglicher Gedanke. Die Patterns sind einfach zu implementieren, und der Nutzen ist enorm.