Com o Fault Injection Testing, você pode fazer experimentos de injeção de falhas, um método de introduzir falhas em um sistema para testar a resiliência dele antes que causem uma falha real inesperada que afete seus clientes. Com o Fault Injection Testing, é possível injetar falhas em vários componentes no seu ambiente Google Cloud para garantir que o aplicativo lide com elas de maneira previsível.
No lançamento inicial do Fault Injection Testing, as falhas geralmente equivalem a uma falha do recurso de destino. Essas falhas devem acionar o aplicativo para redirecionar o tráfego a instâncias íntegras se você tiver projetado tolerância a falhas no aplicativo.
É esperado que você observe o aplicativo antes, durante e depois de injetar a falha para verificar se ele a processou conforme o esperado.
Por que usar o Fault Injection Testing?
Com o Fault Injection Testing, é possível executar experimentos sobre a resiliência dos seus aplicativos em Google Cloud em todo o espectro de cenários de falha. Uma parte principal desse espectro é executar experimentos para aproximar as zonas e regiões com falha, que são difíceis ou impossíveis de executar por conta própria. Google Cloud Além disso, o Fault Injection Testing serve como uma ferramenta valiosa de desenvolvimento e melhoria, permitindo que você execute experimentos nos mecanismos de resiliência projetados antes de introduzi-los em um ambiente de produção. Detectar problemas antes que eles apareçam na produção permite melhorar os designs mais rapidamente, evita interrupções caras e perda de reputação e melhora a experiência geral.
Sem um produto de injeção de falhas nativo do Google Cloud, você precisa fazer seus próprios experimentos. Fazer sua própria experimentação é problemático. OGoogle Cloud é um ambiente compartilhado e, em muitos casos, você não tem acesso direto aos serviços e à infraestrutura subjacentes. Esse cenário pode resultar em uma experimentação inadequada e trabalhosa, que pode ser ineficaz na meta de testar adequadamente a capacidade de recuperação do aplicativo. O Fault Injection Testing ajuda a reduzir o esforço para automatizar esses experimentos, dá acesso a modos de falha que você não teria de outra forma e melhora a fidelidade dos seus esforços de experimentação.
Para clientes regulamentados, a realização regular de experimentos costuma ser um requisito para manter a conformidade com os órgãos reguladores do setor. Nesses casos, o experimento geralmente assume a forma de teste de recuperação de desastres, mostrando que a falha de uma zona ou região não impede que o aplicativo continue operando de maneira eficaz.
Falhas disponíveis para experimentos
As seguintes falhas estão disponíveis:
- Failover do Cloud SQL: failover de um banco de dados de primário para standby.
- Degradar o tráfego de aplicativos: simular a degradação do tráfego com um balanceador de carga da camada 7
Essas falhas foram projetadas para restringir o escopo do experimento aos recursos de um único projeto em uma única região ou em uma região menor. O experimento não vai afetar um escopo maior do que o pretendido. No entanto, essas falhas causam falhas reais nos recursos direcionados do ambiente.
Ao segmentar componentes de infraestrutura, como um banco de dados do Cloud SQL ou um balanceador de carga de aplicativo, além de outros componentes que serão compatíveis no futuro, é possível aproximar razoavelmente uma falha de zona ou região no contexto do seu próprio aplicativo.
Como usar o Fault Injection Testing
Antes de usar o Fault Injection Testing, verifique o seguinte:
- Os ambientes em que os experimentos serão realizados têm alguma redundância. Quando uma falha é injetada, o aplicativo desse ambiente pode continuar sendo executado na infraestrutura redundante.
- Para administradores ou proprietários de recursos do Google Cloud : pense bem em quem vai receber permissões para configurar e executar experimentos de Fault Injection Testing. Causar falhas em componentes de infraestrutura em execução no seu ambiente Google Cloud vai causar interrupção. Portanto, conceda permissão apenas a operadores que entendem como o ambiente de nuvem é arquitetado e como testar a resiliência dessa arquitetura com segurança para que eles possam configurar experimentos de forma que não causem interrupções não intencionais.
Para usar o Fault Injection Testing, é necessário configurar um experimento. Para configurar um novo experimento, primeiro crie um modelo que defina a falha a ser injetada e os recursos de destino. Em seguida, execute o experimento com base no modelo. Um experimento é o conjunto de ações definidas no modelo que serão executadas nos recursos selecionados nele.