Realização de testes de recuperação de falhas

Last reviewed 2026-10-27 UTC

Este princípio no pilar de confiabilidade do Google Cloud Well-Architected Framework fornece recomendações para ajudar você a projetar e executar testes de recuperação em caso de falhas.

Esse princípio é relevante para a área de foco de aprendizado da confiabilidade.

Visão geral do princípio

Para garantir que o sistema possa se recuperar de falhas, é preciso executar testes periódicos que incluam failovers regionais, reversões de versões e restauração de dados de backups.

Esse teste ajuda você a praticar respostas a eventos que representam grandes riscos à confiabilidade, como a interrupção de uma região inteira. Esse teste também ajuda a verificar se o sistema se comporta como esperado durante uma interrupção.

No caso improvável de uma região inteira ficar inativa, você precisa fazer o failover de todo o tráfego para outra região. Durante a operação normal da carga de trabalho, quando os dados são modificados, eles precisam ser sincronizados da região primária para a região de failover. É preciso verificar se os dados replicados são sempre muito recentes para que os usuários não sofram perda de dados ou interrupção da sessão. O sistema de balanceamento de carga também precisa ser capaz de transferir o tráfego para a região de failover a qualquer momento, sem interrupções de serviço. Para minimizar o tempo de inatividade após uma interrupção regional, os engenheiros de operações também precisam ser capazes de desviar o tráfego de usuários de uma região de maneira manual e eficiente, no menor tempo possível. Essa operação às vezes é chamada de drenagem de uma região, o que significa que você interrompe o tráfego de entrada para a região e move todo o tráfego para outro lugar.

Recomendações

Ao projetar e executar testes para recuperação de falhas, considere as recomendações nas subseções a seguir.

Defina os objetivos e o escopo do teste

Defina claramente o que você quer alcançar com o teste. Por exemplo, seus objetivos podem incluir o seguinte:

  • Valide o objetivo do tempo de recuperação (RTO) e o objetivo do ponto de recuperação (RPO). Para mais detalhes, consulte Noções básicas de planejamento de DR.
  • Avalie a resiliência do sistema e a tolerância a falhas em vários cenários de falha.
  • Testar a eficácia dos mecanismos de failover automatizados.

Decida quais componentes, serviços ou regiões estão no escopo do teste. O escopo pode incluir níveis de aplicativo específicos, como front-end, back-end e banco de dados, ou recursos específicos do Google Cloud , como instâncias do Cloud SQL ou clusters do GKE. O escopo também precisa especificar as dependências externas, como APIs de terceiros ou interconexões de nuvem.

Preparar o ambiente para testes

Escolha um ambiente adequado, de preferência um de preparo ou sandbox que replique sua configuração de produção. Se você realizar o teste em produção, garanta que as medidas de segurança estejam prontas, como monitoramento automatizado e procedimentos de reversão manual.

Criar um plano de backup. Tire snapshots ou faça backups de bancos de dados e serviços críticos para evitar a perda de dados durante o teste. Verifique se a equipe está preparada para fazer intervenções manuais se os mecanismos de failover automatizados falharem.

Para evitar interrupções nos testes, verifique se os papéis, as políticas e as configurações de failover do Identity and Access Management (IAM) estão configurados corretamente. Verifique se as permissões necessárias estão em vigor para as ferramentas e os scripts de teste.

Informe as partes interessadas, incluindo operações, DevOps e proprietários de aplicativos, sobre o cronograma, o escopo e o possível impacto do teste. Forneça às partes interessadas um cronograma estimado e os comportamentos esperados durante o teste.

Simular cenários de falha

Planeje e execute falhas usando ferramentas como o Chaos Monkey. É possível usar scripts personalizados para simular falhas de serviços críticos, como o desligamento de um nó principal em um cluster do GKE multizonal ou uma instância do Cloud SQL desativada. Também é possível usar scripts para simular uma interrupção de rede em toda a região usando regras de firewall ou restrições de API com base no escopo do teste. Aumente gradualmente os cenários de falha para observar o comportamento do sistema em várias condições.

Introduza testes de carga com cenários de falha para replicar o uso no mundo real durante interrupções. Teste os impactos de falhas em cascata, como o comportamento dos sistemas de front-end quando os serviços de back-end estão indisponíveis.

Para validar as mudanças de configuração e avaliar a resiliência do sistema contra erros humanos, teste cenários que envolvam configurações incorretas. Por exemplo, execute testes com configurações incorretas de failover de DNS ou permissões incorretas do IAM.

Monitorar o comportamento do sistema

Monitore como os balanceadores de carga, as verificações de integridade e outros mecanismos redirecionam o tráfego. Use Google Cloud ferramentas como o Cloud Monitoring e o Cloud Logging para capturar métricas e eventos durante o teste.

Observe as mudanças na latência, nas taxas de erro e na capacidade de processamento durante e após a simulação de falha e monitore o impacto geral no desempenho. Identifique qualquer degradação ou inconsistência na experiência do usuário.

Verifique se os registros são gerados e se os alertas são acionados para eventos importantes, como interrupções de serviço ou failovers. Use esses dados para verificar a eficácia dos seus sistemas de alerta e resposta a incidentes.

Verificar a recuperação em relação ao RTO e ao RPO

Meça quanto tempo leva para o sistema retomar as operações normais após uma falha, compare esses dados com o RTO definido e documente as lacunas.

Garantir que a integridade de dados e a disponibilidade estejam alinhadas com o RPO. Para testar a consistência do banco de dados, compare snapshots ou backups do banco de dados antes e depois de uma falha.

Avalie a restauração do serviço e confirme se todos os serviços foram restaurados para um estado funcional com o mínimo de interrupção para o usuário.

Documentar e analisar resultados

Documente cada etapa do teste, cenário de falha e comportamento do sistema correspondente. Inclua carimbos de data/hora, registros e métricas para análises detalhadas.

Destaque gargalos, pontos únicos de falha ou comportamentos inesperados observados durante o teste. Para priorizar as correções, categorize os problemas por gravidade e impacto.

Sugira melhorias na arquitetura do sistema, nos mecanismos de failover ou nas configurações de monitoramento. Com base nas descobertas do teste, atualize as políticas de failover e os playbooks relevantes. Apresentar um relatório de post mortem às partes interessadas. O relatório deve resumir os resultados, as lições aprendidas e as próximas etapas. Para mais informações, consulte Realizar post-mortems completos.

Faça iterações e melhore

Para validar a confiabilidade e a resiliência contínuas, planeje testes periódicos (por exemplo, trimestrais).

Faça testes em diferentes cenários, incluindo mudanças na infraestrutura, atualizações de software e aumento de cargas de tráfego.

Automatize os testes de failover usando pipelines de CI/CD para integrar testes de confiabilidade ao ciclo de vida de desenvolvimento.

Durante a análise, use o feedback das partes interessadas e dos usuários finais para melhorar o processo de teste e a resiliência do sistema.