Adotar práticas de implantação seguras

Concluído
Implemente guardrails 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 como bugs são corrigidos.

O processo de implantação deve seguir um procedimento operacional padrão. Qualquer alteração deve ser implantada com o mesmo nível de rigor. Esse princípio se aplica igualmente ao código, à configuração e a todos os artefatos relacionados. A chave é 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ê deverá ser capaz de implementar as alterações de recuperação assim que possível.

Cenário de exemplo

A Contoso Air desenvolveu um aplicativo Web que permite que o cliente reserve voos diretamente pelo aplicativo. 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, no Azure Cosmos DB, no Azure Functions, nos Aplicativos Lógicos do Azure e no Barramento de Serviço do Azure.

Codificar padrões de implantação automatizada

Padronizar 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 problemas causados por erros de processo e variação e permitem que você concentre seu esforço nas preocupações da carga de trabalho.

A padronização garante que a implantação seja concluída de forma segura, confiável e com repetibilidade.

A classificação facilita a exibição de logs de implantações e problemas anteriores que ocorreram. Você pode usar essas informações para agilizar operações de reversão e reversão.

Desafio da Contoso

  • A equipe de carga de trabalho da Contoso Air usa pipelines automatizados de build e implantação, mas as implantações normalmente exigem intervenção manual em toda a operação para alterar e validar várias configurações.
  • Devido à intervenção manual, há erros frequentes na implantação, tornando cada versão um evento altamente estressante e disruptivo para toda a equipe. A intervenção manual também dificulta a reversão quando uma implantação falha.

Aplicando a abordagem e os resultados

  • A equipe aloca tempo para automatizar as alterações de configuração como parte da implantação e integrar a funcionalidade adicionada aos pipelines de implantação existentes.
  • As configurações associadas a cada ambiente são externalizadas para os respectivos arquivos JSON que são salvos no controle do código-fonte para rastreamento adicional. As configurações consideradas segredos são salvas em repositórios de cofres secretos, que também são alocadas para cada ambiente.
  • Todas as alterações agora são registradas durante a implantação, alcançando total rastreabilidade para ajudar na solução de problemas de esforços 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 completa de 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.

Implantar com frequência

Implante pequenas atualizações incrementais em uma cadência regular.

Usar essa abordagem irá ajudar a manter histórias de usuário e itens de trabalho gerenciáveis do ponto de vista do gerenciamento de projetos e reduzirá o risco de problemas em larga escala quando as implantações falharem.

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 versão. A equipe também teve dificuldades para solucionar problemas com tantas partes móveis.
  • Versões problemáticas que exigem correções frequentes de versão intermediária ou devem ser revertidas e abandonadas ocorreram várias vezes.
  • As versões são altamente estressantes e têm sido tratadas como situações de "todos envolvidos", o que tem afetado negativamente o moral da equipe.

Aplicando a abordagem e os resultados

  • Após a última versão problemática, os stakeholders pediram à equipe para criar 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 completamente testadas à medida que o build é promovido em ambientes inferiores.
  • Como resultado, as versões 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 problemas.
  • Ter uma cadência regular de versões 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 obtêm acesso a novos recursos muito mais cedo.

Usar uma abordagem de exposição progressiva

Implemente atualizações gradualmente, com a devida diligência. Use modelos de implantação que oferecem 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 maneira controlada para que os problemas sejam corrigidos no início da produção. Evite distribuir uma atualização com falha que afete toda a sua base de clientes.

Teste se a atualização é compatível com versões anteriores e futuras.

Desafio da Contoso

  • A equipe está vendo grandes benefícios ao mudar sua abordagem para fazer versões menores. Eles estão dedicando menos tempo agora às versões e se sentem energizados para continuar no caminho de fazer melhorias adicionais de excelência operacional.
  • À medida que eles experimentam novos recursos, algumas das alterações não foram bem recebidas pelos usuários ou causaram um aumento nas chamadas de suporte devido à curva de aprendizado íngreme que eles trazem.
  • Eles se perguntam como podem continuar inovando seus aplicativos para maximizar a produtividade do usuário, minimizando ainda o impacto da liberação de recursos que podem não ser tão populares ou fáceis de usar.

Aplicando a abordagem e os resultados

  • Eles decidiram implementar um modelo de versão de recursos que expõe novos recursos aos usuários de forma incremental, usando Sinalizadores de Recursos.
  • Durante os estágios de planejamento para 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 do usuário, 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.

Verifique seu conhecimento

1.

Qual das opções a seguir é um princípio fundamental das práticas de implantação seguras?

2.

Qual das opções a seguir é uma estratégia de implantação recomendada?

3.

Como a Contoso adotou a abordagem da exposição progressiva?