Cómo Plaid aumentó 30 veces el procesamiento paralelo en Node
(blog.plaid.com)Plaid es un servicio que lee la información de saldo de los usuarios desde los bancos y la ofrece externamente mediante una API bancaria unificada.
Operaban 4,000 workers de Node sin paralelización, luego cambiaron al procesamiento en paralelo y ahorraron $300K al año.
Está muy bien resumido el enfoque que intentaron paso a paso para aplicar el cambio sin errores.
-
Agregar métricas a Prometheus: tamaño del heap de V8, GC, latencia de tareas
-
Crear un dashboard de Grafana para medir el efecto del procesamiento en paralelo
-
Usar feature flags de LaunchDarkly para ajustar el efecto del procesamiento en paralelo sin volver a desplegar
-
Generar flamegraphs en producción para medir el tiempo de CPU
Después del despliegue real, siguieron investigando y repitiendo ajustes.
-
Aumentar el Max Heap Size de Node
-
Eliminar el cuello de botella de S3: aumentar
maxSockets, que el cliente de S3 reducía a 50, hasta 20480 -
Mejorar la velocidad de serialización JSON: reemplazar
bfjporJSONStream -
Definir el tamaño de semi-space para reducir la cantidad de ejecuciones de GC
-
Optimizar el tiempo de CPU cambiando la forma de logging que usaba muchas regex
1 comentarios
Oh, wow