Ciclo de vida de desenvolvimento
A estratégia de ciclo de vida de desenvolvimento fornece as principais considerações e recomendações de design para repositório, ramificação, compilações automatizadas, implantação e estratégia de reversão durante a criação automática de zonas de destino.
Estratégia do repositório
Considerações sobre o design
Adote um sistema de controle de versão como o Git para fornecer flexibilidade à equipe no compartilhamento e gerenciamento de código.
- Git é o sistema de controle de versão padrão do setor. É um sistema de controle de versão distribuído, em que a cópia local do código é uma versão completa do repositório.
Entenda a comparação entre estrutura de repositório mono-repo e multi-repo.
- Nas estruturas mono-repo, todo o código-fonte reside em um único repositório.
- Nas estruturas multi-repo, todos os projetos são organizados em repositórios separados.
Escolha uma configuração de visibilidade que se adapte ao conteúdo do repositório.
- Os repositórios públicos podem ser acessados anonimamente.
- Os repositórios privados exigem que os usuários tenham acesso ao repositório e façam login para acessar os serviços.
- Você pode definir visibilidade pública e privada para Azure DevOps Projects e repositórios GitHub.
Defina permissões de repositório que ajudem você a controlar quem pode contribuir com o código-fonte e gerenciar outros recursos.
- Você pode definir permissões de repositório para Azure DevOps e GitHub.
Use a implantação de recursos de IaC (Infraestrutura como Código) no Azure. A IaC permite que você gerencie a infraestrutura em um modelo declarativo, ajudando a reduzir os esforços de configuração, garantir a consistência entre as implantações e evitar a configuração manual do ambiente.
O Azure dá suporte à IaC para Zonas de Destino por meio do seguinte:
Recomendações de design
Use o Git como sistema de controle de versão.
Usar repositórios privados ao compilar as Zonas de Destino do Azure
Use repositórios públicos ao compartilhar informações não confidenciais, como exemplos de automação, documentação pública e material de colaboração de código aberto.
Adote uma abordagem de IaC para implantar, gerenciar, governar e dar suporte a recursos de nuvem.
Estratégia de ramificação
Considerações sobre o design
Use uma estratégia de ramificação que permita que as equipes colaborem melhor e gerenciem com eficiência o controle de versão.
Use convenções de nomenclatura específicas para as ramificações.
Use permissões de ramificação para controlar os recursos do usuário.
Use políticas de ramificação para ajudar as equipes a proteger ramificações importantes de desenvolvimento. As políticas podem ajudar a impor a qualidade de código e os padrões de gerenciamento de alterações. Exemplos de políticas de ramificação incluem:
- Usar sempre as solicitações de pull para mesclar alterações em ramificações importantes.
- Exigir o número mínimo de revisores para solicitações de pull.
- Incluir revisores de código automaticamente.
- Verificar itens de trabalho vinculados permite manter a rastreabilidade.
- Verificar a resolução de comentários valida se todos os comentários de PR foram resolvidos.
- Limitar os tipos de mesclagem.
A adoção de uma estratégia de solicitação de pull pode ajudar a manter o controle das alterações de código mescladas nas ramificações.
- Defina uma estratégia de mesclagem.
- As solicitações pull devem ser simples e o número de arquivos mantido no mínimo para ajudar os revisores a validar confirmações e alterações com mais eficiência.
- As solicitações pull devem ter títulos e descrições claros para que os revisores saibam o que esperar ao examinar o código.
- Você pode usar os modelos de solicitação pull.
- Você pode excluir as ramificações de origem depois que as solicitações de pull forem concluídas, o que confere mais controle e melhor gerenciamento de ramificação.
Recomendações de design
Adote um modelo de desenvolvimento baseado em tronco, em que os desenvolvedores se comprometam com uma única ramificação. Esse modelo facilita a integração contínua. Todo o trabalho de recurso é feito no tronco e os conflitos de mesclagem são resolvidos quando a confirmação ocorre.
Peças às equipes para definir e usar convenções de nomenclatura consistentes para ramificações, a fim de identificar o trabalho feito.
Defina permissões para controlar quem pode ler e atualizar o código em uma ramificação do repositório Git. Você pode definir permissões para usuários individuais e para grupos.
Defina políticas de ramificação:
- Exija o uso de solicitações de pull para mesclagens de ramificação na ramificação principal.
- Exija o número mínimo de revisores para solicitações de pull.
- Redefina todos os votos de aprovação para remover todos os votos de aprovação, mas mantenha os votos de rejeição ou espera sempre que uma ramificação de origem for alterada.
- Inclua revisores de código automaticamente.
- Verificar a resolução de comentários.
Defina o squash como estratégia de mesclagem, o que permite que você condense o histórico de branches do tópico do Git, ao concluir as solicitações de pull. Em vez de adicionar cada confirmação em um branch do tópico ao histórico da ramificação padrão, uma mesclagem squash adiciona todas as alterações de arquivo a uma única nova confirmação na ramificação padrão.
Compilações automatizadas
Considerações sobre o design
Implemente a CI (Integração Contínua). A CI envolve mesclar todo o código do desenvolvedor em uma base de código central regularmente e, em seguida, executar automaticamente os processos padrão de compilação e teste.
Use os gatilhos de CI:
- Azure Repos Git. Você pode configurar ramificações, caminhos e marcas como gatilhos para executar uma compilação de CI.
- GitHub. Você pode configurar gatilhos de ramificações, caminhos e marcas para executar uma compilação de CI.
Inclua testes de unidade de IaC no processo de compilação para validar a sintaxe.
- O kit de ferramentas de teste de Modelos do ARM verifica se um modelo segue as práticas recomendadas.
- O linter Bicep verifica os erros de sintaxe e as violações de práticas recomendadas em arquivos Bicep.
Inclua testes de unidade no processo de compilação do aplicativo. Examine as tarefas disponíveis para Pipeline do Azure DevOps.
Use as conexões de serviço do Azure DevOps ou os segredos do GitHub para gerenciar as conexões com o Azure. Cada conexão deve ter o acesso de privilégio correto para os recursos do Azure.
Use os segredos do Azure Key Vault para armazenar e gerenciar informações confidenciais, como senhas, chaves de API e certificados.
Os agentes do Azure DevOps podem ser auto-hospedados ou hospedados pela Microsoft.
- A manutenção e as atualizações são resolvidas para você, quando você usa agentes hospedados pela Microsoft. Toda vez que um trabalho de compilação é executado, uma máquina virtual nova é criada.
- Configure e gerencie agentes auto-hospedados por conta própria para executar trabalhos de compilação.
Recomendações de design
Use a CI para automatizar as compilações e os testes do código sempre que um membro da equipe confirmar as alterações no controle de versão.
Inclua testes de unidade para IaC e código do aplicativo como parte do processo de compilação.
Se possível, use o pool hospedado pela Microsoft, em vez de pools auto-hospedados, pois eles oferecem isolamento e uma VM limpa para cada execução de pipeline.
Ao conectar o Azure DevOps ou o GitHub ao Azure por meio de conexões de serviço ou segredos do GitHub, defina sempre o escopo de modo que eles possam acessar apenas os recursos necessários.
Use os segredos do Key Vault para evitar a codificação de informações confidenciais, como credenciais (senhas de usuário da máquina virtual), certificados ou chaves. Em seguida, use segredos como variáveis nos trabalhos de compilação e lançamento.
Estratégia de implantação
Considerações sobre o design
Use a CD (Entrega Contínua). A CD envolve a criação, o teste, a configuração e a implantação de uma compilação em um ambiente.
Use os ambientes. Os ambientes permitem que você direcione uma coleção de recursos a partir de um trabalho de entrega. Os exemplos de nomes de ambiente comuns incluem:
- Desenvolvimento
- Teste
- QA
- Preparo
- Produção
Considere usar a IaC como parte de sua estratégia para validar e confirmar alterações pré-implantação.
Recomendações de design
Use a CD para garantir que o código esteja sempre pronto para implantar ao compilar, testar e implantar automaticamente o código em ambientes semelhantes ao de produção. Adicione a entrega contínua para criar uma integração completa de CI/CD que ajuda a detectar defeitos de código o mais cedo possível e garante que você possa liberar rapidamente as atualizações testadas corretamente.
Use os ambientes como parte da estratégia de implantação. Os ambientes oferecem benefícios como:
- Histórico de implantações
- Rastreabilidade de confirmações e itens de trabalho
- Integridade dos recursos de diagnóstico
- Segurança
Inclua verificações de pré-implantação da IaC para que você possa visualizar as alterações e ver detalhes sobre se um recurso é criado, modificado ou excluído.
Estratégia de reversão
Considerações sobre o design
Crie um plano de reversão. Reverter uma implantação envolve reverter a implantação para um estado adequado conhecido e fornece a capacidade fundamental de recuperação de uma implantação com falha.
Use a opção Desfazer alterações no Git, se precisar reverter alterações em uma confirmação, descartar alterações ou redefinir uma ramificação para um estado anterior.
Recomendações de design
- Adote o uso da opção Desfazer alterações no Git, quando precisar reverter alterações em arquivos confirmados, descartar alterações não confirmadas ou redefinir uma ramificação para um estado anterior.