Image for post
Image for post
Luciano Adamiaki | Gerente de Produção Global | everis Brasil

SRE: Confiabilidade é a pedra fundamental para Negócios Digitais

Em 2016 Jeff Immelt, presidente da GE, já dizia: “Toda empresa é uma empresa de software e análise de dados” e logo o ativo mais valioso destas empresas se tornaram seus dados, e seu balcão de vendas se tornou digital e suas receitas passaram a depender da disponibilidade de seus sistemas.

À medida em que o mundo se tornou cada vez mais conectado e digital, se tornou cada vez mais crítico também ao negócio elevar a disponibilidade e a confiabilidade de sites, infraestrutura em nuvem e aplicativos mobile — desde operações de comércio eletrônico a bancos globais e mecanismos de busca.

Para poder suportar toda esta carga de transações digitais e de tráfego de dados que, em suma, representam dinheiro para a empresa, a maneira como administramos sistemas, sua disponibilidade e confiabilidade precisa mudar. Hoje quando pensamos em confiabilidade não pensamos mais em um super Mainframe que vai aguentar todo o trabalho, mas sim em racks e mais racks de servidores reunidos em clusters de máquinas virtualizadas, com arquitetura de software distribuída em nuvem, impedindo que a falha de uma única máquina possa pôr em risco toda uma operação por inatividade de sistemas.

A confiabilidade não está mais no hardware e em processos manuais inconsistentes e propensos a erros, mas sim na infraestrutura definida por softwares e em tarefas automatizadas consistentes, confiáveis e repetíveis.

O SRE, ou engenharia de confiabilidade de aplicações como é mais conhecida no Brasil, é a prática de manter a alta confiabilidade dos sistemas da empresa através desta infraestrutura distribuída e programável, e maximizar a disponibilidade dos negócios da empresa que dependem destas infraestruturas e aplicações.

O cargo de engenheiro de confiabilidade de aplicações teve origem na equipe de operações do Google, com o objetivo de ajudar desenvolvedores e engenheiros de operação a trabalhar juntos para criar sistemas robustos e flexíveis, e com foco constante na automação da operação destes sistemas.

De maneira simplista e resumida, os SREs são os novos “sysadmins” que trazem princípios de engenharia de software para problemas de infraestrutura e operações focando fortemente na automação de processos e com o objetivo de criar sistemas escaláveis e confiáveis.

Segundo Ben Treynor, Vice-Presidente de Engenharia do Google e padrinho do SRE, o SRE pode ser definido como “O que acontece quando você pede a um engenheiro de software para projetar uma função de operações”.

A responsabilidade fundamental do SRE é garantir que os OKRs (Objective Key Results) definidos pela área de Negócios da companhia sejam atendidos e que a disponibilidades dos sistemas dos quais estes OKRs dependem seja a maior possível.

Para garantir que isto seja possível o SRE utiliza um conjunto de métricas chamado de “Golden Signals”, as quais deve monitorar de maneira consistente e frequente. As métricas que compõem este conjunto de “Golden Signals” são:

  • Latência, que mede o tempo de resposta do sistema para uma requisição realizada pelo cliente;
  • Tráfego, que mede a demanda por dados e transações feitas por clientes através do tempo;
  • Erros, que mede o total de requisições de clientes que resultaram em alguma falha que impediu a transação de ser realizada;
  • Saturação, que mede o percentual de uso dos recursos disponíveis para o sistema;

Um analista ou engenheiro de sistemas não pode ser chamado de Engenheiro SRE se não for absolutamente obcecado tanto por automação quanto por performance. Na realidade um dos principais conceitos por trás da definição do papel do SRE é exatamente a dedicação de 50% de seu tempo às atividades de automação.

Outro elemento-chave do SRE é o que chamamos de “engenharia de lançamento”, que envolve metodologia e práticas recomendadas para garantir que os lançamentos de software sejam bem-sucedidos de maneira consistente. Em empresas com maturidade mais elevada o SRE pode inclusive ajudar a definir as estratégias de lançamento de produtos digitais.

Segundo Dinah McNutt, Gerente de Programa Técnico do Google, escreveu no livro Site Reliability Engineering “Os engenheiros de lançamento têm um entendimento sólido (se não especialista) do gerenciamento de código fonte, compiladores, linguagens de configuração de compilação, ferramentas de compilação automatizadas, gerenciadores de pacotes e instaladores. Seu conjunto de habilidades inclui um profundo conhecimento de vários domínios: desenvolvimento, gerenciamento de configuração, integração de testes, administração de sistemas e suporte ao cliente”.

Atrelado a estas práticas de automação e lançamento de software há também toda a parte de resposta a incidentes, operação de tickets, hierarquia de alertas, gestão de plantões e solução de problemas, gestão do caos e emergências, e análise post-mortem.

Todas estas práticas contribuem para aumentar a confiabilidade das aplicações. Principalmente o post-mortem, pois é nesta prática que o SRE identifica todas as causas raízes do problema ocorrido e atua para realizar a correção diretamente no software ou através da automação da solução destes problemas por scripts de automação.

Entre outros benefícios, é no post-mortem que os engenheiros têm a oportunidade de documentar o problema ocorrido e o passo a passo de sua solução, possivelmente através de algum script de automação já construído para tal finalidade.

Como já mencionei acima, para que um profissional possa ser chamado de SRE há um conceito fundamental que não pode ser quebrado: A divisão do tempo do SRE entre atividades tradicionais de operações e atividades de automação de operações.

Os SREs dedicam cerca de 50% de seu tempo à execução de atividades operacionais tradicionais, como estar de plantão e solucionar tickets das filas de atendimento de problemas. Os outros 50% do tempo devem ser focados no desenvolvimento de software para automatizar a solução destes problemas e tornar os sistemas mais resilientes, automatizados e com características do que chamamos de “self healing”, que pode ser traduzido livremente como “capacidade de autocorreção” ou “auto-cura”.

Encontrar perfis que possuam uma sólida mistura de habilidades de operações e de engenharia de software não é algo simples, tanto que atualmente no mercado de TI nacional, o SRE é um dos profissionais mais valorizados do momento. Um bom profissional de SRE é organizado, capaz de trabalhar sob a pressão de um incidente em produção, ótimo solucionador de problemas e automatizador obcecado. Já os líderes e gerentes de SRE são responsáveis pelo desempenho, estratégia e otimização da equipe, envolvendo estratégias eficientes de plantão, escalonamento e alertas.

Em mercados mais desenvolvidos como o dos Estados Unidos, o salário médio anual de um SRE é de aproximadamente US$ 130.000, enquanto que no Reino Unido este mesmo cargo tem salário médio anual aproximado de e US$ 96.000, de acordo com o Indeed (indeed.com). Até o momento em que escrevo este artigo, não há uma pesquisa oficial deste valor para o mercado brasileiro.

Para quem deseja se aprofundar no tema, o livro Site Reliability Engineering, de Jennifer Petoff, Niall Richard Murphy, Chris Jones e Betsy Beyer, é o primeiro passo do caminho, e o livro mais comentado sobre o assunto, publicado em 2016. Ele está disponível on-line gratuitamente no Google.

Mais recentemente foi publicado outro excelente livro sobre o desenvolvimento de sistemas “SRE Ready” e sobre tudo o que antecede a operação de sistemas chamado “Building Secure & Reliable Systems”, de Heather Adkins, Betsy Beyer, Paul Blankinship, Piotr Lewandowski, Ana Oprea e Adam Stubblefield, publicado em março de 2020 e também disponível gratuitamente on-line pelo Google. Ambos podem ser acessados clicando aqui.

Com a Transformação Digital cada vez mais acelerada, começamos a encontrar mais e mais exemplos de empresas que percebem o valor da disponibilidade de seus sistemas e que encontram nesta alta disponibilidade um trunfo para se diferenciarem no mercado e tirarem proveito financeiro desta importante vantagem competitiva.

Não só a alta disponibilidade mas também a excelente performance de páginas e de aplicativos são itens muito importantes na experiência dos usuários. Experiência essa que, de tão valorizada, hoje possui sua própria disciplina (UX) e também todo seu próprio conjunto de práticas e métricas definidas que avaliam a qualidade dos sistemas pelo percentual de usuários que tais sistemas são capazes de reter. Afinal empresas como Instagram, Uber, Facebook e o próprio Google jamais teriam chegado onde chegaram e se tornado os “Unicórnios da Tecnologia” se não fossem Negócios obcecados por performance, que garantem a seus usuários alta disponibilidade e baixo tempo de carregamento, servindo páginas web com tempos de carregamento que às vezes chegam a ser medidos em nano segundos.

Apesar da prática do SRE já ser um tanto antiga tendo sido definida como a que conhecemos em 2003, com tudo isso em vista e considerando a importância da retenção de usuários on-line para os novos Negócios Digitais, os profissionais de SRE nunca foram tão disputados e o tema nunca foi tão popular como hoje em dia.

Daqui para frente apenas podemos vislumbrar: que a carreira de SRE já é algo real e consolidado tendo um futuro muito promissor no curto prazo, que começaram a surgir cada vez mais metodologias e frameworks de implementação do SRE, e que as empresas que saírem na frente na implementação desta prática contarão com uma enorme vantagem competitiva nos próximos anos.

Written by

Exponential intelligence for exponential companies

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store