Recomendações para melhorar a velocidade de compilação

Aplica-se a esta recomendação da lista de verificação do Azure Well-Architected Framework Operational Excellence:

OE:04 Otimize os processos de desenvolvimento de software e garantia de qualidade seguindo práticas comprovadas no setor para desenvolvimento e teste. Para uma designação de função inequívoca, padronize as práticas em todos os componentes, como ferramentas, controle do código-fonte, padrões de design de aplicativos, documentação e guias de estilo.

Guias relacionados: Recomendações para padronizar ferramentas e processos | Recomendações para usar a integração contínua

Este guia descreve as recomendações para melhorar o desempenho de sua infraestrutura de implantação. É importante ter um processo de build em execução no primeiro dia de desenvolvimento do produto. Builds são a pulsação do sistema de entrega contínua porque o status de build mostra quando o produto é implantável. As compilações fornecem informações cruciais sobre o status do seu produto, portanto, você deve sempre se esforçar para compilações rápidas.

É difícil corrigir um problema de compilação se demorar mais para compilar. Quando os atrasos acontecem e se tornam normalizados, as equipes tendem a ficar menos motivadas para corrigir o problema.

Principais estratégias de design

Otimizar tempos de build

Para executar compilações mais rápidas, você pode:

  • Escolha agentes que atendam aos seus requisitos de desempenho: acelere suas compilações selecionando as máquinas de compilação certas. Computadores rápidos podem fazer a diferença entre horas e minutos. Se os pipelines estiverem no Azure Pipelines, você poderá executar seus trabalhos usando um agente hospedado pela Microsoft. Quando você usa agentes hospedados pela Microsoft, a manutenção e as atualizações são cuidadas para você. Para saber mais, confira Agentes hospedados pela Microsoft.

  • Otimize o local do servidor de compilação: quando você está criando seu código, os dados são enviados pela rede. As entradas para as compilações são buscadas em um repositório de controle do código-fonte e no repositório de artefatos. A saída do processo de compilação precisa ser copiada, incluindo os artefatos compilados, relatórios de teste, resultados de cobertura de código e símbolos de depuração. É importante que essas ações de cópia sejam executadas rapidamente. Se você usar seu próprio servidor de compilação, certifique-se de que o servidor de compilação esteja localizado próximo às origens e a um local de destino. Uploads e downloads rápidos podem reduzir o tempo geral de compilação.

  • Servidores de compilação escaláveis horizontalmente: um único servidor de compilação pode ser suficiente para um produto pequeno. À medida que o tamanho e o escopo do produto e o número de equipes trabalhando no produto aumentam, um único servidor pode não ser suficiente. Escale sua infraestrutura horizontalmente em vários computadores quando atingir o limite. Para obter mais informações, consulte Criar e gerenciar pools de agentes.

  • Otimize a compilação:

    • Adicione trabalhos paralelos para acelerar o processo de compilação. Para obter mais informações, confira Configurar trabalhos paralelos e pagar por eles.

    • Habilite execuções paralelas de suítes de testes, que geralmente economizam muito tempo, especialmente ao executar testes de integração e interface do usuário. Para obter mais informações, consulte Executar testes em paralelo para qualquer executor de teste.

    • Use a noção de um multiplicador, em que você pode escalar seus builds em vários agentes de build. Para obter mais informações, confira Especificar trabalhos em seu pipeline.

    • Considere mover os testes de integração, interface do usuário e fumaça para um pipeline de lançamento. Mudar para um pipeline de lançamento melhora a velocidade de build e a velocidade do loop de comentários de build.

    • Publique os artefatos de build em uma solução de gerenciamento de pacotes, como NuGet ou Maven. A publicação em uma solução de gerenciamento de pacotes permite que você reutilize seu artefato de build com mais facilidade.

Minimize a intervenção humana

Sua organização pode optar por criar vários tipos diferentes de compilações para otimizar os tempos de compilação. As compilações possíveis incluem:

  • Compilação de CI (integração contínua): a finalidade dessa compilação é garantir que o código seja compilado e os testes de unidade sejam executados. Essa compilação é disparada em cada confirmação. Ele serve como o coração do projeto e fornece feedback de qualidade para a equipe imediatamente. Para obter mais informações, consulte Especificar eventos que disparam pipelines.

  • Compilação noturna: a finalidade de uma compilação noturna não é apenas compilar o código, mas também garantir que quaisquer conjuntos de testes maiores que sejam ineficientes sejam executados em uma cadência regular para cada compilação. Normalmente, esses testes incluem testes de integração, interface do usuário ou fumaça. Para mais informações, consulte Configurar agendas para pipelines.

  • Build de versão: além de compilar e executar testes, esse build também compila a documentação da API, relatórios de conformidade, assinatura de código e outras etapas que não são necessárias sempre que o código é criado. Esse build fornece a cópia dourada que é enviada por push para o pipeline de lançamento para finalmente implantar no ambiente de produção.

Os tipos de compilações necessários para sua organização dependem de fatores como a maturidade de sua equipe e organização, o tipo de produto em que você está trabalhando e sua estratégia de implantação.

Facilitação do Azure

O Azure DevOps é uma coleção de serviços que ajudam você a criar uma prática de desenvolvimento colaborativa, eficiente e consistente.

Use o Azure Pipelines para criar e lançar serviços para dar suporte à CI/CD (integração contínua e entrega contínua) de seus aplicativos.

Use o GitHub Actions para Azure para automatizar processos de CI/CD e integrar-se diretamente ao Azure para simplificar as implantações. Você também pode criar fluxos de trabalho que compilam e testam cada solicitação de pull em seu repositório ou implantar solicitações de pull mescladas na produção usando GitHub Actions para Azure.

Os agentes hospedados pela Microsoft estão disponíveis nativamente no Azure Pipelines. Esses agentes são máquinas virtuais de uso único que são usadas apenas para um trabalho e, em seguida, descartadas, o que fornece uma opção fácil de gerenciar para suas compilações.

Lista de verificação de Excelência Operacional

Consulte o conjunto completo de recomendações.