PlaidがNodeの並列処理を30倍に増やした方法
(blog.plaid.com)Plaidは、銀行からユーザーの残高情報を読み取り、統合バンキングAPIとして外部に提供するサービス。
並列化なしで4000台のNodeワーカーを運用していたが、並列処理に切り替えて年間30万ドルを節約。
エラーなく変更を適用するために、段階的に試したアプローチがよく整理されている。
-
Prometheusにメトリクスを追加: V8 Heap Size、GC、Task Latency
-
並列処理の効果測定用Grafanaダッシュボードを作成
-
LaunchDarklyのフィーチャーフラグを使って、再デプロイなしで並列処理の効果をチューニング
-
CPU時間を測定するため、本番環境でflamegraphを生成
実際のデプロイ後も継続して調査し、修正を繰り返した。
-
NodeのMax Heap Sizeを増加
-
S3のボトルネックを解消: S3クライアントが50まで下げてしまう
maxSocketsを20480に増加 -
JSON Serializationの速度を改善 - bfjをJSONStreamに置き換え
-
semi spaceのサイズを指定してGCの実行回数を削減
-
regexを多用したロギング方式を変更してCPU時間を最適化
1件のコメント
おお