Com o passar dos anos, tem-se vindo a falar cada vez mais do termo Site Reliability Engineering (SRE) em empresas de desenvolvimento de software ou que entregam um serviço aos seus clientes. Mas afinal o que é este conceito?
Neste artigo vou introduzir o tema de Site Reliability Engineering e o porquê de as empresas precisarem deste conceito.
O que é Site Reliability Engineering (SRE) ?
SRE foi um conceito que foi introduzido pela Google no início dos anos 2000 e visa não só resolver alguns problemas que existem entre os engenheiros de software e a operação como também aumentar a fiabilidade (confiabilidade) dos serviços prestados pelas empresas através de práticas mais eficientes, automatização e entre outros.
Normalmente em desenvolvimento de software, os engenheiros tendem a querer entregar o máximo número de funcionalidades à operação, e esta tem entre as suas preocupações a escalabilidade, fiabilidade e manutenção do que é entregue pelos engenheiros de software.
Desta separação de responsabilidades e da falta de conhecimento do trabalho desempenhado entre equipas é que existe a necessidade de aplicar práticas de SRE nas empresas.
Existem 4 conceitos-chave que são usados para medir a fiabilidade do sistema, SLO, SLI, Error Budget e Error Budget Policy.
– SLI ou Service Level Indicator é a métrica que mostra o quão bem está um determinado serviço num dado momento do tempo.
– SLO ou Service Level Objective é o valor máximo acordado entre os desenvolvedores, engenheiros da operação e SRE considerando uma janela temporal que o SLI não pode ultrapassar.
– Error Budget é o “saldo” que resta entre o SLI e o SLO.
– Error Budget Policy é a ação que tem de ser executada como consequência de se ter excedido o SLO.
Para que seja mais fácil de perceber os conceitos referidos, eis o seguinte exemplo:
Se o SLO dos logins efetuados com sucesso é de 99.9% para um período de 30 dias e assumindo que há 200 000 logins efetuados para a mesma janela temporal, significa que apenas poderão falhar 200 logins. Dada esta informação o nosso error budget é de 200 logins falhados. São usados SLI para indicar quanto já gastamos do nosso error budget. Por fim, se este se esgotar teremos de aplicar as error budget policies como parar o lançamento de novas funcionalidades até que o problema seja resolvido.

A disciplina de SRE não se trata única e exclusivamente de estabelecer e cumprir SLO’s. Vai muito mais além, trata-se de uma forma de pensar, uma forma de trabalhar, um mindset onde se aprende com os erros e onde se tiram lições para que os mesmos problemas não voltem a acontecer.
Dentro deste mindset e cultura inclui algumas tarefas que surgem naturalmente ao adotar o conceito, como reduzir o Toil, isto é, reduzir todas as tarefas manuais, repetitivas e que não entreguem valor acrescentado ou que possam ser automatizadas.
A automatização está sempre presente e deve ser introduzida sempre que possível para reduzir a possibilidade de erro humano e aumentar a eficiência das tarefas com vista a usar o tempo poupado para tarefas mais relevantes. Por fim, tem-se a partilha de responsabilidades onde os SRE fazem o Shift Left e passam o Wisdom of Production para as equipas de desenvolvimento, isto é, os SRE devem passar o conhecimento e feeback que adquiriram no ambiente de produção de volta às equipas de desenvolvimento para que estes consigam melhorar também e evitar cometer os mesmos erros.
Obviamente, o Site Reliability Engineering é um conceito complexo e possui muito mais detalhes do que os mencionados, no entanto muitas pessoas ainda não veem o valor certo em aplicar este conceito nas empresas.
Por que é que uma empresa precisa de um Site Reliability Engineer?
Muitas empresas questionam-se por que motivo e se deveriam adotar as práticas de SRE e isto vem do desconhecimento de como solucionar os problemas que estas têm.
É frequente que as empresas tenham bastante dificuldade em perceber como encontrar o equilíbrio perfeito entre entregar funcionalidades a um ritmo constante e eficiente, e assegurar a estabilidade e fiabilidade dos serviços que prestam. Um Site Reliability Engineer não só está por dentro da parte de engenharia e desenvolvimento como também da parte da operação que faz com que esse desenvolvimento esteja no ar, e portanto, este é responsável por garantir esta estabilidade podendo parar ou reduzir o ritmo de qualquer trabalho de desenvolvimento para que seja priorizado a resolução dos problemas que prejudicam os clientes.
O facto dos SRE estarem inseridos nestas duas equipas em simultâneo faz com que haja uma maior comunicação e facilidade em entregar feedback sobre o trabalho desenvolvido para que se aprenda com os erros com a perspetiva de melhorar.
A satisfação dos clientes é um dos aspetos mais importantes para qualquer negócio tornando assim a disponibilidade dos serviços um dos mais fulcrais, existindo a necessidade de criar mecanismos de observabilidade do sistema para que se consiga avaliar o nosso sistema não só do lado interno mas como também o lado de experiência do utilizador.
É então imprescindível que todos os erros sejam detectados antes que o cliente se aperceba e que estes sejam resolvidos de imediato. Desta forma, garante-se que o cliente está satisfeito e continua a usufruir dos serviços, resultando no aumento da receita. Além disso, identifica-se precocemente problemas, reduzindo os custos operacionais através de mecanismos de monitorização e observabilidade.
Quando se fala da redução de custos operacionais, para além do que foi mencionado acima, tem-se de ter em consideração também as tarefas que são executadas no dia e perceber se estas são passíveis de ser automatizadas para se consiga aproveitar o tempo dos engenheiros para tarefas realmente valiosas.
Este conceito tem-se vindo a expandir com o passar do tempo para outras áreas da tecnologia, isto é, quando falamos em fiabilidade (confiabilidade) de redes faz sentido adaptar-se o nome para NRE – Network Reliability Engineering ou quando se trata de Bases de Dados tem-se DBRE – Database Reliability Engineering.
Para concluir, Site Reliability Engineering vai muito mais além de resolver problemas técnicos. É uma abordagem estratégica que combina engenharia, automatização e gestão para garantir que os sistemas de uma empresa sejam resilientes, escaláveis e confiáveis.
No mundo digital atual, onde a experiência do utilizador é tudo, a fiabilidade dos serviços não é apenas uma vantagem competitiva; é uma necessidade. Ao integrar um SRE, a empresa investe não só na sua infraestrutura técnica, mas também na sua reputação, sucesso e crescimento sustentável.
Por isso, se a sua organização enfrenta desafios relacionados com estabilidade, eficiência ou escalabilidade, talvez seja o momento certo para explorar mais em detalhe os benefícios que SRE pode oferecer.