20 pontos por xguru 2023-11-10 | Ainda não há comentários. | Compartilhar no WhatsApp

20 anos de lições aprendidas em Site Reliability Engineering (SRE)

Lições de engenharia de confiabilidade aprendidas com o YouTube

  • Escolha de medidas de mitigação de risco

    • Em caso de erro grave, é preciso escolher medidas de mitigação proporcionais à severidade do erro.
    • Medidas excessivas de mitigação podem causar efeitos colaterais e só devem ser usadas quando houver um motivo legítimo para contornar procedimentos padrão.
  • Testar mecanismos de recuperação para situações de emergência

    • Mecanismos de recuperação e medidas de mitigação devem ser suficientemente praticados e testados com antecedência, para que seja possível reagir de forma eficaz mesmo em situações críticas.
    • Os testes reduzem riscos futuros e melhoram a capacidade de resposta.
  • Introdução gradual de mudanças (aplicando testes canário)

    • Antes de implantar mudanças em larga escala, elas devem ser introduzidas gradualmente para evitar impacto em todo o sistema caso surjam problemas.
    • Com o caso de mudança na configuração de cache do YouTube, ficou claro que até pequenas mudanças exigem uma introdução sistemática.

Lições aprendidas com o Google Calendar

  • Importância de uma função de interrupção de emergência

    • Para mudanças com riscos potenciais, é necessário ter uma função como um "grande botão vermelho" para reagir rapidamente.
    • É preciso preparar uma função de interrupção de emergência considerando as dependências do serviço.
  • Necessidade de testes de integração

    • Testes unitários são úteis em um escopo limitado, mas é preciso validar a adequação do sistema em conjunto com o ambiente real por meio de testes de integração.
    • A partir de um caso de erro no Google Calendar, reconheceu-se a importância de testes que sigam o caminho real de uso.

Lições do Google em 2017

  • Importância de canais de comunicação para emergências

    • É necessário se preparar para canais de comunicação e canais de backup.
    • Em caso de indisponibilidade do serviço, é preciso contar com vários meios de comunicação independentes entre si e testar sua eficácia.
  • Manter o mínimo de funcionalidade em caso de degradação de desempenho

    • O sistema deve ser projetado para oferecer funcionalidades básicas mesmo em estado degradado, evitando que o serviço pare completamente.

Testes de resiliência a desastres

  • Testes de resiliência e recuperação em desastres
    • É preciso testar a resiliência de serviços e sistemas para garantir sua continuidade mesmo em situações de desastre.
    • Por meio de testes de recuperação, deve-se verificar se o sistema consegue voltar ao estado normal após uma interrupção.

Importância de medidas de mitigação automatizadas

  • Automatização de medidas de mitigação
    • Em vez de lidar manualmente com falhas em múltiplas redes, é preciso reduzir o tempo de resolução com medidas de mitigação automatizadas.

Redução do intervalo entre implantações

  • Realizar rollouts frequentes

    • Longos intervalos entre rollouts afetam a avaliação da segurança do sistema.
  • Uma única versão global de hardware é um ponto único de falha

    • Depender apenas de um modelo específico pode simplificar a operação, mas se esse modelo apresentar problemas, a execução de funções críticas pode ser interrompida.
    • A existência de vários backbones de rede ajuda a evitar interrupções gerais e permite rotear tráfego prioritário para alternativas que ainda estejam funcionando.

Ainda não há comentários.

Ainda não há comentários.