Site Reliability Engineering: Conceitos Fundamentais e Como Colocá-los em Prática

O que é Site Reliability Engineering (SRE)? Quais os princípios fundamentais desta disciplina? De que forma é aplicada a melhoria contínua?

img-2

De uma forma simplificada, e baseando-me no livro disponibilizado pelos seus criadores, podemos definir SRE como uma abordagem, gosto de chamar de disciplina, para a operação de sistemas, originada no Google, que reúne princípios de engenharia de software com práticas tradicionais de operações de TI. 

Essencialmente, o SRE tem como meta central criar sistemas confiáveis e resilientes, assegurando simultaneamente uma experiência positiva para os usuários. O time responsável por implementar SRE é composto por engenheiros de software/infraestrutura incumbidos de gerenciar e manter os sistemas essenciais do negócio, com a finalidade de garantia de serviços funcionais sem indisponibilidade, minimizando o impacto de possíveis falhas que possam comprometer o negócio em si.


Os Quatro Princípios Fundamentais do SRE

Para concretizar os objetivos já mencionados, as equipas SRE fundamenta-se em quatro princípios fundamentais básicos:


1. Medição de SLIs, SLOs e Error Budgets

a) Os Indicadores de Nível de Serviço (SLIs) são métricas que quantificam a qualidade de um sistema, como o tempo médio de resposta de uma API. 

b) Objetivos de Nível de Serviço (SLOs) são metas estabelecidas para os SLIs. Por exemplo, manter o tempo de resposta de uma API abaixo de 100ms em 99% das solicitações ao longo de uma semana. 

c) Error Budgets representa as ocorrências indesejadas em que um sistema não atinge seu SLO.


2. Automação

Automação é uma ferramenta-chave utilizada pela equipa de SRE para lidar com tarefas repetitivas e rotineiras (Toil). Essa abordagem minimiza a probabilidade de erros humanos e permite que a equipa dedique seu tempo a atividades mais complexas e significativas.


3. Escalonamento Controlado

Implementação de mudanças realizada de maneira gradual e controlada pela equipa de SRE para mitigar riscos. Se uma alteração causar indisponibilidade no ambiente, é possível reverter essas alterações rapidamente para um estado estável anterior ao da mudança.


4. Cultura de Aprendizado com Erros

Em vez de evitar erros a todo custo, a equipa de SRE encara as falhas como oportunidades de aprendizado e aprimoramento do sistema. Isso envolve análise de incidentes, resolução de problemas e documentação para prevenir problemas semelhantes no futuro (Implementação de Cultura Postmortem).

A abordagem SRE demonstrou sucesso tanto no Google quanto em outras empresas de tecnologia. Ela promove uma colaboração mais próxima entre as equipas de operações e desenvolvimento, criando uma cultura de confiança e compartilhamento de conhecimento. No entanto, a implementação de SRE não segue um único processo. Cada empresa pode adaptar os princípios da SRE conforme suas necessidades e infraestrutura, sendo crucial entender que a confiabilidade é uma responsabilidade compartilhada, não tornando estritamente responsável uma única equipa específica.

Na próxima sessão vamos aprofundar nos princípios mencionados anteriormente, visando demonstrar de que forma estes princípios se aplicam na rotina de uma equipa SRE.

img-4


Melhoria Contínua e Engenharia de Confiabilidade
 

Uma equipa de SRE, está sempre em busca de aprimorar a confiabilidade do sistema por meio de uma abordagem baseada em engenharia. Isso implica não apenas reagir a incidentes, mas também encontrar maneiras de evitá-los, proatividade.

A análise de incidentes, conhecida como “Postmortem”, é uma ferramenta poderosa para quaisquer sejam os times que utilizam SRE. Quando um incidente ocorre, a equipa conduz uma análise detalhada para compreender as causas raiz e identificar oportunidades de melhoria. Essa abordagem permite aprender com erros passados e implementar mudanças para evitar problemas semelhantes no futuro.

A cultura de aprendizado com erros é vital para o sucesso da SRE. Ao invés de punir falhas, a organização deve incentivar uma cultura aberta onde os erros sejam encarados como oportunidades valiosas de aprendizado, chamamos de cultura Blameless. Isso cria um ambiente onde os membros da equipa compartilham experiências e insights, melhorando constantemente a confiabilidade do sistema e também o engajamento dos times, incentivando um bom ambiente de trabalho sem a pressão de não poder cometer erros.

Quando falamos de resiliência e tolerância a falhas, podemos dizer que resiliência é uma característica central dos sistemas gerenciados pelas equipas SRE, a equipa assume que falhas acontecem e trabalha para que o sistema possa se recuperar delas de forma consistente minimizando o impacto.

Isso envolve projetar arquiteturas redundantes, distribuídas e tolerantes a falhas. A equipa de SRE deve identificar pontos únicos de falha e implementar soluções para mitigar esses riscos. Testes de estresse e simulações de falhas são cruciais para garantir que o sistema possa lidar com situações adversas.

Sobre escalonamento automático, a escalabilidade é uma preocupação constante para sistemas em crescimento em um mercado dinâmico e exigente como temos atualmente, a equipa de SRE deve utilizar sempre que possível, automação, para que o sistema possa se ajustar dinamicamente à demanda do usuário, negócio ou infraestrutura em si.

A automação de escalonamento permite que o sistema aumente ou diminua automaticamente sua capacidade com base em métricas de desempenho, por exemplo. Isso assegura que o sistema permaneça disponível mesmo durante picos de tráfego.

img-6

Pois bem, as equipas de SRE ao implementarem uma cultura de colaboração e transparência, promovem uma envolvência entre as equipas de operações e desenvolvimento que, ao invés de trabalharem separadamente, essas equipas comunicam-se regularmente e partilham conhecimento para atingir objetivos de confiabilidade e disponibilidade do sistema, de acordo com as necessidades do negócio.

Essa colaboração inclui definir metas e prioridades para o serviço de forma conjunta. As equipas de desenvolvimento e operações trabalham juntas para estabelecer SLIs e SLOs realistas e plausíveis de alcançar. Essa definição colaborativa garante que a equipa de SRE compreenda claramente as expectativas dos usuários e o que é necessário para atendê-las.

Não poderia deixar de mencionar que a evolução da cultura organizacional, infere diretamente na implementação bem-sucedida de SRE e exige uma transformação cultural na organização. A liderança deve apoiar ativamente a adoção da abordagem SRE, fomentando uma cultura de confiança onde os erros sejam encarados como oportunidades de aprendizado e a busca por melhorias contínuas seja incentivada.

O treinamento adequado da equipa de SRE e de outras equipas envolvidas é crucial. Isso garante que todos possuam as habilidades necessárias para implementar eficazmente as práticas descritas para uma implementação bem sucedida de SRE.


O Que é Site Reliability Engineering (SRE) – Considerações Finais


De forma resumida, SRE é uma síntese inovadora entre engenharia de software, equipa de operações e infraestrutura de TI, visando a confiabilidade e disponibilidade de sistemas escaláveis. Medir SLIs, SLOs e Error Budgets de maneira proativa, utilizar automação para tarefas rotineiras, implementar mudanças de forma gradual e controlada e promover uma cultura aberta ao aprendizado com erros, a cultura SRE torna-se um método altamente eficaz, gerando confiabilidade e experiência de usuário agradável, o que pode trazer claramente uma vantagem competitiva no cenário cada vez mais digitalizado em que vivemos.

A disciplina SRE é abrangente e possui diversas vertentes, iremos nos próximos artigos detalhadamente aprofundar os estudos em seus princípios básicos e demonstrar exemplos detalhados, de forma a entender como buscar a excelência na sua implementação, fazendo sua conjunção entre a atuação com demais processos utilizados por equipas de alto desempenho, bem como DevOps e metodologias ágeis, você pode se aprofundar um pouco mais sobre um desses temas acessando um de nossos artigos já disponíveis, sobre manifesto ágil e construção de um mindset ágil.

Lembre-se:

Esperança não é uma estratégia de sucesso.”


Até ao próximo artigo! ????