15 puntos por whatsup 2024-08-12 | 1 comentarios | Compartir por WhatsApp

Cómo resolver el aumento repentino de la latencia de API al momento del despliegue - caso de Django + Gunicorn

  • El sistema backend estaba compuesto por Django + Gunicorn
  • Descubrieron un problema en el que, cada vez que hacían un despliegue, la latencia de la API aumentaba de forma abrupta
  • Al revisar el funcionamiento de Gunicorn, encontraron partes donde ocurría un cold start
  • Al analizar el código interno de Django, descubrieron que al hacer fork desde el proceso master worker, incluso usando la opción preload, había elementos que no se precargaban, y así pudieron resolver el problema

Aprendizajes

  • Los frameworks web ampliamente usados, como Django, suelen transmitir mucha confianza por la alta fiabilidad de la mayoría de sus comportamientos, por lo que uno tiende a asumir que así será también en el uso real
    • Sin embargo, al revisar el código real, encontraron código problemático, y aprendieron que no se debe confiar ciegamente en el framework que se usa
  • El proceso para resolver el problema de latencia de API fue difícil de identificar rápidamente por la falta de documentación adecuada, la ausencia de una comprensión profunda de la estructura interna y su funcionamiento, y la reticencia a profundizar en el código base de proyectos open source
    • Además, había varios problemas complejos entrelazados, lo que hizo aún más difícil identificarlo con facilidad
    • Al final, pudieron resolverlo revisando el código interno de Django
    • En este proceso, aprendieron no solo a comprender mejor las herramientas de Django que usan, sino también que revisar el código interno puede ayudar a encontrar soluciones para algunos problemas difíciles
  • Es importante identificar la causa raíz del problema.
    • Ajustar la condición de éxito del Health Check para que se repitiera más veces o durante más tiempo podría haber reducido la frecuencia con la que aparecía la latencia de API, pero no habría resuelto el problema de fondo
  • Si se aprovecha la inteligencia colectiva, se pueden identificar más rápido los puntos en los que conviene enfocarse y obtener conocimientos diversos
    • Compartieron rápidamente dentro de la organización el problema relacionado con la latencia de API, y varios ingenieros aportaron hipótesis sobre lo que podría estar causando el problema
    • Eso les permitió recopilar esas opiniones con rapidez y adquirir pronto conocimiento sobre dónde convenía enfocar la atención
  • Es importante preparar un entorno para reproducir el síntoma y así resolver el problema
    • Lograron reproducir el mismo problema en local, y gracias a eso pudieron verificar si realmente se había resuelto
    • También pudieron reconocer la importancia de reproducir el síntoma como parte del proceso de resolución del problema

1 comentarios

 
aer0700 2024-08-12

Entré por el enlace y el contenido del post está muy bueno.