Partilhar via


Recomendações para estruturar uma estratégia de testes de fiabilidade

Aplica-se a esta recomendação da lista de verificação de Fiabilidade do Power Platform Well-Architected:

RE:06 Teste cenários de resiliência e disponibilidade aplicando os princípios da engenharia de caos nos seus ambientes de teste e produção. Utilize o teste para garantir que as suas estratégias de implementação de degradação graciosa sejam eficazes, executando um mau funcionamento ativo e testes de carga simulados.

Este guia descreve as recomendações para a conceção de uma estratégia de teste de fiabilidade para validar e otimizar a fiabilidade da sua carga de trabalho. Os testes de fiabilidade estão focados na resiliência e disponibilidade da sua carga de trabalho, especificamente nos fluxos críticos que identifica quando concebe a sua solução. Este guia fornece orientações gerais sobre testes e orientações específicas sobre injeção de falhas e engenharia do caos.

Definições

Termo Definição
Disponibilidade A quantidade de tempo que uma carga de trabalho de uma aplicação é executada num estado saudável sem tempo de inatividade significativo.
Engenharia do caos A prática de submeter aplicações e serviços a tensões e falhas reais. O objetivo da engenharia do caos é criar e validar a resistência a condições não fiáveis e a dependências inexistentes.
Injeção de falhas O ato de introduzir um erro num sistema para testar a resiliência do sistema.
Capacidade de recuperação Um sinónimo de resiliência.
Resiliência A capacidade da carga de trabalho de uma aplicação para suportar e recuperar de modos de falha.

Principais estratégias de design

Os testes são essenciais para garantir que a sua carga de trabalho cumpre os objetivos de fiabilidade e consegue lidar com as falhas de forma graciosa. A injeção de falhas é um tipo de teste que introduz deliberadamente falhas ou stress no seu sistema para simular cenários do mundo real. Ao utilizar técnicas de injeção de falhas e de engenharia do caos, pode descobrir e corrigir proativamente os problemas antes que estes afetem o seu ambiente de produção. Esta secção fornece orientações gerais sobre testes, injeção de falhas e engenharia do caos para a sua carga de trabalho.

Orientações gerais de testes

Execute testes de rotina para validar os limites, objetivos e pressupostos existentes. Quando ocorrer uma alteração importante no seu volume de trabalho, faça testes regulares. Faça a maior parte dos testes em ambientes de teste e de preparação. Também é benéfico executar um subconjunto de testes no sistema de produção.

Automatize os testes para ajudar a garantir uma cobertura de testes consistente e capacidade de reprodução. Automatize as tarefas de teste comuns e integre-as nos seus processos de compilação. Testar manualmente o software é entediante e suscetível de erro, mas é possível efetuar testes exploratórios manuais. Nos casos em que é necessário desenvolver testes automatizados, utilize os testes manuais para determinar o âmbito dos testes a desenvolver.

Adote uma abordagem de teste de deslocação para a esquerda para realizar testes de resiliência e disponibilidade no início do ciclo de desenvolvimento.

Adapte um formato de documentação simples para que seja fácil para todos compreenderem o processo e os resultados de cada teste regular.

Partilhe os resultados documentados com as equipas adequadas, como as equipas operacionais, a liderança tecnológica, intervenientes do negócio e os intervenientes na recuperação após desastre. Os resultados devem servir de base ao aperfeiçoamento dos objetivos de fiabilidade, como os objetivos de nível de serviço (SLO), os acordos de nível de serviço (SLA), os objetivos de tempo de recuperação (RTO) e os objetivos de ponto de recuperação (RPO).

Crie uma cadência de testes regulares para as suas cópias de segurança. Restaure os dados em sistemas isolados para ajudar a garantir que as cópias de segurança são válidas e que as restaurações são funcionais.

Documente e partilhe as métricas do tempo de recuperação com os intervenientes na recuperação após desastre para garantir que as expectativas de recuperação são adequadas.

Utilize procedimentos de teste de implementação padrão do setor para ajudar a garantir que tem um processo de implementação automatizado, previsível e eficiente.

Teste a capacidade da sua carga de trabalho para suportar falhas transitórias. Para obter mais informações, consulte Recomendações para o tratamento de falhas transitórias.

Teste como sua carga de trabalho lida com falhas em serviços dependentes ou outras dependências usando a injeção de falhas.

Teste o seu plano de recuperação após desastre para responder a falhas catastróficas e outros incidentes graves.

Teste a capacidade de degradação da carga de trabalho e minimize o raio de explosão do mau funcionamento dos componentes utilizando a injeção de falhas.

Tirar partido das interrupções de serviço planeadas e não planeadas

Quando a sua carga de trabalho está offline devido a manutenção planeada ou a uma interrupção não planeada, tem uma oportunidade única de efetuar testes e melhorar a sua compreensão da sua carga de trabalho. As secções seguintes apresentam recomendações para cada cenário.

Manutenção planeada

Quando tem janelas de manutenção planeadas para atualizações ou patches, é possível testar componentes e fluxos que não estão envolvidos no trabalho de manutenção. Faça testes sem o risco potencial de degradar inesperadamente a carga de trabalho ou de a colocar completamente offline. Se tiver tempo suficiente durante a janela de manutenção, também é possível testar os componentes e fluxos envolvidos na manutenção após a conclusão do trabalho de manutenção.

Falha não planeada

Utilize cada incidente de indisponibilidade como uma oportunidade para saber mais sobre a sua carga de trabalho e melhorar a sua resiliência, seguindo estes passos, ordenados por prioridade:

  1. Volte a colocar a carga de trabalho online para os seus utilizadores. Poderá ser necessário executar uma solução alternativa para o problema, resolver o problema ou iniciar os processos de recuperação.

  2. Determine a causa principal da falha e resolva-a. Se conseguir corrigir a causa principal como parte da investigação, documente a causa principal e as medidas que tomou para a corrigir. Se o problema exigir outra janela de manutenção mais tarde, certifique-se de que as suas medidas de atenuação conseguem lidar com a carga esperada, testando-as exaustivamente. Certifique-se de que estabeleceu um controlo suficiente para cobrir as suas medidas de mitigação.

  3. Se for aplicável, procure o mesmo problema ou pontos fracos de configuração que possam ser afetados por problemas semelhantes em todos os componentes da sua carga de trabalho. Aproveite esta oportunidade para abordar proativamente esses componentes. Consulte o seu histórico de incidentes para detetar padrões de problemas semelhantes na sua carga de trabalho.

  4. Utilize as suas conclusões para melhorar a sua estratégia de teste. Certifique-se de que resolveu com êxito a causa principal e problemas semelhantes, testando diretamente a mesma falha.

Injeção de falhas e orientação para a engenharia do caos

Os testes de injeção de falhas seguem os princípios da engenharia do caos, realçando a capacidade da carga de trabalho para reagir a falhas de componentes. Faça testes de injeção de falhas em ambientes de pré-produção e produção. Aplique as informações que aprendeu ao efetuar a análise do modo de falha para garantir que testa apenas as falhas a que dá prioridade e que tem estratégias de mitigação para as resolver.

As principais diretrizes da engenharia do caos são:

  • Ser proativo. Não espere que as falhas aconteçam. Tente antecipar as falhas realizando experiências de caos para descobrir e corrigir problemas antes que estes afetem o seu ambiente de produção.

  • Aceite as falhas. Aceite e aprenda com as falhas que ocorrem no seu sistema. Encare as falhas como uma parte natural dos sistemas complexos e utilize-as como oportunidades para aprender e melhorar a fiabilidade do seu sistema.

  • Quebre o sistema. Injete deliberadamente falhas ou stress no seu sistema para testar a sua resiliência. Simule falhas ou interrupções do mundo real para testar e melhorar as capacidades de recuperação da sua carga de trabalho.

  • Desenvolva imunidade. Utilize experiências de engenharia do caos para melhorar a capacidade da sua carga de trabalho para evitar e recuperar de falhas.

A engenharia do caos é uma parte integrante da cultura da equipa de carga de trabalho e uma prática contínua, não um esforço tático de curto prazo em resposta a uma única falha. Siga este método padrão quando conceber as suas experiências de caos:

  1. Comece com uma hipótese. Cada experiência deve ter um objetivo claro, como testar a capacidade de um fluxo para suportar a perda de um determinado componente.

  2. Meça o comportamento de base. Assegure-se de que tem métricas consistentes de fiabilidade e desempenho para o fluxo e os componentes envolvidos numa experiência para comparar com o estado degradado ao executar a sua experiência.

  3. Injete uma ou mais falhas. A experiência deve visar intencionalmente componentes específicos que possam ser recuperados rapidamente, e deve ter uma expetativa informada do efeito que a injeção de falha irá causar para ajudar a controlar o raio de explosão da experiência.

  4. Monitorize o comportamento resultante. Reúna a telemetria sobre os componentes individuais do fluxo e o comportamento do fluxo de ponto a ponto que a experiência visa para compreender corretamente os efeitos da falha. Compare as métricas recolhidas com as métricas da linha de base para obter uma imagem completa dos resultados da injeção de falhas.

  5. Documente o processo e as observações. A manutenção de registos detalhados das suas experiências servirá de base a decisões futuras sobre a conceção do volume de trabalho, assegurando que são colmatadas as lacunas reveladas ao longo do tempo.

  6. Identifique e atue tendo em conta o resultado. Planeie os passos de correção que podem ser adicionados ao seu registo de tarefas pendentes da carga de trabalho como melhorias. Assegure que os planos de melhoria da conceção são revistos e testados em ambientes não produtivos de acordo com os mesmos processos que as outras implementações.

Valide periodicamente o seu processo, as escolhas de arquitetura e o código para detetar rapidamente dívidas técnicas, integrar novas tecnologias e adaptar-se a requisitos em mudança.

Quando realiza experiências de injeção de falhas, é necessário:

  • Confirme a existência de monitorização e a definição de alertas.

  • Valide o seu processo de atribuição de uma pessoa diretamente responsável (DRI) para assumir a propriedade de um incidente.

  • Assegure-se de que a sua documentação e processos de investigação estão atualizados.

Integre as seguintes recomendações e considerações para otimizar a sua estratégia de teste do caos:

  • Desafie os pressupostos do sistema. Com os testes, tenta-se melhorar a resiliência da carga de trabalho e as estratégias de conceção da carga de trabalho. Procure oportunidades para injetar falhas em componentes e fluxos que se supõe serem fiáveis com base em experiências anteriores. Podem não ser fiáveis na sua nova carga de trabalho.

  • Valide a alteração. Sem testes exaustivos, incluindo testes de injeção de falhas, poderá ter uma imagem incompleta do seu volume de trabalho após as alterações efetuadas. Por exemplo, pode introduzir novas dependências que não são imediatamente visíveis.

  • Utilize memórias intermédias de SLA. Limite os testes de caos para se manter dentro dos seus SLAs e evitar potenciais efeitos adversos de interrupções. Os objetivos de recuperação do fluxo e dos componentes ajudam a definir o âmbito dos testes.

  • Estabeleça um orçamento com erros como um investimento no caos e na injeção de falhas. O seu orçamento de erros é a diferença entre atingir 100% do SLO e atingir o SLO acordado.

  • Pare a experiência se esta ultrapassar o seu âmbito. Os resultados desconhecidos são um resultado esperado das experiências do caos. Esforce-se por alcançar um equilíbrio entre a recolha de dados substanciais sobre os resultados e o facto de afetar o menor número possível de utilizadores de produção.

  • Trabalhe em estreita colaboração com as equipas de desenvolvimento para garantir a relevância das falhas injetadas. Utilize incidentes ou problemas passados como guia. Examine as dependências e avalie os resultados quando essas dependências são removidas.

  • Identifique e documente as dependências anteriormente não descobertas entre diferentes componentes da carga de trabalho que são reveladas através de testes de caos.

  • Ajuste os planos de recuperação, se necessário, para ter em conta as dependências que são descobertas durante os testes de caos.

  • Utilize os resultados das suas experiências e testes como base para novas experiências e testes. À medida que surgem comportamentos inesperados, os novos testes podem visar diretamente esses comportamentos e dar a oportunidade de conceber estratégias de correção para os mesmos.

Compromisso: os testes em produção de injeção de falhas pode ser perturbador e causar potencialmente tempo de inatividade. Seja transparente com as partes interessadas sobre esta possibilidade e assegure-se de que tem salvaguardas para terminar as experiências e planos de reversão para inverter rapidamente as falhas que introduzir.

Facilitação do Power Platform

Pode utilizar resultados estáticos no Power Automate para devolver um resultado fixo para testar a sua carga de trabalho.

Power Apps Test Engine (pré-visualização) é um componente de CLI do Power Platform que pode utilizar para testar as aplicações de tela autónomas no Power Apps.

Azure Test Plans é uma solução de gestão de testes fácil de utilizar e baseada no browser que fornece todas as capacidades necessárias para testes manuais planeados, testes de aceitação do utilizador, testes exploratórios e recolha de comentários das partes interessadas.

Se a sua carga de trabalho incluir recursos do Azure, pode utilizar o Azure Chaos Studio, um serviço gerido que utiliza a engenharia do caos para o ajudar a medir, compreender e melhorar a resiliência das suas aplicações e serviços na cloud.

Lista de verificação de fiabilidade

Consulte o conjunto completo de recomendações.