Adote práticas de implantação seguras
Implemente guarda-corpos no processo de implantação para minimizar o efeito de erros ou condições inesperadas. |
---|
Durante o ciclo de desenvolvimento, os artefatos de carga de trabalho passam por muitas alterações à medida que são implementados e testados e à medida que os bugs são corrigidos.
O processo de implantação deve seguir um procedimento operacional padrão. Qualquer mudança deve ser implementada com o mesmo nível de rigor. Esse princípio se aplica igualmente ao código, à configuração e a todos os artefatos relacionados. O segredo é aplicar práticas seguras o mais cedo possível para que você tenha previsibilidade na produção. Mesmo que os erros cheguem aos clientes, você deve ser capaz de implementar as alterações de recuperação o mais rápido possível.
Cenário de exemplo
A Contoso Air desenvolveu uma aplicação Web que permite ao cliente reservar voos diretamente através da aplicação. O aplicativo está em produção há mais de um ano.
O aplicativo é totalmente implantado no Azure e é criado no Serviço de Aplicativo do Azure, Azure Cosmos DB, Azure Functions, Aplicativos Lógicos do Azure e Barramento de Serviço do Azure.
Codificar padrões de implantação automatizada
Padronize o processo para implantar qualquer alteração usando processos de implantação automatizados, como pipelines. Todos os ambientes devem usar pipelines. Classifique ativos e versões por ambiente para torná-los facilmente rastreáveis e identificáveis.
Métodos de implantação consistentes reduzem os problemas causados por erros e variações do processo e permitem que você concentre seus esforços nas preocupações com a carga de trabalho.
A padronização garante que a implantação seja concluída com segurança, confiabilidade e repetibilidade.
A classificação facilita a visualização de logs de implantações anteriores e problemas que ocorreram. Talvez seja possível usar essas informações para agilizar as operações de reversão e roll-forward.
O desafio da Contoso
- A equipe de carga de trabalho da Contoso Air usa pipelines de compilação e implantação automatizados, mas as implantações normalmente exigem intervenção manual durante toda a operação para alterar e validar várias definições de configuração.
- Devido à intervenção manual, há erros frequentes na implantação, tornando cada lançamento um evento altamente estressante e perturbador para toda a equipe. A intervenção manual também dificulta a reversão quando uma implantação falha.
Aplicação da abordagem e dos resultados
- A equipe aloca tempo para automatizar as alterações de configuração como parte da implantação e para integrar a funcionalidade adicionada aos pipelines de implantação existentes.
- As definições de configuração associadas a cada ambiente são externalizadas para os respetivos arquivos JSON, que são salvos no controle do código-fonte para rastreabilidade adicional. As configurações consideradas segredos são salvas em armazenamentos secretos do cofre, que também são alocados para cada ambiente.
- Todas as alterações agora são registradas durante a implantação, alcançando total rastreabilidade para ajudar nos esforços de solução de problemas e auditorias. A equipe também adiciona testes automatizados para validar as alterações de configuração no pipeline.
- Em seguida, a equipe trabalhará na automatização total das reversões para otimizar ainda mais os processos.
- Como resultado da nova automação, as implantações têm sido mais confiáveis e previsíveis, e o moral da equipe também aumentou.
Implante com frequência
Implante pequenas atualizações incrementais em uma cadência regular.
O uso dessa abordagem ajudará a manter as histórias de usuários e os itens de trabalho gerenciáveis do ponto de vista do gerenciamento de projetos e reduzirá o risco de problemas em grande escala quando as implantações falharem.
O desafio da Contoso
- Os processos de implantação da equipe historicamente têm sido fazer grandes lançamentos a cada três ou quatro meses. Essa prática dificulta a validação da liberação. A equipe também teve dificuldade em solucionar problemas com tantas peças móveis.
- Lançamentos problemáticos que exigem hot-fixes no meio do lançamento ou que precisam ser revertidos e abandonados ocorreram várias vezes.
- Os lançamentos são altamente estressantes e têm sido tratados como situações de "todas as mãos no convés", o que tem impactado negativamente o moral da equipe.
Aplicação da abordagem e dos resultados
- Após a última versão problemática, as partes interessadas pediram à equipe que apresentasse uma abordagem melhor para as implantações. A equipe decidiu mudar suas práticas para favorecer mudanças frequentes e pequenas. Eles limitarão o escopo de cada versão a uma ou (no máximo) algumas alterações relacionadas que são exaustivamente testadas à medida que a compilação é promovida nos ambientes inferiores.
- Como resultado, os lançamentos se tornaram muito mais eficientes e a qualidade aumentou. As versões são mais fáceis de validar e os problemas são mais simples de solucionar.
- Ter uma cadência regular de lançamentos previsíveis ajudou a restaurar a confiança e a moral da equipe. Os usuários também estão se beneficiando. Com maior qualidade de lançamento, eles veem menos interrupções e têm acesso a novos recursos muito mais cedo.
Utilizar uma abordagem de exposição progressiva
Implemente atualizações gradualmente, com a devida diligência. Use modelos de implantação que lhe dão o controle para aumentar progressivamente o número de instâncias e clientes até que a atualização seja adotada com segurança por todos.
Teste cada atualização de forma controlada para que os problemas sejam corrigidos no início da produção. Evite lançar uma atualização defeituosa que afete toda a sua base de clientes.
Teste se a atualização é compatível com versões anteriores e futuras.
O desafio da Contoso
- A equipe está vendo grandes benefícios ao mudar sua abordagem para fazer lançamentos menores. Eles estão dedicando menos tempo agora aos lançamentos e se sentem energizados para continuar no caminho de fazer melhorias adicionais de excelência operacional.
- À medida que experimentam novos recursos, algumas das mudanças não foram bem recebidas pelos usuários ou causaram um aumento nas chamadas de suporte devido à curva de aprendizado íngreme que trazem.
- Eles se perguntam como podem continuar inovando seus aplicativos para maximizar a produtividade de seus usuários, enquanto ainda minimizam o impacto do lançamento de recursos que podem não ser tão populares ou fáceis de usar.
Aplicação da abordagem e dos resultados
- Eles decidiram implementar um modelo de lançamento de recursos que expõe novos recursos aos usuários de forma incremental, usando Feature Flags.
- Durante os estágios de planejamento de novos recursos, um critério é definido para selecionar quais usuários serão expostos ao recurso primeiro. Um pequeno grupo de usuários é selecionado para receber o novo recurso primeiro. Dependendo dos comentários dos usuários, o recurso é implantado em grupos sucessivamente maiores até que toda a população de usuários esteja executando a nova versão. À medida que mais usuários são expostos aos novos recursos, a equipe de suporte está documentando o resultado dos casos de suporte para compartilhar internamente e, potencialmente, preencher as perguntas frequentes externas.