Estratégias comuns de mitigação
Para começar, considere usar mitigações preventivas para evitar que o modo de falha afete a história do usuário. Você deve então pensar em mitigações corretivas. As mitigações corretivas ajudam o sistema a se autorrecuperar ou a se adaptar às mudanças nas condições. Confira uma lista de mitigações comuns para cada categoria de falha que se alinham às propriedades de resiliência.
Categoria de falha |
Propriedades de resiliência desejadas |
Mitigações |
|---|---|---|
Pontos únicos de falha (SPOFs) |
Redundância e tolerância a falhas |
|
Carga Excessiva |
Capacidade suficiente |
|
Latência excessiva |
Saída oportuna |
|
Configuração incorreta e bugs |
Saída correta |
|
Destino compartilhado |
Isolamento de falhas |
|
Embora algumas dessas mitigações exijam um esforço mínimo para serem implementadas, outras (como a adoção de uma arquitetura baseada em células para isolamento preditivo de falhas e falhas mínimas de destino compartilhado) podem exigir uma reformulação de toda a workload e não apenas dos componentes de uma história de usuário específica. Conforme analisado anteriormente, é importante ponderar a probabilidade e o impacto do modo de falha em relação às compensações que você faz para mitigá-lo.
Além das técnicas de mitigação que se aplicam a cada categoria do modo de falha, você deve considerar as mitigações necessárias para a recuperação da história do usuário ou de todo o sistema. Por exemplo, uma falha pode interromper um fluxo de trabalho e impedir que os dados sejam gravados nos destinos pretendidos. Nesse caso, poderá ser necessário um conjunto de ferramentas operacionais para reorientar o fluxo de trabalho ou corrigir os dados manualmente. Você talvez também precise criar um mecanismo de verificação em sua workload para ajudar a evitar a perda de dados quando ocorrerem falhas. Ou talvez você precise criar um andon cord para pausar o fluxo de trabalho e parar de aceitar novos trabalhos para evitar mais danos. Nesses casos, você deve pensar nas ferramentas operacionais e nas barreiras de proteção necessárias.
Por fim, você deve sempre presumir que os humanos cometerão erros ao desenvolver sua estratégia de mitigação. Embora as práticas modernas de DevOps busquem automatizar as operações, os humanos ainda precisam interagir com suas workloads por vários motivos. Uma ação humana incorreta pode causar uma falha em qualquer uma das categorias do SEEMS, como remover muitos nós durante a manutenção e causar uma sobrecarga ou configurar incorretamente um sinalizador de recurso. Esses cenários são, na verdade, uma falha nas barreiras de proteção preventivas. Uma análise da causa raiz nunca deve terminar com a conclusão de que “um humano cometeu um erro”. Em vez disso, deve abordar as razões pelas quais os erros foram possíveis em primeiro lugar. Portanto, sua estratégia de mitigação deve considerar como os operadores humanos podem interagir com os componentes da workload e como evitar ou minimizar o impacto dos erros do operador humano por meio de barreiras de proteção.