15 pontos por whatsup 2024-08-12 | 1 comentários | Compartilhar no WhatsApp

Como resolver o aumento repentino de latência de API no momento do deploy - caso com Django + Gunicorn

  • O sistema de backend era composto por Django + Gunicorn
  • Foi identificado um problema em que, a cada deploy, a latência da API aumentava drasticamente
  • Ao analisar o funcionamento do Gunicorn, constatou-se que havia partes sujeitas a Cold Start
  • Ao analisar o código interno do Django, descobriu-se que, no momento do fork no processo master worker, mesmo com a opção de preload ativada, havia elementos que não eram pré-carregados, e o problema foi resolvido a partir disso

Aprendizados

  • Frameworks web amplamente usados, como o Django, costumam ter alta confiabilidade na maior parte de seus comportamentos, o que leva à tendência de presumir que isso também se aplica ao uso real
    • No entanto, ao examinar o código de fato, foi encontrado um trecho problemático, e foi possível aprender que não se deve confiar cegamente no framework utilizado
  • O processo de resolver o problema de latência da API foi difícil de entender rapidamente por conta da falta de documentação adequada + falta de compreensão profunda da estrutura interna e do funcionamento + relutância em mergulhar a fundo no codebase de um projeto open source
    • Também houve o fator de que vários problemas complexos estavam interligados, o que dificultava uma identificação simples
    • No fim, foi possível resolver o problema analisando o código interno do Django
    • Nesse processo, além de ampliar o entendimento sobre as ferramentas Django utilizadas, foi possível aprender que examinar o código interno pode ajudar a encontrar soluções para alguns problemas difíceis
  • É importante identificar a causa raiz do problema.
    • Ajustar a condição de sucesso do Health Check para exigir mais tentativas ou mais tempo poderia reduzir a frequência de ocorrência da latência da API, mas não teria resolvido o problema de forma fundamental
  • Usar a inteligência coletiva permite descobrir mais rapidamente os pontos em que vale focar e adquirir conhecimentos diversos
    • O problema relacionado à latência da API foi compartilhado rapidamente com a organização, e diversos engenheiros deram opiniões sobre o que poderia estar causando o problema
    • Foi possível reunir essas opiniões rapidamente e absorver com agilidade conhecimentos sobre onde valia a pena concentrar a investigação
  • É importante configurar um ambiente de reprodução do sintoma para resolver o problema
    • Foi possível reproduzir o mesmo problema localmente e, com isso, verificar se ele havia sido realmente resolvido
    • Foi possível reconhecer a importância de reproduzir o sintoma no processo de resolução do problema

1 comentários

 
aer0700 2024-08-12

Cliquei no link e vi que o conteúdo do post é muito bom.