O que é SRE?
SRE, sigla em inglês para Site Reliability Engineering ou "Engenharia de Confiabilidade de Sites", é uma abordagem da engenharia de software às operações de TI. As equipes de SRE usam software como uma ferramenta para gerenciar sistemas, solucionar problemas e automatizar tarefas operacionais.
Na abordagem de SRE, as tarefas que historicamente eram realizadas pelas equipes de operações, muitas vezes manualmente, passam a ser delegadas a engenheiros ou equipes de operações que usam software e automação para solucionar problemas e gerenciar sistemas de produção.
A prática de SRE é muito útil sobretudo na criação de sistemas de software escaláveis e altamente confiáveis. Ela ajuda a gerenciar sistemas extensos por meio do código, o que é mais escalável e viável para administradores de sistemas que administram centenas ou milhares de máquinas.
O conceito de engenharia de confiabilidade de sites foi criado pela equipe de engenharia do Google e é atribuído a Ben Treynor Sloss.
A abordagem de SRE ajuda as equipes a encontrar um equilíbrio entre lançar novas funcionalidades e assegurar que elas sejam confiáveis para os usuários.
Padronização e automação são dois componentes importantes do modelo de SRE. Os engenheiros de confiabilidade de sites devem sempre procurar uma maneira de aprimorar e automatizar as tarefas operacionais.
Desse modo, a SRE ajuda a aumentar a confiabilidade de um sistema não somente no presente, mas também a aprimorá-la ao longo do tempo, conforme esse sistema cresce.
As práticas de SRE facilitam o trabalho das equipes que estão abandonando a abordagem tradicional para execução das operações de TI, em favor à adoção do desenvolvimento nativo em nuvem.
Assista a série de webinars gratuitos da Red Hat e descubra como impulsionar a inovação tecnológica usando modelos colaborativos.
Qual a função do engenheiro de confiabilidade de sites?
A função do engenheiro de confiabilidade de sites é singular e requer experiência, conhecimento e habilidades em desenvolvimento de software, administração de sistemas e operações de TI.
As equipes de SRE são responsáveis pela maneira como o código é implantado, configurado e monitorado, bem como pela disponibilidade, latência, gerenciamento de mudanças, resposta a emergências e gerenciamento de capacidade dos serviços em produção.
A adoção das práticas de SRE ajuda as equipes a determinar quais funcionalidades novas podem ser lançadas e em que momento. E isso é feito com o uso de contratos de nível de serviço (SLAs) que definem a confiabilidade obrigatória de um sistema por meio de indicadores de nível de serviço (SLI) e objetivos de nível de serviço (SLO).
O SLI é uma métrica definida sobre aspectos específicos dos níveis de serviços oferecidos. Os principais indicadores incluem latência de solicitação, disponibilidade, taxa de erro e capacidade do sistema. O SLO é baseado no intervalo ou valor desejado para um nível de serviço com base no SLI.
Em seguida, um SLO é determinado para a confiabilidade exigida do sistema com base no downtime considerado aceitável. Esse nível de downtime chama-se "orçamento de erro", o limite máximo permitido para erros e interrupções.
Na abordagem de SRE, não se espera que haja 100% de confiabilidade, mas as falhas são planejadas e aceitas.
A equipe de desenvolvimento pode "gastar" o orçamento de erro ao lançar uma funcionalidade nova. Com base no SLO e no orçamento de erro disponível, a equipe de desenvolvimento pode determinar se é viável ou não lançar uma certa solução ou serviço.
Se um serviço em execução está dentro desse orçamento, então, a equipe de desenvolvimento pode lançar esse serviço quando desejar. No entanto, se o sistema apresentar muitos erros ou permanecer inativo por um tempo maior do que o permitido pelo orçamento de erro, nenhum lançamento novo deverá ser realizado até que as falhas estejam dentro do parâmetro.
A equipe de desenvolvimento conduz testes automatizados nas operações para demonstrar a confiabilidade.
Os engenheiros de confiabilidade de sites dividem seu tempo entre a execução de tarefas operacionais e o trabalho em projetos. Segundo as práticas recomendadas pelo Google para SRE, um engenheiro de confiabilidade de sites só pode passar no máximo 50% do tempo trabalhando nas operações, o que deve ser monitorado para assegurar que essa porcentagem não seja ultrapassada.
O restante do tempo é gasto em tarefas de desenvolvimento, como criação de funcionalidades novas, escalonamento do sistema e implementação da automação.
O excesso de trabalho operacional e o baixo desempenho dos serviços podem ser redirecionados para que a equipe de desenvolvimento solucione esses problemas. Assim, o engenheiro de confiabilidade de sites não passa tanto tempo nas operações de uma aplicação ou um serviço.
A automação é uma parte importante da função do engenheiro de confiabilidade de sites. Se eles estiverem enfrentando um problema que se repete, então devem criar uma solução automatizada. Essa também é uma maneira de assegurar que o trabalho operacional não ocupe mais da metade da carga de trabalho desses profissionais.
Manter o equilíbrio entre o trabalho operacional e de desenvolvimento é essencial na abordagem de SRE.
DevOps e SRE
DevOps é uma abordagem de cultura, automação e design de plataforma cujo objetivo é agregar mais valor aos negócios e aumentar a capacidade de resposta às mudanças por meio de entregas de serviços rápidas e de alta qualidade. A SRE pode ser considerada uma forma de implementar a metodologia DevOps.
Assim como o DevOps, a SRE tem como foco a cultura e os relacionamentos. Ambas as abordagens visam aproximar as equipes de operações e desenvolvimento para acelerar a entrega de serviços.
Ciclos de desenvolvimento mais rápidos, melhor qualidade de serviço, maior confiabilidade e redução no tempo gasto pela TI em cada aplicação desenvolvida são alguns dos possíveis benefícios alcançáveis com as práticas de DevOps e SRE.
No entanto, a SRE difere porque depende dos engenheiros de confiabilidade de sites da equipe de desenvolvimento que também têm experiência em operações de TI para eliminar problemas de comunicação e fluxo de trabalho.
A função do engenheiro de confiabilidade de sites combina as habilidades das equipes de desenvolvimento com as de operações porque tem responsabilidades que abrangem ambas as áreas.
A SRE pode ajudar as equipes de DevOps cujos desenvolvedores estão sobrecarregados com as tarefas operacionais e precisam de alguém com habilidades mais especializadas nessa área.
Em termos de codificação e criação de novas funcionalidades, o foco da metodologia de DevOps está em percorrer o pipeline de desenvolvimento de modo eficiente. Já a abordagem de SRE está focada no equilíbrio entre os esforços de manter a confiabilidade de sites e a criação de novas funcionalidades.
As plataformas de aplicações modernas baseadas em tecnologia de containers, Kubernetes e microsserviços são essenciais para as práticas de DevOps, pois ajudam a entregar serviços de software seguros e inovadores.
Red Hat Developer
Tecnologias que viabilizam a SRE
A abordagem de SRE depende da automação de tarefas operacionais rotineiras e da padronização de todo o ciclo de vida das aplicações. Ao adotar os containers Linux®, sua equipe tem acesso à tecnologia subjacente necessária para o desenvolvimento nativo em nuvem. Containers são compatíveis com um ambiente unificado para desenvolvimento, entrega, integração e automação.
E o Kubernetes é o meio mais moderno de automatizar as operações de containers Linux. Ele possibilita o gerenciamento fácil e eficiente dos clusters que executam containers Linux em nuvens públicas, privadas e híbridas.
Com a plataforma certa, você aproveita ao máximo as mudanças que sua empresa implementou na cultura e nos processos. O Red Hat® OpenShift® é uma plataforma de Kubernetes para empresas que viabiliza as iniciativas de SRE.