Recomendações para projetar uma estratégia de teste de confiabilidade
Aplica-se a esta recomendação da lista de verificação de confiabilidade bem arquitetada: Power Platform
RE:06 | Teste cenários de resiliência e disponibilidade aplicando os princípios da engenharia do caos nos ambientes de teste e produção. Use o teste para garantir se as estratégias de implementação da degradação tranquila sejam eficazes realizando teste de carga de mau funcionamento e simulado. |
---|
Este guia descreve as recomendações para projetar uma estratégia de teste de confiabilidade para validar e otimizar a confiabilidade de sua carga de trabalho. O teste de confiabilidade se concentra na resiliência e disponibilidade de sua carga de trabalho, especificamente nos fluxos críticos que você identifica ao projetar sua solução. Este guia fornece orientações gerais de teste e orientações específicas para injeção de falhas e engenharia de caos.
Definições
Termo | Definição |
---|---|
Disponibilidade | A quantidade de tempo que uma carga de trabalho de aplicativo é executada em um estado íntegro sem tempo de inatividade significativo. |
Engenharia do caos | A prática de submeter aplicativos e serviços a estresses e falhas do mundo real. O objetivo da engenharia do caos é criar e validar a resiliência a condições não confiáveis e dependências ausentes. |
Injeção de falhas | O ato de introduzir um erro em um sistema para testar a resiliência do sistema. |
Capacidade de recuperação | Um sinônimo de resiliência. |
Resiliência | A capacidade de uma carga de trabalho de aplicativo de resistir e se recuperar de modos de falha. |
Estratégias-chave de design
Os testes são essenciais para garantir que sua carga de trabalho atenda às metas de confiabilidade e possa lidar com falhas normalmente. A injeção de falhas é um tipo de teste que introduz deliberadamente falhas ou estresse em seu sistema para simular cenários do mundo real. Usando técnicas de injeção de falhas e engenharia de caos, você pode descobrir e corrigir proativamente problemas antes que eles afetem seu ambiente de produção. Esta seção fornece orientação geral sobre teste, injeção de falhas e engenharia de caos para sua carga de trabalho.
Orientações gerais de teste
Realize testes rotineiramente para validar limites, metas e suposições existentes. Quando ocorrer uma alteração importante na carga de trabalho, execute testes regulares. Execute a maioria dos testes em ambientes de teste e preparo. Também é benéfico executar um subconjunto de testes no sistema de produção.
Automatize os testes para ajudar a garantir uma cobertura e reprodutibilidade de teste consistentes. Automatize tarefas comuns de teste e integre-as em seus processos de criação. Testar manualmente o software é tedioso e suscetível a erros, mas você pode realizar testes exploratórios manuais. Para os casos em que você precisa desenvolver testes automatizados, use o teste manual para determinar o escopo dos testes a serem desenvolvidos.
Adote uma abordagem de teste shift-left 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 entenderem o processo e os resultados de cada teste regular.
Compartilhe os resultados documentados com as equipes apropriadas, como equipes operacionais, liderança em tecnologia, stakeholders de negócios e partes interessadas em recuperação de desastres. Os resultados devem informar o refinamento de metas de confiabilidade, como SLOs (Objetivos de Nível de Serviço), SLAS (Contratos de Nível de Serviço), RTOs (Objetivos de Tempo de Recuperação) e RPOs (Objetivos de Ponto de Recuperação).
Crie uma cadência de teste regular para seus backups. Restaure os dados em sistemas isolados para ajudar a garantir que os backups sejam válidos e que as restaurações funcionem.
Documente e compartilhe métricas de tempo de recuperação com as partes interessadas em recuperação de desastres para garantir que as expectativas de recuperação sejam apropriadas.
Use procedimentos de teste de implantação padrão do setor para ajudar a garantir que você tenha um processo de implantação automatizado, previsível e eficiente.
Teste a capacidade da sua carga de trabalho de resistir a falhas transitórias. Para obter mais informações, consulte Recomendações para resolver 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 seu plano de recuperação de desastres para responder a falhas catastróficas e outros incidentes importantes.
Teste a capacidade da sua carga de trabalho de degradar normalmente e minimizar o raio de explosão do mau funcionamento do componente usando a injeção de falhas.
Aproveite paralisações planejadas e não planejadas
Quando sua carga de trabalho está offline devido a manutenção planejada ou a uma interrupção não planejada, você tem uma oportunidade única de realizar testes e melhorar sua compreensão da carga de trabalho. As seções a seguir fazem recomendações para cada cenário.
Manutenção planejada
Quando você planeja janelas de manutenção para atualizações ou patches, pode testar componentes e fluxos que não estão envolvidos no trabalho de manutenção. Execute testes sem o risco potencial de degradar inesperadamente a carga de trabalho ou colocá-la totalmente offline. Se você tiver tempo suficiente durante a janela de manutenção, também poderá testar os componentes e fluxos envolvidos na manutenção após a conclusão do trabalho de manutenção.
Interrupção não planejada
Use cada incidente de interrupção como uma oportunidade para aprender mais sobre sua carga de trabalho e melhorar sua resiliência seguindo estas etapas, ordenadas por prioridade:
Coloque a carga de trabalho online novamente para seus usuários. Talvez seja necessário executar uma solução alternativa para o problema, resolvê-lo ou iniciar os processos de recuperação.
Determine a causa raiz da interrupção e resolva-a. Se você puder corrigir a causa raiz como parte da investigação, documente a causa raiz e as medidas que você tomou para corrigi-la. Se o problema exigir outra janela manutenção posteriormente, certifique-se de que suas medidas de mitigação podem lidar com a carga esperada testando-as minuciosamente. Verifique se você configurou monitoramento suficiente para cobrir suas medidas de mitigação.
Se aplicável, procure o mesmo problema ou pontos fracos de configuração que podem ser afetados por problemas semelhantes em todos os componentes da sua carga de trabalho. Use esta oportunidade para abordar esses componentes de forma proativa. Consulte seu histórico de incidentes para detectar padrões de problemas semelhantes em sua carga de trabalho.
Use suas descobertas para melhorar sua estratégia de teste. Certifique-se de ter resolvido com êxito a causa raiz e problemas semelhantes testando diretamente a mesma falha.
Injeção de falhas e orientação de engenharia de caos
O teste de injeção de falhas segue os princípios da engenharia do caos, destacando a capacidade da carga de trabalho de reagir a falhas de componentes. Execute testes de injeção de falhas em ambientes de pré-produção e produção. Aplique as informações que você aprendeu ao executar a análise do modo de falha para garantir que você teste apenas as falhas priorizadas e que tenha estratégias de mitigação que resolvam as falhas.
As principais diretrizes da engenharia do caos são:
Ser proativo. Não espere que as falhas aconteçam. Tente antecipar falhas realizando experimentos de caos para descobrir e corrigir problemas antes que eles afetem seu ambiente de produção.
Abrace o fracasso. Aceite e aprenda com as falhas que ocorrem em seu sistema. Veja as falhas como uma parte natural de sistemas complexos e use-as como oportunidades para aprender e melhorar a confiabilidade do seu sistema.
Pausar o Sistema. Deliberadamente injete falhas ou estresse em seu sistema para testar sua resiliência. Simule falhas ou interrupções do mundo real para testar e melhorar os recursos de recuperação da sua carga de trabalho.
Criar imunidade. Use experimentos de engenharia do caos para melhorar a capacidade da sua carga de trabalho de prevenir e se recuperar de falhas.
A engenharia do caos é parte integrante da cultura da equipe 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 interrupção. Siga este método padrão ao projetar seus experimentos de caos:
Iniciar com uma hipótese. Cada experimento deve ter um objetivo claro, como testar a capacidade de um fluxo de suportar a perda de um componente específico.
Medir o comportamento da linha de base. Certifique-se de ter métricas consistentes de confiabilidade e desempenho para o fluxo e os componentes envolvidos em um experimento para comparar com o estado degradado ao executar seu experimento.
Injete uma falha ou falhas. O experimento deve visar intencionalmente componentes específicos que podem ser recuperados rapidamente, e você deve ter uma expectativa informada do efeito que a injeção de falha causará para ajudar a controlar o raio de explosão do experimento.
Monitore o comportamento resultante. Reúna telemetria sobre os componentes de fluxo individuais e o comportamento de fluxo de ponta a ponta que o experimento visa para entender adequadamente os efeitos da falha. Compare as métricas coletadas com as métricas de linha de base para obter uma visão completa dos resultados da injeção de falhas.
Documente o processo e as observações. Manter registros detalhados de seus experimentos informará decisões futuras sobre o design da carga de trabalho, garantindo que você resolva as lacunas que foram reveladas ao longo do tempo.
Identificar e agir em relação ao resultado. Planeje as etapas de correção que podem ser adicionadas à sua lista de pendências de carga de trabalho como melhorias. Certifique-se de que os planos de melhoria de design sejam revisados e testados em ambientes de não produção de acordo com os mesmos processos de outras implantações.
Valide periodicamente seu processo, opções de arquitetura e código para detectar rapidamente a dívida técnica, integrar novas tecnologias e adaptar-se às mudanças nos requisitos.
Ao realizar experimentos de injeção de falhas, você:
Confirme se o monitoramento está em vigor e se os alertas estão configurados.
Valide seu processo de atribuir um indivíduo diretamente responsável (DRI) para assumir a propriedade de um incidente.
Certifique-se de que sua documentação e processos de investigação estejam atualizados.
Integre as seguintes recomendações e considerações para otimizar sua estratégia de teste de caos:
Desafiar suposições do sistema. Com os testes, você tenta melhorar a resiliência de sua carga de trabalho e suas estratégias de design de carga de trabalho. Procure oportunidades para injetar falhas em componentes e fluxos que você presume serem confiáveis com base em experiências passadas. Eles podem não ser confiáveis em sua nova carga de trabalho.
Validar a alteração. Sem testes completos, incluindo testes de injeção de falhas, você pode ter uma imagem incompleta de sua carga de trabalho depois que as alterações forem feitas. Por exemplo, você pode introduzir novas dependências que não são imediatamente aparentes.
Use buffers de SLA. Limite os testes de caos para permanecer dentro de seus SLAs e evite possíveis efeitos adversos de interrupções. Suas metas de recuperação de fluxo e componentes ajudam a definir o escopo de seu teste.
Estabeleça um orçamento de erro como um investimento no caos e na injeção de falhas. Seu orçamento de erro é a diferença entre atingir 100% do SLO e atingir o SLO combinado.
Pare o experimento se ele ultrapassar o escopo. Resultados desconhecidos são um resultado esperado de experimentos de caos. Esforce-se para alcançar o equilíbrio entre coletar dados substanciais de resultados e afetar o menor número possível de usuários de produção.
Trabalhar em estreita colaboração com as equipes de desenvolvimento para garantir a relevância das falhas injetadas. Use incidentes ou problemas anteriores como guia. Examine as dependências e avalie os resultados ao remover essas dependências.
Identifique e documente dependências não descobertas anteriormente entre diferentes componentes em sua carga de trabalho que são reveladas por meio de testes de caos.
Ajuste os planos de recuperação conforme necessário para levar em conta as dependências descobertas durante o teste de caos.
Use os resultados de seus experimentos e testes como base para novos experimentos e testes. À medida que comportamentos inesperados surgem, novos testes podem visar esses comportamentos diretamente e dar a você a oportunidade de criar estratégias de correção para eles.
Compensação: O teste de injeção de falhas na produção pode ser prejudicial e potencialmente causar tempo de inatividade. Seja transparente com as partes interessadas sobre essa possibilidade e certifique-se de ter proteções em vigor para encerrar experimentos e planos de reversão para reverter rapidamente as falhas que você introduzir.
Facilitação do Power Platform
Você pode usar resultados estáticos em Power Automate para retornar um resultado fixo para testar sua carga de trabalho.
Power Apps O Test Engine (versão preliminar) é um Power Platform componente CLI que você pode usar para testar aplicativos canvas independentes em Power Apps.
O Azure Test Plans é uma solução de geranciamento de testes baseada em navegador e fácil de usar que fornece todos os recursos necessários para testes manuais planejados, testes de aceitação do usuário, testes exploratórios e coleta de feedback das partes interessadas.
Se a sua carga de trabalho incluir recursos do Azure, você poderá usar o Azure Chaos Studio, um serviço gerenciado que usa a engenharia do caos para ajudá-lo a medir, entender e melhorar sua resiliência de serviços e aplicativos em nuvem.
Se sua carga de trabalho incluir um Microsoft Copilot Studio copiloto, você pode usar o Power CAT Copilot Studio Kit para configurar copilotos e testes. Ao executar testes individuais nas APIs ( Copilot Studio ), as respostas do copiloto são avaliadas em relação aos resultados esperados.Direct Line
Lista de verificação de confiabilidade
Consulte o conjunto completo de recomendações.