15 points par whatsup 2024-08-12 | 1 commentaires | Partager sur WhatsApp

Résoudre les pics de latence d’API au moment du déploiement - cas Django + Gunicorn

  • Le système backend était constitué de Django + Gunicorn
  • Un problème a été constaté : à chaque déploiement, la latence des API augmentait brutalement
  • En examinant le fonctionnement de Gunicorn, il est apparu qu’il existait des parties sujettes au cold start
  • En analysant le code interne de Django, il a été constaté qu’au moment du fork dans le processus master worker, malgré l’option preload, certains éléments n’étaient pas préchargés, ce qui a permis de résoudre le problème

Ce que j’ai appris

  • Les frameworks web largement utilisés, comme Django, inspirent généralement une grande confiance dans la plupart de leurs comportements, ce qui pousse souvent les utilisateurs à supposer qu’il en ira de même en pratique
    • Cependant, en examinant le code réel, il a été possible d’identifier du code problématique, et d’en tirer la leçon qu’il ne faut pas accorder une confiance aveugle au framework utilisé
  • Le processus de résolution du problème de latence des API était difficile à appréhender rapidement en raison d’une documentation insuffisante, d’un manque de compréhension approfondie de la structure interne et du fonctionnement, ainsi que d’une certaine réticence à creuser en profondeur la base de code d’un projet open source
    • S’y ajoutait le fait que plusieurs problèmes complexes étaient entremêlés, ce qui rendait l’analyse encore plus difficile
    • Finalement, la solution a pu être trouvée en examinant le code interne de Django
    • Ce processus a permis non seulement d’améliorer la compréhension des outils Django utilisés, mais aussi d’apprendre qu’examiner le code interne peut aider à trouver des solutions à certains problèmes difficiles
  • Il est important d’identifier la cause profonde du problème.
    • Il aurait été possible de réduire la fréquence d’apparition de la latence des API en ajustant les conditions de succès du health check pour exiger davantage de tentatives ou une durée plus longue, mais cela n’aurait pas résolu le problème à la racine
  • Utiliser l’intelligence collective permet d’identifier plus rapidement les points sur lesquels se concentrer et d’acquérir des connaissances variées
    • Le problème lié à la latence des API a été rapidement partagé avec l’organisation, et plusieurs ingénieurs ont proposé des hypothèses sur les causes possibles
    • Cela a permis de rassembler rapidement ces avis et d’acquérir vite les connaissances nécessaires pour savoir où concentrer l’analyse
  • Il est important de mettre en place un environnement permettant de reproduire les symptômes afin de résoudre le problème
    • Il a été possible de reproduire avec succès le même problème en local, ce qui a permis de vérifier si le problème était bien résolu
    • Cela a permis de prendre conscience de l’importance de reproduire les symptômes pour résoudre un problème

1 commentaires

 
aer0700 2024-08-12

En suivant le lien, je vois que le contenu de l’article est vraiment excellent.