Read in English

O Incidente

Essa semana participei de uma conversa sobre Error Budget na plataforma X (anteriormente conhecida como Twitter). No entanto, ao tentar enviar minha mensagem, nada aconteceu. Tentei novamente, sem sucesso. Ao abrir outra aba, percebi que a rede social não estava carregando. Naquele momento, imaginei que se tratava de uma indisponibilidade do X, algo que tem sido criticado desde a sua recente aquisição. Passada uma hora comecei a receber queixas de colegas com o mesmo problema, nitidamente chateados com a indisponibilidade da rede social.

Curiosamente, o Twitter ficou indisponível justamente quando estávamos discutindo sobre Error Budget.

Como um bom SRE, comecei a investigar, mas rapidamente percebi que o problema não se limitava ao Twitter. Após cerca de uma hora, ficou claro que vários serviços estavam indisponíveis. Isso levantou especulações: “Será que o provedor de internet Y está com problemas?”. Nesse momento, os grupos de WhatsApp já estavam discutindo o problema e me marcando, questionando o que estava acontecendo com a internet do país.

Não demorou muito para que o suposto culpado fosse identificado: um problema em um Ponto de Interconexão (PIX) operado pelo ix.br (um projeto nacional que promove a interconexão direta entre as redes brasileiras). Um pequeno aviso em sua página de status informava os interessados sobre a situação (print na sequência). No entanto, para a maioria dos usuários, isso não fazia diferença: o serviço que eles queriam usar ficou indisponível por algumas horas.

Status do ix.br sobre a indisponibilidade em questão

Naquele momento, eu só conseguia imaginar um Engenheiro de Software tendo que explicar aos stakeholders que a indisponibilidade não era causada por um problema em seu serviço, mas sim por um problema em um serviço sobre o qual ele não tem controle.

Nesse incidente, a frustração era inevitável, tanto para a equipe de operações quanto para os usuários finais. Em situações como esta, onde sistemas dependentes de infraestruturas externas enfrentam interrupções, a realidade se torna particularmente desafiadora. Para o usuário, a distinção entre uma falha interna e um problema em um serviço terceirizado é irrelevante; o que importa é que o acesso ao serviço desejado está bloqueado. Esta percepção amplifica a frustração da equipe de operações, pois, apesar dos esforços para manter tudo funcionando perfeitamente, fatores externos podem subverter esses esforços e impactar diretamente a experiência do usuário.

A Indisponibilidade é Inevitável

Tal acontecimento me fez refletir sobre a natureza da confiabilidade e relembrar alguns ensinamentos importantes sobre aceitar o risco na função de SRE, como ilustra este trecho do livro Site Reliability Engineering:

“Extrema confiabilidade tem um custo: maximizar a estabilidade limita a velocidade com que novos recursos podem ser desenvolvidos e como os produtos podem ser entregues aos usuários, e aumenta drasticamente seu custo, o que, por sua vez, reduz o número de recursos que uma equipe pode oferecer. Além disso, os usuários geralmente não percebem a diferença entre alta confiabilidade e extrema confiabilidade em um serviço, porque a experiência do usuário é dominada por componentes menos confiáveis, como a rede celular ou o dispositivo com o qual estão trabalhando.”

Vários fatores podem causar ou criar uma percepção de indisponibilidade. Para que nossos serviços funcionem corretamente, eles dependem de uma série de outros serviços, alguns podemos mitigar e pensar em métodos de recuperação, outros não.

Por esse motivo, pensar em confiabilidade extrema pode ser um erro para a maioria dos casos. Afinal, a experiência do usuário é dominada por componentes menos confiáveis e existirá eventualmente uma percepção de indisponibilidade

Imagem que mostra outages sendo identificados em vários serviços diferentes

Então, seja por algo do nosso controle ou não, a indisponibilidade de um serviço é inevitável e acontecerá. A grande questão é: como lidar com isso?

Esta aceitação não implica em negligência, mas sim numa mudança de perspectiva: ao invés de se concentrar unicamente na prevenção, nós, operadores da cultura de SRE, podemos nos concentrar na gestão eficiente e na recuperação rápida de incidentes.

Uma perspectiva realista para a confiabilidade e o risco

O medo da indisponibilidade é uma realidade constante para operadores de sistemas, mas o framework de SRE oferece ferramentas como Error Budget e Service Level Objectives (SLOs) para gerenciar este desafio. Estas ferramentas permitem uma abordagem mais realista da confiabilidade, ajudando a quantificar o risco aceitável e a balancear a necessidade de inovação com a manutenção da estabilidade.

A prática de SRE promove uma cultura que equilibra o risco com a inovação, incentivando a experimentação dentro de limites claros e seguros. Esta abordagem tem sido fundamental para a adoção de processos anteriormente considerados arriscados, como o Trunk Based Development, Continuous Deployment e Continuous Integration.

O Error Budget, em particular, é uma ferramenta valiosa que apoia a inovação responsável e a tomada de decisão baseada em dados. Ele oferece uma métrica objetiva, baseada em indicadores de negócios, para determinar a tolerância ao risco, seja em termos de tempo de inatividade permitido ou número de erros aceitáveis.

Aceitar a inevitabilidade da indisponibilidade e utilizar o Error Budget de forma estratégica é essencial para uma gestão eficaz de sistemas. Isso não implica na renúncia da confiabilidade, mas sim em reconhecer que sistemas verdadeiramente confiáveis são aqueles preparados para responder e se recuperar de falhas de maneira ágil e eficiente.

Conclusão - Abraçando a Indisponibilidade Como Uma Realidade

O incidente vivenciado por uma parcela dos usuários de Internet no Brasil essa semana serve como um lembrete prático de que, mesmo com os melhores planos e sistemas robustos, fatores externos e imprevistos podem afetar a experiência do usuário e a percepção de confiabilidade. Este evento sublinha a importância fundamental, na disciplina de SRE, de entender e aceitar que esse risco é inevitável.

Assim como a indisponibilidade enfrentada, que fatores externos nos deixaram dependentes de elementos fora de nosso controle, o Error Budget nos ajuda a compreender e aceitar que nem todos os riscos são evitáveis. Em vez de buscar uma perfeição inalcançável, devemos focar em criar sistemas resilientes e adaptáveis, capazes de evoluir e se recuperar frente a desafios.

Para isso, precisamos estar dispostos a aceitar o risco e tratar a operação de sistemas com uma postura mais realista.

Apesar de reconhecer a excepcionalidade da indisponibilidade mencionada, a situação reforça que a verdadeira confiabilidade não se baseia na ausência de falhas, mas na habilidade de gerenciá-las eficientemente. Ao aceitarmos e gerenciarmos o risco com inteligência, mantemos nossos sistemas operacionais e os preparamos para um futuro de inovação contínua e crescimento sustentável.