Wie Plaid die Node-Parallelverarbeitung um das 30-Fache steigerte
(blog.plaid.com)Plaid ist ein Dienst, der Kontostandsinformationen von Nutzern bei Banken ausliest und sie extern über eine integrierte Banking-API bereitstellt.
Ohne Parallelisierung betrieb das Unternehmen 4.000 Node-Worker, stellte dann auf parallele Verarbeitung um und sparte dadurch jährlich 300.000 US-Dollar.
Der Artikel fasst die schrittweisen Ansätze gut zusammen, mit denen die Umstellung ohne Fehler umgesetzt wurde.
-
Metriken zu Prometheus hinzugefügt: V8-Heap-Größe, GC, Task-Latenz
-
Ein Grafana-Dashboard erstellt, um den Effekt der Parallelverarbeitung zu messen
-
Mit Feature-Flags von LaunchDarkly die Wirkung der Parallelverarbeitung ohne Redeploy feinjustiert
-
Flamegraphs in der Produktion erzeugt, um die CPU-Zeit zu messen
Nach dem eigentlichen Deployment wurde weiter untersucht und wiederholt nachgebessert.
-
Max Heap Size von Node erhöht
-
S3-Bottleneck beseitigt:
maxSockets, das der S3-Client auf 50 begrenzte, auf 20480 erhöht -
Geschwindigkeit der JSON-Serialisierung verbessert –
bfjdurchJSONStreamersetzt -
Die Größe des Semi-Space festgelegt, um die Anzahl der GC-Durchläufe zu verringern
-
Die Logging-Methode mit vielen Regex-Ausdrücken geändert, um die CPU-Zeit zu optimieren
1 Kommentare
Oh ho