Como a equipe de controle de qualidade do GitLab usa a ferramenta de desempenho do GitLab

Uma tradução do artigo foi preparada antes do início do curso DevOps Practices and Tools .




Lançamos várias iniciativas para melhorar o desempenho do GitLab e precisávamos de uma nova ferramenta de benchmark.

O teste de desempenho é um processo complexo que difere de outros tipos de teste. Para obter resultados, são necessários recursos dedicados, abordagens e ferramentas especiais. Quando entrei na empresa e me tornei o primeiro membro dessa equipe, minha tarefa era transferir os esforços nascentes para melhorar a produtividade em uma escala maior. Para fazer isso, criamos uma nova ferramenta com o nome simples GitLab Performance Too l (GPT).

Temos o prazer de anunciar o lançamento público da GPT. Nesta postagem, descreveremos como usamos a GPT para testar o desempenho do GitLab e também como você pode usá-lo para testar seus ambientes.

No entanto, primeiro observe o que usamos.

Arquiteturas de referência e dados de teste


Em nossa experiência, a parte mais difícil do teste de desempenho não está no teste em si, mas na configuração dos ambientes e dados de teste corretos.

Assim, uma das iniciativas é o desenvolvimento das arquiteturas de referência do GitLab , que podem lidar com um grande número de usuários. Queremos usar essas arquiteturas como uma maneira de padronizar nossas configurações recomendadas para fornecer aos clientes implantações de GitLab de alto desempenho, escalonáveis ​​e altamente acessíveis.

Para essa ferramenta, precisamos de dados de teste realistas, por exemplo, projetos grandes com solicitações de confirmação e mesclagem. Para a primeira iteração, pegamos o projeto do GitLab.

Depois de configurar e executar os ambientes de teste, estávamos prontos para testá-los usando a GPT.

O que é a ferramenta GitLab Performance (GPT)?


O GPT pode ser usado para executar vários testes de carga para o benchmark GitLab. Tudo o que é necessário é descobrir qual rendimento o ambiente de teste pode suportar (na forma de solicitações por segundo) e garantir a preparação dos dados de teste.

O GPT foi desenvolvido com base em uma das principais ferramentas para teste de carga - k6 . Aqui estão alguns dos recursos da GPT:

  • Um grande conjunto de testes prontos para uso, cobrindo vários pontos de extremidade do GitLab, com a capacidade de adicionar seus próprios testes. Consulte a documentação para obter a descrição dos testes concluídos ; novos testes geralmente são adicionados lá.
  • , GitLab .
  • .
  • .
  • , time to first byte ( ), .

A talentosa equipe de Impact Load criou o k6 , que é o núcleo da GPT. Rapidamente percebemos que não precisávamos reinventar a roda, pois o k6 atende à maioria de nossos requisitos: está escrito em Go, e é por isso que é muito produtivo e de código aberto. Agradecemos à equipe não apenas pelo desenvolvimento do k6, mas também por trabalhar conosco.

Como usamos a GPT


O GPT é usado em vários pipelines automatizados de IC do GitLab para fornecer feedback rápido sobre a operação do GitLab. Os pipelines de CI das arquiteturas de referência trabalham com o mais recente pré-lançamento e, como regra, são executados diariamente ou semanalmente. Imediatamente após o teste, analisamos os resultados para encontrar problemas. Publicamos todos os resultados mais recentes no wiki da GPT de acordo com nosso valor de Transparência .

A GPT também é usada no pipeline de benchmarking para ver como o desempenho do GitLab muda de uma versão para outra. Esses resultados são importantes porque mostram uma imagem de desempenho aprimorado. Os resultados de comparação de benchmark também estão disponíveis no wiki da GPT .

Usando a GPT, conseguimos identificar vários gargalos no desempenho do GitLab e, juntamente com os desenvolvedores, priorizar melhorias. Esse processo valeu a pena e esperamos melhorar o desempenho a cada versão do GitLab. Por exemplo, a versão 12.6 mostrou várias melhorias visíveis em todas as áreas, em uma das quais alcançamos uma redução de 92%! Você pode ver os problemas detectados em nosso rastreador de erros .

Como você pode usar o GPT


Decidimos há muito tempo que queremos seguir os mesmos princípios de código aberto do nosso produto principal, portanto, ao criar a GPT, focamos em todos os usuários, e não em torná-lo um produto exclusivamente interno. Portanto, não apenas permitimos que outros o usem, mas também o incentivamos! Isso é benéfico para nós e nossos clientes, pois recebemos feedback de diferentes pontos de vista, sobre os quais não pensamos. Alguns exemplos disso são o aprimoramento das diretrizes para especificações baseadas em largura de banda recomendadas ou o uso do GPT offline para usuários com nuvens privadas .

Se você deseja usar a GPT para si mesmo, é melhor começar com a documentação. Como observado, a maior parte do esforço para usar a GPT é preparar os ambientes apropriados. A documentação discute esse ponto e o uso direto da GPT.

GPT em ação


Finalmente, depois de falar sobre o GPT, é hora de mostrá-lo em ação. Veja como o teste de carga é executado para a API List Group Projects com uma arquitetura de referência de 10k : asciinema.org/a/O96Wc5fyxvLb1IDyviTwbujj8 Para obter mais informações sobre os resultados, consulte a documentação da GPT.






Qual é o próximo


Nosso objetivo é tornar o GitLab, em termos de desempenho, o melhor de sua classe. E estamos apenas no começo desta jornada. Temos o prazer de poder melhorar a qualidade do serviço ao cliente, fornecendo a eles ferramentas adicionais.

Alguns de nossos planos para versões futuras incluem expandir a cobertura de teste da funcionalidade GitLab, pontos de entrada (API, Web, Git), expandir o trabalho em arquiteturas de referência, dados de teste e padrões de comportamento do usuário para torná-los mais representativos e realistas.

Compartilhe seus comentários e / ou sugestões sobre a GPT no repositório de projetos da GPT ! Congratulamo-nos com suas idéias e sugestões.



Ansible: Início Rápido.



All Articles