Implemente com confiança

Concluído
Alcance o estado desejado de implantação com previsibilidade.

Crie uma cadeia de suprimentos de carga de trabalho que permita alcançar consistentemente a meta de previsibilidade em todos os seus ambientes, nas plataformas de hospedagem, aplicativos, dados e recursos de configuração da carga de trabalho. O mecanismo de implantação deve ser capaz de automação, teste, monitoramento e controle de versão. Ele deve ser modularizado e pronto para ser executado sob demanda. Não deve ser representado como um processo monolítico de ponta a ponta. A cadeia de suprimentos não é necessariamente para uma execução mais rápida, mas para obter consistência e autodocumentação em várias iterações.

A equipe de carga de trabalho é responsável pela cadeia de suprimentos no que diz respeito à sua própria carga de trabalho.

Cenário de exemplo

A Contoso Manufacturing desenvolveu um aplicativo baseado em Java que é usado para monitorar e otimizar seus processos de fabricação. A carga de trabalho foi migrada recentemente para o Azure e agora está sendo executada no Azure Spring Apps, no Banco de Dados do Azure para MySQL e no Hub IoT do Azure.

Implantar infraestrutura por meio de código

Use a infraestrutura como código (IaC) para definir os aspetos repetíveis da cadeia de suprimentos que estão prontos para produção. Prefira abordagens declarativas em vez de métodos imperativos.

As tecnologias Declarative IaC são projetadas com automação e reutilização em mente. Você pode descarregar implantações de infraestrutura de indivíduos para ferramentas e obter qualidade consistente.

Do ponto de vista da infraestrutura, ter menos opções de tecnologia elimina a variação nas ferramentas e torna o desvio de configuração fácil de detetar. A manutenção também será mais fácil. Se você alinhar as escolhas com o conjunto de habilidades existente da equipe, a equipe poderá adotá-las facilmente.

O desafio da Contoso

  • A versão local da carga de trabalho usou uma combinação de scripts e etapas manuais para criar a infraestrutura e implantar o aplicativo em todos os ambientes. No início do processo de migração do Azure, a equipe fez modificações nos scripts imperativos existentes para direcionar a nova plataforma para que eles pudessem reutilizar o máximo possível da base de código de automação existente. Essa abordagem também foi adotada devido à falta de experiência com tecnologias Azure e IaC, como o Bicep.
  • À medida que a migração progrediu e a equipe se familiarizou mais com a plataforma, eles se convenceram de que usar uma abordagem IaC com o Bicep seria uma solução melhor a longo prazo.

Aplicação da abordagem e dos resultados

  • Sem conhecimento interno, a equipe contratou o trabalho para migrar e estender os scripts de automação de implantação para a carga de trabalho para contratantes experientes, que trabalharam incorporados com a equipe de desenvolvimento durante as fases iniciais do projeto, enquanto forneciam transferência de conhecimento para o resto da equipe.
  • A implementação baseada em Bíceps resultante fornece uma maneira mais confiável, gerenciável e eficiente de provisionar a infraestrutura no Azure. O código agora é mais legível e sustentável, com ótimo suporte a ferramentas no VSCode. Também é totalmente idempotente e simplifica a gestão do Estado, o que eles nunca foram capazes de realizar plenamente com a versão anterior/imperativa.

Trate o seu IaC da mesma forma que o código do seu aplicativo

Siga as recomendações de software para desenvolvimento e manutenção de IaC: modularize com moderação, evite abstrações personalizadas ou de baixo valor e siga uma abordagem em camadas para refletir diferentes ciclos de vida. Forme camadas fundamentais onde as camadas inferiores permanecem constantes e as camadas superiores mudam conforme necessário.

Artefatos de implantação, como binários de aplicativos, modelos IaC e parâmetros, fazem parte da superfície de ataque. Aplique garantias, como gerenciamento secreto, controle de acesso e outros princípios do pilar Segurança.

Os artefatos experimentam o mesmo nível de rigor de engenharia que o código do aplicativo. Os controles de qualidade por meio de revisões e testes entre pares lhe dão confiança na implantação.

Uma abordagem em camadas facilita a manutenção e cria limites que estabelecem linhas claras de responsabilidade.

Adicionar controles de segurança a artefatos ajuda a fortalecer o sistema durante o processo de implantação.

O desafio da Contoso

  • A equipe do projeto tinha um orçamento generoso no início do esforço de migração, então eles contrataram empreiteiros muito experientes que entregaram com alta qualidade e em um curto período de tempo. Os contratantes usaram um repositório separado para o seu desenvolvimento, e esse repositório não foi regularmente auditado quanto à segurança, enquanto o principal código de recompra do aplicativo é.
  • A equipe está se preparando para lançar uma grande reformulação da solução, e o código de implantação precisa de alterações significativas. Devido à escassez de recursos de desenvolvimento, o último lote de mudanças está sendo feito por dois estagiários. Quando um dos desenvolvedores seniores da equipe é chamado para ajudar os estagiários, ele percebe vários commits no repositório que não estão no mesmo nível dos padrões de desenvolvimento da equipe, incluindo ter segredos de aplicativos como chaves de API codificadas na base de código.

Aplicação da abordagem e dos resultados

  • A equipe decide mover a base de código de compilação e implantação para o mesmo repositório usado para o código do aplicativo e começar a aplicar o mesmo nível de rigor de engenharia que outras áreas da base de código. O código é trazido para os padrões da equipe antes da primeira confirmação, os segredos do aplicativo são removidos e todos os outros padrões e ferramentas de qualidade da equipe são aplicados a ele.
  • Como resultado, a equipe garantiu esta seção da base de código enquanto aumentava a qualidade do código. No futuro, as alterações nessa área da base de código seguirão os mesmos padrões e aproveitarão as mesmas ferramentas usadas para a base de código do aplicativo principal, incluindo revisões de código de pares e verificação automatizada do código com ferramentas de qualidade e segurança.

Padronizar implantações em um único manifesto

Desenvolva um manifesto de implantação comum que seja usado em todos os ambientes. Use esse manifesto como o mecanismo padrão para projetos greenfield, atualizações incrementais de carga de trabalho ou recuperação de desastres.

A aplicação dessa abordagem permitirá que você remova a sobrecarga de manter vários ativos.

Se houver um desastre, a recuperação será rápida e confiável, porque você pode implantar um manifesto testado e comprovado em vez de criar um ambiente improvisado.

O desafio da Contoso

  • A Contoso Manufacturing usa um pipeline totalmente automatizado para implantar a infraestrutura, o código do aplicativo e as alterações de configuração no ambiente de desenvolvimento e produção. O aplicativo está configurado para ser altamente disponível em uma única região. A maioria dos componentes do aplicativo são sem monitoração de estado, exceto para o banco de dados MySQL. O backup do banco de dados é feito conforme ditado pelo RTO/RPO estabelecido e o backup é replicado para uma região secundária.
  • Se ocorrer uma falha grave ou catastrófica na região primária, a equipe planeja criar um novo ambiente para hospedar o aplicativo na região secundária. Durante um drill planejado para testar os procedimentos de DR, os scripts de implantação falham ao tentar recriar o ambiente na região secundária devido à falta de disponibilidade de vários recursos e outras limitações de serviço.

Aplicação da abordagem e dos resultados

  • A equipe atenua os problemas encontrados ao tentar provisionar na região secundária, substituindo o uso de alguns recursos por SKUs equivalentes que estão disponíveis em ambas as regiões e tornando algumas opções configuráveis para que um valor diferente, mas válido, possa ser usado no secundário.
  • O exercício aumentou a confiança da equipe em sua capacidade de se recuperar de grandes falhas de infraestrutura.

Verifique o seu conhecimento

1.

Como a implantação da infraestrutura como código pode ajudá-lo a implantar com confiança?

2.

Como mover o código IaC para o mesmo repositório que o código do aplicativo ajudou a equipe da Contoso a implantar com confiança?

3.

Qual das seguintes opções pode ajudar a garantir que a implantação de um ambiente de DR seja eficiente?