Jump to section

SRE (Site Reliability Engineering) | Engenharia de Confiabilidade de Sites

Copiar URL

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.

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 é 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

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.

Leitura recomendada

ARTIGO

O que é DevSecOps?

Se você quiser aproveitar ao máximo a agilidade e a capacidade de resposta do DevOps, a equipe de segurança da TI precisará participar de todo o ciclo de vida das suas aplicações.

ARTIGO

O que é CI/CD?

A prática de CI/CD aplica monitoramento e automação contínuos a todo o ciclo de vida das aplicações, desde as etapas de teste e integração até a entrega e a implantação.

ARTIGO

O que faz o engenheiro de DevOps?

O engenheiro de DevOps é um profissional que reúne uma combinação única de habilidades e tem o conhecimento especializado para promover mudanças em termos de colaboração, inovação e cultura dentro da empresa.  

Leia mais sobre DevOps

Soluções Red Hat

Red Hat Open Innovation Labs

Um programa de residência imersiva com especialistas da Red Hat, no qual você aprende a usar uma metodologia ágil e ferramentas open source para solucionar problemas empresariais.

Red Hat Consulting

Os consultores estratégicos da Red Hat fornecem uma visão geral da sua organização, analisam os desafios e ajudam a superá-los com soluções abrangentes e econômicas.

Conteúdo adicional

Checklist

Automação empresarial com uma metodologia DevOps

Whitepaper

Otimize pipelines de CI/CD com o Red Hat Ansible Automation Platform

Illustration - mail

Quer receber mais conteúdo deste tipo?

Cadastre-se para receber a nossa newsletter Red Hat Shares.