5 puntos por xguru 2019-12-14 | 1 comentarios | Compartir por WhatsApp

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 bfj por JSONStream

  • 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

 
chusouk 2019-12-17

Oh, wow