Implante com confiança
Alcance o estado desejado de implantação com previsibilidade. |
---|
Crie uma cadeia de suprimentos de carga de trabalho que permita atingir consistentemente a meta de previsibilidade em todos os seus ambientes, nas plataformas de hospedagem, nos aplicativos, nos dados e nos recursos de configuração da carga de trabalho. O mecanismo de implantação deve ser capaz de automatizar, testar, monitorar e controlar versões. Ele deve ser modularizado e estar 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 visa necessariamente uma execução mais rápida, mas sim alcançar consistência e autodocumentação ao longo de múltiplas iterações.
A equipe de carga de trabalho é responsável pela cadeia de suprimentos no que se refere à sua própria carga de trabalho.
Cenário de exemplo
A Contoso Manufacturing desenvolveu um aplicativo baseado em Java que é utilizado para monitorar e otimizar seus processos de fabricação. A carga de trabalho foi recentemente migrada para o Azure e agora está sendo executada no Aplicativos Spring do Azure, no Banco de Dados do Azure para MySQL e no Hub IoT do Azure.
Implantar a infraestrutura por meio de código
Use a Infraestrutura como Código (IaC) para definir os aspectos repetíveis da cadeia de suprimentos que estão prontos para a produção. Prefira abordagens declarativas em vez de métodos imperativos.
As tecnologias declarativas de IaC são projetadas tendo em mente a automação e a reutilização. Você pode transferir as implantações de infraestrutura de indivíduos para ferramentas e obter uma qualidade consistente.
Do ponto de vista da infraestrutura, ter menos opções de tecnologia remove a variação nas ferramentas e facilita a detecção de descompassos de configuração. A manutenção também será mais fácil. Se você alinhar as opções com o conjunto de habilidades existentes da equipe, ela poderá adotá-las facilmente.
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 nos ambientes. No início do processo de migração para o Azure, a equipe fez modificações nos scripts imperativos existentes para direcionar a nova plataforma, de modo que 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 o tecnologias do Azure e IaC como o Bicep.
- À medida que a migração progredia e a equipe se familiarizava mais com a plataforma, eles se convenceram de que usar uma abordagem de IaC com o Bicep seria uma melhor solução a longo prazo.
Aplicando a abordagem e os resultados
- Sem conhecimento interno, a equipe contratou o trabalho de migração e extensão dos scripts de automação de implantação para a carga de trabalho a prestadores de serviços experientes, que trabalharam inseridos na equipe de desenvolvimento durante as fases iniciais do projeto, ao mesmo tempo em que transferiam conhecimento para o restante da equipe.
- A implantação resultante baseada no Bicep oferece uma maneira mais confiável, gerenciável e eficiente de provisionar a infraestrutura no Azure. O código agora é mais legível e de fácil manutenção, com excelente suporte de ferramentas no VSCode. Ele também é totalmente idempotente e simplifica o gerenciamento de estado, o que nunca foi possível realizar totalmente com a versão anterior/imperativa.
Trate sua IaC da mesma forma que o código do 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 em que as camadas inferiores permaneçam constantes e as camadas superiores sejam alteradas conforme necessário.
Os artefatos de implantação, como binários de aplicativos, modelos de IaC e parâmetros, fazem parte da superfície de ataque. Aplique garantias, como gerenciamento de segredos, controle de acesso e outros princípios do pilar de segurança.
Os artefatos têm o mesmo nível de rigor de engenharia que o código do aplicativo. Os controles de qualidade por meio de revisões em pares e testes 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.
A adição de controles de segurança aos artefatos ajuda a fortalecer o sistema durante o processo de implantação.
Desafio da Contoso
- A equipe do projeto tinha um orçamento generoso no início do esforço de migração e, por isso, contratou prestadores de serviços muito experientes que entregaram com alta qualidade e em um curto período. Os prestadores de serviços usaram um repositório separado para o desenvolvimento, e esse repositório não foi auditado regularmente quanto à segurança, enquanto o repositório principal do código do aplicativo foi.
- 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 alterações 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 de acordo com os padrões de desenvolvimento da equipe, incluindo segredos de aplicativos, como chaves de API, codificados na base de código.
Aplicando a abordagem e os resultados
- A equipe decide mover a base de código de compilação e implantação para o mesmo repositório utilizado 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 é ajustado aos 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 protegeu essa seção da base de código e, ao mesmo tempo, aumentou 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 em pares e verificação automatizada do código com ferramentas de qualidade e segurança.
Padronizar as implantações em um único manifesto
Desenvolva um manifesto de implantação comum que seja utilizado 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ê elimine a sobrecarga de manutenção de vários ativos.
Se houver um desastre, a recuperação será rápida e confiável porque você poderá implantar um manifesto testado e aprovado em vez de criar um ambiente improvisado.
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 é configurado para ser altamente disponível em uma única região. A maioria dos componentes do aplicativo é sem estado, exceto o banco de dados MySQL. O banco de dados é submetido a backup conforme determinado pelo RTO/RPO estabelecido e o backup é replicado em uma região secundária.
- Se ocorrer uma falha grave ou catastrófica na região primária, a equipe planejará a criação de um novo ambiente para hospedar o aplicativo na região secundária. Durante uma simulação planejada 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.
Aplicando a abordagem e os 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 utilizado na região secundária.
- O exercício aumentou a confiança da equipe em sua capacidade de se recuperar de grandes falhas de infraestrutura.