Partilhar via


Realize modernizações na nuvem

A execução é onde os planos se tornam realidade. Esta etapa envolve preparar todos para a mudança, fazendo o trabalho de desenvolvimento em ambientes não produtivos. Você testa minuciosamente e implanta na produção de forma controlada. A ênfase está em testes rigorosos e práticas de implantação seguras para minimizar a interrupção dos negócios, dado que as mudanças podem ser significativas.

Preparar as partes interessadas para a modernização

Antes de pressionar o botão de implantação, é fundamental preparar todas as partes interessadas e usuários para o que está por vir. Surpresas podem levar a confusões ou até mesmo problemas operacionais. As principais etapas de preparação incluem comunicação, congelamentos de alterações (mencionados anteriormente) e planos de suporte:

  1. Anuncie o cronograma de implantação para todas as partes interessadas. Com bastante antecedência, comunique a todas as partes afetadas quando a implantação da modernização deve acontecer e o que esperar. Inclua datas importantes, como o início do congelamento de alterações e a janela de go-live para ajudar as partes interessadas a se prepararem adequadamente. Ao definir expectativas, os usuários podem planejar o tempo de inatividade e as equipes internas podem estar prontas.

  2. Implemente um congelamento de alterações em cargas de trabalho de origem e dependentes. Tal como planeado anteriormente na governação, chegou o momento de aplicar efetivamente o congelamento. Certifique-se de que não ocorram alterações de código, ajustes de configuração ou outras implantações 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. Certifique-se de que todos os membros da equipa e quaisquer terceiros integrados estão cientes. Defina claramente a janela de congelamento com horários específicos de início e fim para evitar confusão.

  3. Comunique as ações do usuário final e as alterações pós-implantação. Os usuários precisam ser avisados com antecedência das ações necessárias antes e depois da implantação para evitar a interrupção do fluxo de trabalho. Instrua os utilizadores a terminar sessão ou guardar o trabalho antes do início do corte. Partilhe novos URLs de acesso, alterações de autenticação, como requisitos de início de sessão do Microsoft Entra ID, e fluxos de trabalho atualizados que afetam as operações diárias. Forneça documentação de suporte e guias de início rápido para reduzir a confusão no primeiro dia.

  4. Coordenar a equipe de suporte para implantação. As equipes de operações e desenvolvimento de TI devem estar disponíveis para monitorar e responder a problemas durante as fases críticas de implantação. Agende horas de suporte estendidas e outros funcionários para o primeiro dia útil após a implantação, quando os problemas forem mais prováveis de surgir. Informe as unidades de negócios sobre o plano de suporte pós-implantação e os procedimentos de escalonamento para garantir a rápida resolução de problemas.

  5. Defina procedimentos de fallback para cargas de trabalho críticas. Cargas de trabalho de missão crítica exigem soluções alternativas manuais e planos de contingência para manter as operações de negócios durante as janelas de implantação. Documente procedimentos específicos, como processamento manual de pedidos durante períodos de carga de trabalho em modo só de leitura. Compartilhe esses procedimentos com antecedência e confirme a prontidão com as equipes afetadas para garantir uma execução perfeita quando necessário.

Desenvolver modernizações em um ambiente de não produção

Todo o desenvolvimento e integração das mudanças de modernização deve acontecer fora da produção (em ambientes de desenvolvimento, teste, preparação). O princípio orientador: construa e teste em ambientes semelhantes ao de produção primeiro, de modo que, quando se desdobrar para produção, já seja uma quantidade conhecida.

  1. Siga os princípios do Well-Architected Framework durante a implementação. À medida que você codifica e configura as novas alterações, aplique continuamente as práticas recomendadas do WAF (Well-Architected Framework) do Azure. Use as recomendações do Consultor do Azure e os processos de revisão de arquitetura para validar decisões de design. Essa abordagem garante que os componentes modernizados atendam às práticas recomendadas e aos padrões operacionais do Azure.

  2. Crie ambientes de não produção que espelhem a produção. Gire ambientes de desenvolvimento/teste no Azure que estejam o mais próximo possível da configuração de produção. Se a produção usar determinados serviços do Azure, use o mesmo em teste, escala menor ou camada de desempenho inferior (SKU) para economizar custos. Quanto mais próximo o ambiente de teste estiver da produção, mais confiante você pode estar de que os resultados do teste devem ser transferidos para o comportamento de produção.

  3. 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 pequenos blocos (talvez por funcionalidade ou correção) e use ramificações de funcionalidades. Mesclar alterações com freqüência após a revisão do código. Configure compilações de integração contínua para executar seus pacotes de teste em cada confirmação, para que você detete problemas com antecedência.

Valide as alterações de modernização com testes

Os testes são fundamentais. Como a modernização não adiciona novos recursos, o foco está nos testes de regressão (nada quebrado) e nos testes de desempenho/segurança (funciona melhor do que antes, não pior). Você deseja verificar todos os aspetos da carga de trabalho no ambiente de teste antes de tocar na produção.

  1. 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 que foi refatorado. Mesmo que seja código legado, escrever testes de unidade para funções críticas pode ajudar a detetar se o refactoring mudou o comportamento de forma não intencional. 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 os testes relevantes para garantir que o bug seja realmente resolvido e nada mais seja quebrado (evite regressões).

  2. Realize testes funcionais de ponta a ponta. Em um ambiente de preparação ou teste, execute testes completos de fluxo de trabalho como se fosse um usuário final. Esses testes podem ser testes manuais por controle de qualidade ou testes automatizados de interface do usuário. Entre no aplicativo, execute tarefas importantes. Certifique-se de que a funcionalidade que está inalterada permaneça como tal. Basicamente, simule o uso real para identificar eventuais falhas que os testes de unidade possam não detectar.

  3. Realize testes de aceitação do usuário (UAT) com as partes interessadas. É aconselhável envolver alguns usuários finais reais ou partes interessadas do negócio no teste da carga de trabalho modernizada antes da entrada em operação. Eles podem pegar nuances que os desenvolvedores ignoram. Capture feedback sobre lacunas de usabilidade, desempenho e funcionalidade. Resolva problemas críticos de teste de aceitação do usuário (UAT) antes da implantação e obtenha aprovação formal das partes interessadas para confirmar a prontidão dos negócios.

  4. Valide o desempenho usando testes de carga em condições realistas. Idealmente, a modernização deve melhorar ou manter o desempenho. 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 esforço a 150% da carga esperada para determinar os limites da carga de trabalho e validar a resiliência sob pressão.

  5. Execute verificações de segurança, validação e conformidade. Execute verificações de vulnerabilidade em novas imagens de código e contêiner para detetar 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 for Cloud para verificar se há configurações incorretas de infraestrutura e validar que os controles de segurança atendem aos requisitos.

  6. Resolva todos os problemas críticos antes da implantação da produção. Corrija problemas funcionais, de desempenho e de segurança identificados durante as fases de teste. Confirme se todos os testes foram aprovados e se o desempenho atende aos SLAs (Service Level Agreements, contratos de nível de serviço). Documente quaisquer problemas remanescentes de baixa prioridade e crie planos de correção para resolução pós-implantação.

Criar infraestrutura reutilizável

Depois que sua solução modernizada passar em todos os testes no ambiente de não produção, você deverá capturar a configuração e as configurações da infraestrutura como código, para que possa ser facilmente replicada em ambientes de produção e futuros. Infraestrutura reutilizável significa usar modelos de infraestrutura como código (IaC) e automação para consistência e velocidade.

  1. Crie modelos IaC para configurações comprovadas. Pegue a arquitetura final do seu ambiente de teste (que espelha o que você deseja no prod) e codifice-a. Use modelos de Bicep, Terraform ou Azure Resource Manager para definir sua infraestrutura. Parametrize estes modelos para que possam ser reutilizados em diferentes fases, como desenvolvimento, teste, produção, 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 desastres ou implantação em novas regiões, terá a implantação da infraestrutura pronta. Para obter mais informações, consulte CAF Manage - Gerir implementações baseadas em código.

  2. Armazene modelos no controle de versão. Verifique seu código de infraestrutura em um repositório Git (junto 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, oferece suporte à colaboração em equipe e incentiva a reutilização de modelos em projetos. Essa abordagem fornece rastreabilidade completa para alterações na infraestrutura e oferece suporte a recursos de reversão quando ocorrem problemas.

  3. Automatize a instalação e a configuração de dependências. Crie scripts ou tarefas de pipeline para implantar esses modelos e também lidar com quaisquer tarefas de configuração ou propagação necessárias. Use o Azure Pipelines e o GitHub Actions para executar trabalhos de implantação que usam o modelo IaC e o implantam em uma assinatura/grupo de recursos de destino. Automatize a instalação de dependências de aplicativos, a definição de configurações e o gerenciamento de segredos. O objetivo é a configuração do ambiente com um clique (ou um comando): do nada para um ambiente totalmente em execução que corresponda ao que você testou.

  4. 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 teste e pratique a implementação de todo o seu ambiente do zero usando os seus modelos e scripts. Teste se os seus templates, pipelines e scripts IaC podem criar a pilha de infraestrutura completa a partir de zero. 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 alteração de fornecimento de desenvolvimento de carga 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 das implantações é crucial para a auditoria, para a integração de novos membros da equipe e para a manutenção futura. A documentação de implantação deve abranger configurações, procedimentos e etapas de reversão em formato legível por humanos.

  1. Documente as definiçõ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é-requisitos e etapas de validação pós-implantação. Esta documentação permite implantações consistentes e oferece suporte à solução de problemas quando ocorrem problemas. Se um novo engenheiro tivesse que implantar, ele poderia ler este documento e acompanhar ou entender a saída do pipeline.

  2. Atualizar 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 funcionem corretamente quando necessário. Esta preparação reduz o tempo de inatividade.

  3. Reúna toda esta documentação num local central. Use o SharePoint, o GitHub ou um wiki para armazenar essas informações. Certifique-se de que a equipe e o pessoal de suporte saibam onde encontrá-lo. Em um incidente de alto estresse, ter documentos claros à mão é um salva-vidas.

Implantar modernização

A implantação da produção é o clímax do esforço de modernização. Dependendo da estratégia escolhida (no local vs paralelo), as etapas diferem. Antes de executar, verifique se todas as etapas de preparação estão feitas: partes interessadas informadas, congelamento em vigor, backups feitos, monitoramento em espera.

Implantar a modernização no local

  1. Agende uma janela de manutenção. Se as alterações exigirem algum tempo de inatividade ou scripts em execução que bloqueiem recursos, como uma migração de esquema de banco de dados, faça-o em uma janela de manutenção pré-anunciada. Verifique se todos os usuários estão fora da carga de trabalho naquele momento. Ter uma janela de tempo clara também lhe dá um objetivo para concluir a implantação ou decidir fazer uma reversão se o tempo se esgotar.

  2. Utilize o seu pipeline de CI/CD para a implantação. Uma implantação de produção deve usar o mesmo pipeline automatizado que utilizou para teste, mas direcionado para o ambiente de produção. Essa configuração garante consistência, para que a infraestrutura e o código sejam implantados da mesma maneira. Antes de executá-lo, faça backups finais de todos os dados críticos (bancos de dados). Mesmo que seja possível reverter, ter uma cópia de segurança é uma camada extra de segurança no caso de algo correr mal. Execute o processo 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, pause e avalie se for possível seguir em frente ou se precisa reverter.

  3. Implemente o roteamento progressivo de tráfego (canário), se possível. Muitos serviços do Azure permitem a troca de slots ou deslocamento gradual de tráfego, mesmo numa situação 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 de Aplicativos de Contêiner do Azure e Serviço Kubernetes do Azure com Pipelines do Azure. Se tiver várias máquinas virtuais a ser geridas por um balanceador de carga, atualize uma instância de cada vez (uma atualização gradual) para que as outras instâncias carreguem tráfego, e depois alterne.

  4. Aumente gradualmente para o tráfego total durante o monitoramento. Assim que a nova versão estiver ativa, monitore-a de perto. Verifique os logs de aplicativos, métricas de desempenho, 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 estiver bem depois de alguns minutos, aumente para cerca de 25% do tráfego. Verifique as métricas novamente (sem pico de 500 erros, tempos de resposta normais). Aumente para 50%e, em seguida, 100% em qualquer período de tempo que você planejou. 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 que ela afete todos os usuários.

  5. Mantenha a consistência dos dados durante a implantação. As implantações no local preservam os pontos de extremidade de dados existentes, ao mesmo tempo que potencialmente modificam os esquemas de dados. Aplique alterações ao esquema de banco de dados de forma a garantir compatibilidade com versões anteriores, de modo a suportar aplicações antigas e novas durante lançamentos de canário. 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

  1. Crie o ambiente de produção paralela. Usando os modelos IaC, crie o novo ambiente de produção no Azure que espelha o que você testou. Este ambiente inclui toda a computação, rede, armazenamento. Ele deve estar instalado e funcionando, mas atualmente sem tráfego de usuários. Certifique-se de que coisas como grupos de segurança de rede, firewalls, identidade (identidades gerenciadas ou entidades de serviço) e monitoramento estejam configurados conforme necessário (basicamente repita a configuração env de teste na assinatura prod).

  2. Estabeleça a replicação do banco de dados. Configure o recurso de replicação nativo 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 de dados inicial foi concluída com êxito e se a replicação está íntegra. Você pode fazer uma cópia massiva inicial do banco de dados a partir do backup ou snapshot e então 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. Uma latência mais elevada aumenta o risco e a duração da transição. Não prossiga para a próxima etapa até que o atraso de replicação seja zero.

  3. Copie dados e arquivos não estruturados. Copie dados e arquivos não estruturados para o Azure antes da transferência final. Use Ferramentas para migração de objetos e arquivos com recursos para transferir arquivos para os serviços de armazenamento do Azure apropriados. Essa preparação reduz a quantidade de dados que precisam ser copiados durante a transferência final.

  4. Sincronize os dados finais. No momento da transição, deseja garantir perda de dados zero ou mínima. Para bases de dados, verifique se não há transações pendentes nas cargas de trabalho de origem e se a replicação da base de dados está atualizada. 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 log de transações ou um curto tempo de inatividade para fazer uma última restauração incremental de backup. Copie quaisquer dados não estruturados modificados usando AzCopy ou ferramenta semelhante.

  5. Reduza gradualmente o tráfego de usuários 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 ao vivo direcionado para a carga de trabalho modernizada usando o roteamento ponderado com seu 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.

  6. Efetue a mudança final para 100%. Quando estiver confiante, encaminhe todos os usuários para o novo ambiente. Essa opção pode ser uma substituição de DNS, que pode levar de segundos a minutos se o valor de tempo de vida (TTL) for baixo, ou inverter uma configuração de balanceador de carga. Neste ponto, os usuários estão ativos na carga de trabalho modernizada.

  7. Verifique e monitore imediatamente após o corte. Realize suas verificações de validação após a transição. Execute testes funcionais completos de todos os processos de negócios críticos usando pacotes de testes automatizados. Valide a precisão dos dados utilizando a verificação de checksum e comparações de funções hash entre cargas de trabalho de origem e de destino. Peça aos proprietários da carga de trabalho que confirmem que todas as funções principais funcionam 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 qualquer degradação de desempenho ou problemas de funcionalidade.

  8. Mantenha o ambiente antigo funcionando (hot standby) por um tempo. Não derrube nada ainda. É aconselhável manter a carga de trabalho antiga em espera ativa por pelo menos 24 a 72 horas, com sincronização de dados contínua, se possível, ou pronta para sincronizar rapidamente. Se surgir um problema grave inesperado na produção, você ainda pode decidir reverter direcionando o tráfego de volta. Você deve perder uma quantidade mínima de dados, uma vez que pode compensar através de logs ou outros métodos.

Valide o sucesso da modernização

Agora que a nova carga de trabalho está ativa, você precisa validar na produção que tudo está funcionando como pretendido e atendendo aos critérios de aceitação.

  1. Confirme o acesso bem-sucedido do usuário e o desempenho da carga de trabalho. A validação do 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ção. Monitore padrões de acesso do usuário, métricas de desempenho da carga de trabalho e taxas de erro durante o período inicial pós-migração.

  2. Anuncie o sucesso da migração somente após uma validação completa. A validação completa garante que todas as partes interessadas confirmem que a carga de trabalho é estável e funcional. Esta confirmação evita declarações prematuras de sucesso que poderiam levar a problemas mais tarde. Obtenha a confirmação dos proprietários da carga de trabalho, testadores e partes interessadas da empresa de que a carga de trabalho atende a todos os requisitos e funciona corretamente.

Carga de trabalho de suporte 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 sob padrões de uso do mundo real depois de algum tempo.

  1. Estabelecer uma cobertura de suporte reforçada durante o período de estabilização. Nos primeiros dias ou semanas (dependendo da complexidade) após o go-live, tenha um protocolo de suporte reforçado. Atribua pessoal de TI experiente ou parceiros de migração para monitorizar a carga de trabalho de perto e fornecer SLAs mais curtos do que as operações padrão.

  2. Atualize sua documentação operacional e ferramentas. Certifique-se de que todos os runbooks, documentos de suporte e configurações de monitoramento sejam 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ção/suporte com transferência total de conhecimento. Certifique-se de que seu inventário de ativos/CMDB registre os novos servidores, IPs, serviços e remova ou marque os legados.

Próximo passo