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
Entré por el enlace y el contenido del post está muy bueno.