É impossível construir um sistema de software à prova de falhas. Um sistema pode percorrer todo o seu ciclo de vida sem falhar, mas ninguém pode garantir que nunca falhará. Escrever código perfeito não resolve o problema, pois até um software impecável depende de um computador físico, de energia elétrica, de armazenamento funcionando e de outros componentes. Se a máquina perder energia, o software falhará independentemente de sua qualidade. Por essa razão, os engenheiros precisam projetar para falhas, decidindo antecipadamente como um sistema deve se comportar quando algumas de suas partes não estiverem funcionando corretamente.
Este artigo analisa estratégias que ajudam os desenvolvedores a lidar com falhas em seus sistemas. Ele começa pelo raciocínio por trás da mentalidade de "presumir que tudo pode quebrar", que prepara as equipes para esperar falhas em vez de tratá-las como exceções raras. Em seguida, contrasta evitar falhas com tolerá-las, duas abordagens que servem a propósitos diferentes no projeto de sistemas.
A partir daí, a discussão passa a técnicas práticas. Os desenvolvedores precisam determinar o escopo de uma falha para saber quais partes do sistema são afetadas e quais permanecem saudáveis. Também precisam de formas de reduzir o impacto de uma falha, para que um problema em um componente não se espalhe por toda a plataforma.
Por fim, o artigo aborda como tratar falhas enquanto o sistema continua funcionando corretamente e como medir a recuperação após falhas. Acompanhar a rapidez e a completude com que um sistema se recupera oferece às equipes um retorno concreto sobre a eficácia de suas estratégias de tratamento de falhas.
Fonte: ByteByteGo · Resumido por HeadlinesBriefing