Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A execução é onde os planos se transformam em realidade. Esta etapa envolve preparar todos para a alteração, fazendo o trabalho de desenvolvimento em ambientes de não produção. Você testa minuciosamente e implanta em produção de maneira controlada. A ênfase é em testes rigorosos e práticas de implantação seguras para minimizar a interrupção dos negócios, dado que as alterações podem ser significativas.
Preparar os stakeholders para modernização
Antes de apertar o botão de distribuição, é essencial preparar todos os stakeholders e usuários para o que está por vir. Surpresas podem causar confusão ou até mesmo problemas operacionais. As principais etapas de preparação incluem comunicação, congelamentos de alterações (mencionados anteriormente) e planos de suporte:
Anuncie o agendamento de implantação para todos os stakeholders. Com antecedência, comunique-se com todas as partes afetadas quando a implantação de modernização deve acontecer e o que esperar. Inclua datas importantes, como o início do congelamento da mudança e a janela de ativação, para ajudar os stakeholders a se prepararem adequadamente. Ao definir expectativas, os usuários podem planejar o tempo de inatividade e as equipes internas podem estar prontas.
Implemente um congelamento de alterações nas cargas de trabalho de origem e dependentes. Como planejado anteriormente na governança, agora é a hora de realmente impor o congelamento. Verifique se nenhuma alteração de código, ajustes de configuração ou outras implantações ocorrem na carga de trabalho (e cargas de trabalho dependentes) por algum período antes e durante a implantação. Isso mantém o ambiente estável. Verifique se todos os membros da equipe e quaisquer terceiros integrados estão cientes. Defina claramente a janela de congelamento com horários de início e término específicos para evitar confusão.
Comunique as ações finais do usuário e as alterações pós-implantação. Os usuários precisam de aviso prévio das ações necessárias antes e depois da implantação para evitar a interrupção do fluxo de trabalho. Instrua os usuários a fazer logout ou salvar seus dados antes do início da transição. Compartilhe novas URLs de acesso, alterações de autenticação, como requisitos de entrada da ID do Microsoft Entra e fluxos de trabalho atualizados que afetam as operações diárias. Forneça a documentação de suporte e guias de início rápido para reduzir a confusão no primeiro dia.
Coordene o pessoal de suporte para implantação. As equipes de desenvolvimento e operações de TI devem estar disponíveis para monitorar e responder a problemas durante fases críticas de implantação. Programe horários de suporte estendidos e outra equipe para o primeiro dia útil após a implantação, quando é mais provável que surjam problemas. Informe as unidades de negócios sobre o plano de suporte pós-implantação e os procedimentos de escalonamento para garantir a resolução rápida de problemas.
Defina procedimentos de fallback para cargas de trabalho críticas. As cargas de trabalho críticas exigem soluções alternativas manuais e planos de contingência para manter as operações de negócios durante as janelas de implantação. Documentar procedimentos específicos, como o processamento manual de pedidos durante os períodos de somente leitura do workload. Compartilhe esses procedimentos com antecedência e confirme a preparação com as equipes afetadas para garantir a execução perfeita quando necessário.
Desenvolver modernizações em um ambiente de não produção
Todo o desenvolvimento e integração das alterações de modernização devem ocorrer fora da produção (em ambientes de desenvolvimento, teste e preparo). O princípio orientador: crie e teste primeiro em ambientes semelhantes aos de produção, para que, quando você implantar na produção, a quantidade já seja conhecida.
Siga os princípios do Well-Architected Framework durante a implementação. À medida que você codifica e configura as novas alterações, aplica continuamente as práticas recomendadas do WAF (Well-Architected Framework) do Azure. Use as recomendações do Assistente do Azure e os processos de revisão de arquitetura para validar as decisões de design. Essa abordagem garante que os componentes modernizados atendam às práticas recomendadas e aos padrões operacionais do Azure.
Crie ambientes de não produção que espelham a produção. Crie ambientes de desenvolvimento/teste no Azure que estejam o mais próximo possível da configuração de produção. Se a produção utilizar determinados serviços do Azure, utilize os mesmos nos testes, em menor escala ou em uma camada de desempenho inferior (SKU) para economizar custos. Quanto mais parecido o seu ambiente de teste for com o de produção, mais confiante você poderá estar de que os resultados do teste devem refletir o comportamento de produção.
Implemente alterações incrementalmente com controle do código-fonte e CI/CD. Trate o esforço de modernização como qualquer outro projeto de software. Use o Git ou outro controle de origem para todas as alterações de código e infraestrutura como scripts de código. Ele fornece histórico e capacidade de reverter o código, se necessário. Divida o trabalho em pequenas partes (talvez por recurso ou correção) e use ramificações de recursos. Integrar alterações com frequência após a revisão de código. Configure a integração contínua para executar seus conjuntos de testes em cada commit, para que você detecte problemas logo.
Validar alterações de modernização com testes
Testar é fundamental. Como a modernização não adiciona novos recursos, o foco está no teste de regressão (nada quebrou) e no teste de desempenho/segurança (funciona melhor do que antes, não pior). Você deseja verificar todos os aspectos da carga de trabalho no ambiente de teste antes de tocar na produção.
Execute testes de unidade e integração em todos os componentes modificados. Os desenvolvedores devem criar ou atualizar testes de unidade para qualquer código refatorado. Mesmo que seja código legado, escrever testes de unidade para funções críticas pode ajudar a identificar se a refatoração tenha mudado o comportamento inadvertidamente. Execute os testes de unidade em seu pipeline de CI continuamente. Além disso, execute testes de integração para garantir que os componentes conversem entre si corretamente. Após qualquer correção de bug, execute novamente testes relevantes para garantir que o bug seja realmente resolvido e nada mais foi quebrado (evite regressões).
Realize testes funcionais de ponta a ponta. Em um ambiente de preparo ou teste, execute testes de fluxo de trabalho completos como se você fosse um usuário final. Esse teste pode ser um teste manual pela equipe de QA ou testes automatizados de IU. Entre no aplicativo, execute tarefas principais. Assegure que a funcionalidade inalterada permaneça inalterada. Basicamente, simule o uso real para detectar qualquer coisa que os testes de unidade possam deixar passar.
Realize o teste de aceitação do usuário (UAT) com as partes interessadas. É sábio envolver alguns usuários finais reais ou stakeholders de negócios para testar a carga de trabalho modernizada antes de entrar em operação. Eles podem pegar nuances que os desenvolvedores ignoram. Capture comentários sobre usabilidade, desempenho e lacunas de funcionalidade. Resolva problemas críticos de teste de aceitação do usuário (UAT) antes da implantação e obtenha aprovação formal dos stakeholders para confirmar a preparação para os negócios.
Valide o desempenho usando testes de carga em condições realistas. A modernização deve melhorar ou manter o desempenho idealmente. Use ferramentas de teste de carga (como o Teste de Carga do Azure) para simular padrões de uso realistas. Compare os resultados com as linhas de base de desempenho do ambiente de origem para identificar qualquer degradação. Realize testes de estresse em 150% de carga esperada para determinar os limites de carga de trabalho e validar a resiliência sob pressão.
Execute verificações de validação e conformidade de segurança. Execute verificações de vulnerabilidade em novas imagens de código e contêiner para detectar riscos de segurança. Execute a validação de conformidade para cargas de trabalho regulamentadas usando ferramentas específicas do setor. Use o Microsoft Defender para Nuvem para verificar se há configurações incorretas de infraestrutura e validar que os controles de segurança atendem aos requisitos.
Resolva todos os problemas críticos antes da implantação de produção. Corrija problemas funcionais, de desempenho e de segurança identificados durante as fases de teste. Confirme se todos os testes são aprovados e o desempenho atende aos SLAs (contratos de nível de serviço). Documente os problemas de baixa prioridade restantes e crie planos de correção para a resolução pós-implantação.
Criar infraestrutura reutilizável
Depois que a solução modernizada passar em todos os testes no ambiente de não produção, você deverá capturar a configuração da infraestrutura e as configurações como código, para que ela possa ser facilmente replicada em ambientes de produção e futuros. Infraestrutura reutilizável significa usar modelos de IaC (infraestrutura como código) e automação para consistência e velocidade.
Crie modelos de IaC para configurações comprovadas. Pegue a arquitetura final do ambiente de teste (que espelha o que você deseja no prod) e codifique-a. Use modelos Bicep, Terraform ou Azure Resource Manager para definir sua infraestrutura. Parametrize esses modelos para que eles possam ser reutilizados para diferentes estágios, como desenvolvimento, teste, prod com pequenos ajustes, como nomes ou tamanhos. Essa configuração garante que o ambiente de produção criado corresponda ao que você testou. Ele evita o erro humano ao clicar manualmente no portal do Azure para criar recursos. Isso também significa que, se você precisar recriar o ambiente, como para recuperação de desastre ou implantação em novas regiões, você terá a implantação de infraestrutura pronta. Para obter mais informações, consulte Gerenciamento de CAF – Gerenciar implantações baseadas em código.
Armazene modelos no controle de versão. Verifique seu código de infraestrutura em um repositório Git (juntamente com o código do aplicativo ou em um repositório separado). Use o GitHub ou o Azure DevOps para gerenciar ativos IaC com controle de versão adequado. O controle de versão permite revisões de código, dá suporte à colaboração em equipe e incentiva a reutilização de modelo entre projetos. Essa abordagem fornece rastreabilidade completa para alterações de infraestrutura e dá suporte a recursos de reversão quando ocorrem problemas.
Automatizar a instalação e configuração das dependências. Crie scripts ou tarefas de pipeline para implantar esses modelos e também lidar com as tarefas de configuração ou propagação necessárias. Use Azure Pipelines, GitHub Actions para executar tarefas de implantação que utilizam o modelo de IaC e o implantam em uma assinatura/grupo de recursos de destino. Automatize a instalação de dependências do aplicativo, a configuração de configurações e o gerenciamento de segredos. O objetivo é a configuração do ambiente com um clique (ou um comando): do zero a um ambiente totalmente em execução que corresponda ao que você testou.
Teste o IaC e a automação de ponta a ponta. Use uma assinatura ou grupo de recursos do Azure separado como um ambiente de testes e pratique a implantação de todo o ambiente do zero usando seus modelos e scripts. Teste se seus modelos, pipelines e scripts de IaC podem criar a pilha de infraestrutura completa a partir do nada. Teste diferentes cenários de implantação, incluindo implantação inicial, atualizações de configuração e procedimentos de reversão para confirmar se a automação funciona corretamente.
Para obter mais informações, consulte Projetar uma mudança no abastecimento de desenvolvimento de cargas de trabalho e Infraestrutura como código no WAF.
Criar documentação de implantação
Mesmo com a automação, ter uma boa documentação em torno de implantações é crucial para auditoria, para integrar novos membros da equipe e para manutenção futura. A documentação de implantação deve abranger configurações, procedimentos e etapas de reversão no formato legível por humanos.
Documentar configurações e etapas de configuração. Registre todas as configurações específicas do ambiente, cadeias de conexão, pontos de extremidade de serviço e configurações de segurança na documentação acessível. Inclua instruções de implantação passo a passo, requisitos de pré-requisito e etapas de validação pós-implantação. Esta documentação permite implantações consistentes e dá suporte à solução de problemas quando ocorrem problemas. Se um novo engenheiro tivesse que realizar a implantação, ele poderia ler este documento para acompanhar ou entender o resultado do pipeline.
Atualize os procedimentos de reversão e recuperação. Depois de concluir os testes, formalize as etapas para reverter as alterações quando ocorrerem problemas de implantação. Inclua gatilhos de reversão, procedimentos de backup e restauração de dados e etapas de validação de recuperação. Teste os procedimentos de reversão e recuperação regularmente para garantir que eles funcionem corretamente quando necessário. Essa preparação reduz o tempo de inatividade.
Colete toda essa documentação em um local central. Use o SharePoint, o GitHub ou um wiki para armazenar essas informações. Verifique se a equipe e a equipe de suporte sabem onde encontrá-la. Em um incidente de alto estresse, ter documentos claros em mãos é um salva-vidas.
Implantar modernização
A implantação de produção é o clímax do esforço de modernização. Dependendo da estratégia escolhida (local versus paralela), as etapas diferem. Antes de executar, verifique novamente se todas as etapas de preparação foram realizadas: stakeholders informados, congelamento em vigor, backups realizados, monitoramento em espera.
Implantar a modernização no local
Programe um período de manutenção. Se as alterações exigirem algum tempo de inatividade ou executar scripts que bloqueiem recursos, como uma migração de esquema de banco de dados, faça isso em uma janela de manutenção pré-anunciada. Verifique se todos os usuários estão fora da carga de trabalho nesse momento. Ter uma janela clara também lhe dá uma meta para terminar o implante ou para decidir sobre a reversão se o tempo acabar.
Use seu pipeline de CI/CD para implantar. Uma implantação de produção deve usar o mesmo pipeline automatizado que você usou para o teste, mas direcionado ao ambiente de produção. Essa configuração garante consistência, portanto, a infraestrutura e o código são implantados da mesma maneira. Antes de executá-lo, faça backups finais de quaisquer dados críticos (bancos de dados). Mesmo que você possa fazer a reversão, ter um backup é uma rede de segurança adicional para caso algo dê errado. Execute o pipeline para implantar o novo código e as alterações na infraestrutura. Tenha logs e monitoramento visíveis em tempo real. Se alguma etapa falhar, faça uma pausa e avalie se é possível avançar ou se é necessário retroceder.
Implemente o roteamento de tráfego progressivo (canário), se possível. Muitos serviços do Azure permitem trocas de slots ou mudanças graduais de tráfego, mesmo em um cenário no local. O Azure dá suporte a implantações canárias por meio de slots de implantação do Serviço de aplicativo do Azure, divisão de tráfego do Aplicativos de Contêiner do Azure e Serviço de Kubernetes do Azure com o Azure Pipelines. Se você tiver várias máquinas virtuais atrás de um balanceador de carga, atualize uma instância de cada vez (uma atualização contínua) para que as outras transportem o tráfego e, em seguida, faça a rotação.
Aumente gradualmente para o tráfego total durante o monitoramento. Depois que a nova versão estiver ativa, monitore-a de perto. Verifique os logs de aplicativos, as métricas de desempenho, as taxas de erro. Comece com uma pequena parte dos usuários (ou comece com a carga de trabalho em um modo de validação, se possível). Se tudo parecer bem depois de alguns minutos, aumente para, digamos, 25% do tráfego de usuários. Verifique as métricas novamente (sem pico em 500 erros, tempos de resposta normais). Aumente para 50%, depois 100% em qualquer período planejado. Pode ser mais de uma hora ou mais se você quiser ser cauteloso. Se algum problema sério for observado em qualquer etapa, inicie a reversão antes de afetar todos os usuários.
Manter a consistência de dados durante a implantação. As implantações no local preservam os pontos de extremidade de dados existentes e, ao mesmo tempo, modificam potencialmente os esquemas de dados. Aplique alterações no esquema do banco de dados de forma compatível com as versões anteriores para oferecer suporte a versões antigas e novas do aplicativo durante as versões canárias. Use scripts de migração de banco de dados que adicionam novas colunas ou tabelas sem remover estruturas existentes até que a implantação seja concluída com êxito.
Implantar a modernização em um ambiente paralelo
Crie o ambiente de produção paralelo. Usando os modelos de IaC, crie o novo ambiente de produção no Azure que espelha o que você testou. Esse ambiente inclui toda a computação, rede, armazenamento. Ele deve estar em funcionamento, mas atualmente sem tráfego de usuário. Verifique se coisas como grupos de segurança de rede, firewalls, identidade (identidades gerenciadas ou entidades de serviço) e monitoramento estão configurados conforme necessário (basicamente, repita a configuração do env de teste na assinatura prod).
Estabelecer a replicação de banco de dados. Configure o recurso de replicação nativa da plataforma de banco de dados para estabelecer a replicação contínua de dados entre sua carga de trabalho de origem e de destino do Azure. Verifique se a sincronização inicial de dados foi concluída com êxito e se a replicação está íntegra. Você pode fazer uma cópia inicial em massa do banco de dados a partir de um backup ou instantâneo e, em seguida, habilitar a replicação para novas transações. Monitore o atraso na replicação usando as ferramentas de monitoramento da plataforma de banco de dados. A latência mais alta aumenta o risco e a duração do corte. Não prossiga para a próxima etapa até que o atraso de replicação seja zero.
Copie arquivos e dados não estruturados. Copie dados e arquivos não estruturados para o Azure antes da substituição final. Use ferramentas para migração de objetos e arquivos com recursos para transferir arquivos para os serviços de armazenamento apropriados do Azure. Essa preparação reduz a quantidade de dados que precisam ser copiados durante o corte final.
Conclua a sincronização de dados final. No momento da substituição, você deseja que a perda de dados seja zero ou mínima. Para bancos de dados, verifique se não há transações pendentes nos workloads de origem e se a replicação do banco de dados está atualizado. Em alguns casos, talvez seja necessário pausar brevemente as gravações no banco de dados de origem para liberar as alterações finais (especialmente para coisas como consistência transacional). Você pode usar técnicas como envio de logs de transação ou um breve período de inatividade para realizar uma última restauração de backup incremental. Copie todos os dados não estruturados modificados usando o AzCopy ou uma ferramenta semelhante.
Reduza gradualmente o tráfego do usuário para o novo ambiente. Atualize os registros DNS e as configurações do balanceador de carga para direcionar o tráfego do usuário para o ambiente do Azure. Monitore a saúde e o desempenho da carga de trabalho. Comece com 1% de tráfego dinâmico direcionado para a carga de trabalho modernizada usando o roteamento ponderado com o balanceador de carga do Azure. Monitore métricas em tempo real, incluindo tempos de resposta, taxas de erro e integridade da conexão do banco de dados. Aumente o tráfego em incrementos rápidos (5%, 15%, 50%) em minutos em vez de horas, com gatilhos de reversão automatizados se os limites forem excedidos.
Realizar a mudança final para 100%. Quando estiver confiante, encaminhe todos os usuários para o novo ambiente. Essa mudança pode ser uma substituição de DNS, que pode levar de segundos a minutos se o valor do tempo de vida (TTL) for baixo, ou uma mudança na configuração do balanceador de carga. Neste momento, os usuários estão ativos no workload modernizado.
Verifique e monitore imediatamente após a transição de sistema. Execute suas verificações de validação pós substituição. Execute testes funcionais de ponta a ponta de todos os processos comerciais críticos usando conjuntos de testes automatizados. Valide a precisão dos dados usando a verificação de checksum e comparações de funções hash entre cargas de trabalho de origem e de destino. Solicitem que os proprietários da carga de trabalho confirmem que todas as funções principais operam corretamente. Monitore o desempenho da carga de trabalho, as taxas de erro e os padrões de acesso do usuário nas primeiras 24 a 48 horas após a substituição para identificar problemas de degradação ou funcionalidade de desempenho.
Mantenha o ambiente antigo em execução (espera frequente) por algum tempo. Não derrube nada ainda. É aconselhável manter o workload antigo como uma espera frequente por pelo menos 24 a 72 horas, com sincronização contínua de dados, se possível (ou pronto para sincronizar rapidamente). Se surgir um problema grave inesperado na produção, você ainda poderá decidir reverter direcionando o tráfego de volta. A perda de dados deve ser mínima, pois é possível recuperá-los por meio de logs ou outros meios.
Validar o sucesso da modernização
Agora que a nova carga de trabalho está ativa, você precisa validar na produção que tudo está funcionando conforme o esperado e atendendo aos critérios de aceitação.
Confirme o acesso bem-sucedido do usuário e o desempenho da carga de trabalho. A validação de acesso do usuário garante que a modernização seja transparente e que o desempenho atenda às expectativas. Essa confirmação valida que os usuários podem acessar a carga de trabalho sem interrupções. Monitore os padrões de acesso do usuário, as métricas de desempenho da carga de trabalho e as taxas de erro durante o período inicial pós-migração.
Anuncie o sucesso da migração somente após a validação completa. A validação completa garante que todos os stakeholders confirmem que a carga de trabalho está estável e funcional. Essa confirmação impede declarações prematuras de sucesso que podem levar a problemas posteriormente. Obtenha a confirmação de proprietários de carga de trabalho, testadores e stakeholders de negócios de que a carga de trabalho atende a todos os requisitos e opera corretamente.
Suporte à carga de trabalho durante a estabilização
Mesmo após um lançamento bem-sucedido, planeje um período de estabilização em que você dê atenção extra à carga de trabalho. Cargas de trabalho recém-modernizadas podem ter problemas desconhecidos que só aparecem nos padrões de uso do mundo real após algum tempo.
Estabeleça uma cobertura de suporte aprimorada durante o período de estabilização. Nos primeiros dias ou semanas (dependendo da complexidade) após a ativação, tenha um protocolo de suporte aprimorado. Atribua parceiros de migração ou equipe de TI experientes para monitorar a carga de trabalho de perto e fornecer SLAs mais curtas do que as operações normais.
Atualize sua documentação e ferramentas operacionais. Verifique se todos os runbooks, documentos de suporte e configurações de monitoramento são atualizados para refletir a nova realidade. Treine a equipe de operações em quaisquer novos procedimentos, como novos processos de backup, novos procedimentos de reinicialização para microsserviços. Entregue a carga de trabalho modernizada para as equipes de operações/suporte com transferência completa de conhecimento. Verifique se o inventário de ativos/CMDB registra os novos servidores, IPs, serviços e remove ou marca os herdados.