Guia dos Conceitos Básicos do SRE

Marcelo Ortiz
4 min readJan 28, 2022

--

Série de artigos com o objetivo de esclarecer os conceitos básicos do SRE (Site Realiability Engineering).

SRE nada mais é do que uma disciplina que incorpora os aspectos da engenharia de software e as aplica em problemas de infraestrutura e operações de TI.

Benjamin Treynor (fundador do Google SRE) definiu SRE de forma muito feliz com a seguinte frase:

"SRE é o que acontece quando você pede a um engenheiro de software para projetar uma equipe de operações."

Operar ambientes computacionais de alta disponibilidade e complexidade não é nada fácil. Fica ainda mais difícil quando essa operação está imersa em um ambiente de TI tradicional, onde existe não só um muro, mas sim um abismo praticamente intransponível entre o time de desenvolvimento e o time de operação (com a clássica e chata visão contraditória: DEVS empurrando entregas em um pseudo ambiente ágil e OPS congelando mudanças e dando a vida para segurar a disponibilidade). Quem nunca? :)

Ter esse atrito, em um mundo onde as empresas precisam validar seu progresso com aprendizagem validada, no modelo de construir-medir-aprender, onde esse aprendizado precisa ser altamente acelerado e a tecnologia é o core de todo o sistema de valor, é decretar a falência da TI como driver da transformação digital.

Então vem o DevOps como o alavancador da cultura para quebrar os silos da TI. Se pensarmos em DevOps como um "software" (com suas filosofias e práticas), o SRE é uma "classe" que implementa uma parte das funcionalidades do DevOps, aquelas mais voltadas para infraestrutura e operações.

O SRE e sua filosofia possui 5 ideias chaves e que estão alinhados com o DevOps:

1- Reduzir os silos organizacionais (no more silos): compartilhando propriedade e responsabilidade entre os times;

2- Acidentes são normais (accidents are normal): abraçando o risco e usando e abusando de observabilidade e de indicadores de níveis de serviços (SLIs), objetivos de níveis de serviços (SLOs) e compartilhando a cultura de análise de causa raiz sem culpa (blameless RCA);

3- Mudanças implementadas gradualmente (change should be gradual): reduzindo o lote de implantação, diminuindo o risco e acelerando o pipeline de implantação com o CI/CD;

4- Eliminando o trabalho manual e rotineiro (tooling and culture are interrelated): segredo aqui é ter um pensamento, cultura e arquitetura de TI que incentiva a automação dos trabalhos manuais e rotineiros da operação. A ideia de entregar software com uma ou uma tonelada de ações manuais que a operação precisa executar rotineiramente de forma manual passa longe desse item.

5- Medir é crucial (measurement is crucial): medir e ser guiado por SLIs e SLOs é fundamental para uma cultura de sucesso de SRE.

São essas ideias chaves que guia os 6 principios e práticas do SRE:

1- Operação é um problema de software: SRE usa as abordagens de engenharia de software para resolver os problemas;

2- Gerenciar por Objetivos de Níveis de Serviços (SLOs): SRE não tem o objetivo de tudo estar 100% disponível o tempo todo, a ideia aqui é entender o alvo ideal de SLO e então gerenciar. SLO está ligado com o conceito de Error Budget e ambos são conceitos essenciais (na minha opinião o mais importante) para as definições e decisões do que priozar;

3- Trabalhar para Minimizar o Toil: a cultura aqui é que trabalhos repitivos e manuais são ruins e ocupam um tempo que poderia sem empregado em algo que realmente entrega valor para a organização (entregando funcionalidades de escalabilidade e confiabilidade, por exemplo);

4- Automação: aqui o trabalho é entender o que automatizar, em quais condições e como. Ter uma arquitetura e um framework de automação é essencial para o sucesso dessa prática;

5- Reduzir o Custo de Falha: o fato aqui é que quanto mais tarde se descobrir um problema no ciclo de entrega de um produto, mais caro é para corrigir;

6- Compartilhar responsabilidade com os Desenvolvedores: a rígida fronteira entre desenvolvedores e operação é contraprodutiva. SRE trabalha junto com o time de desenvolvimento levando as habilidades de produção para o desenvolvimento do produto. A visão da "vida real de produção" deve ser inserida no contexto de entrega de uma solução. Queestões como disponibilidade, latência, performance, eficiência, monitoração, resposta à emergências, plano de capacidade devem ser incorporadas no ciclo de desenvolvimento e evolução das plataformas.

Esses são os conceitos básicos para entender as ideias e os princípios por trás da sigla SRE. Nos próximos artigos vou pontuar, um por um, os assuntos fundamentais do SRE:

Veja também meu vídeo, onde falo um pouco dos conceitos e práticas de SRE no link https://www.youtube.com/watch?v=9uvS6WeCuVg&t=172s.

Para quem quer buscar mais informações, deixo alguns livros e sites interessantes sobre SRE:

Obrigado e até a próxima.

Marcelo Ortiz
Engenheiro da Computação, mestrando em Ciências da Computação.

--

--