- Desenvolvimento de Software
Com o crescimento do SRE no mercado de Tecnologia da Informação, crescem as dúvidas relacionadas ao tópico SRE vs DevOps.
Em resumo, o DevOps foca na automação de fluxo, buscando melhorar todo o ciclo de desenvolvimento do software. Já o SRE foca no nível de serviço em produção, para garantir disponibilidade e confiabilidade.
DevOps é uma filosofia ou cultura aplicada em TI. Na prática, o DevOps prega a integração entre os times de desenvolvimento (Dev) e de operação (Ops).
No passado, os times responsáveis por desenvolvimento e operação costumavam trabalhar de forma isolada e com objetivos conflitantes. Enquanto o desenvolvimento tem por meta aplicar mudanças, a operação valoriza a estabilidade.
Nesse sentido, a cultura DevOps mostra que times de desenvolvimento e de operação devem colaborar ao longo do ciclo de vida de software em um fluxo contínuo. Ou seja, todos os papéis, desde Product Owners até pessoas de infraestrutura precisam estar conectadas, alinhadas e colaborando para garantir fluidez.
A adoção de DevOps aumenta a eficiência de todo o ciclo de vida do software. Isso ocorre porque com DevOps é possível fazer entregas de software mais frequentes, com mais confiança e menos erros.
Podemos dizer que a filosofia DevOps é composta por mudanças culturais e pela implementação concreta.
Cultura DevOps | Implementação DevOps |
Colaboração Transparência Comunicação Responsabilidade compartilhada Alinhamento com cultura ágil | Automação de CI Automação de CD Observabilidade para monitoramento Infraestrutura como código |
Ao longo do tempo, as práticas e ferramentas de DevOps evoluíram muito. Você pode conferir mais no artigo sobre a evolução e futuro do DevOps.
SRE – Site Reliability Engineering – é uma disciplina que nasceu em 2003 dentro dos times do Google. Ele começou a ser conhecido no mercado em 2016, quando um grupo de engenheiros do Google publicou um livro sobre o assunto.
O SRE se preocupa com a confiabilidade das aplicações para os usuários finais. Ou seja, ele visa implementar processos de sustentação de aplicações, com apoio de práticas de engenharia.
Por ter nascido dentro do Google, ele foi criado para a operação de aplicações de grande escala e de alta disponibilidade.
Os princípios fundamentais do SRE incluem:
O SRE e o DevOps têm muito em comum. Por exemplo, a cultura de colaboração entre Desenvolvimento e Operação, e o princípio de automação de tarefas manuais.
Porém, há diferenças ao comparar SRE vs DevOps.
Com o passar do tempo, o trabalho de DevOps se concentrou mais na automação dos fluxos de desenvolvimento. Isso inclui os pipelines de Integração Contínua e Entrega Contínua.
Já o SRE fortalece a maturidade dos processos de operação, como métricas, resposta a incidentes e melhoria contínua.
Por exemplo, é muito comum ver equipes de Engenheiros DevOps implementarem ferramentas de métricas. Porém, é raro que essas equipes definam objetivos, indicadores e acordos de níveis de serviço (SLO, SLI e SLAs). Esses são temas comuns de equipes de SRE.
Outro exemplo é o atendimento a incidentes e gestão de crises. Times de SRE levam muito a sério a relação com o usuário final. Eles implementam boas práticas para atuar em casos de incidentes críticos e para recuperação do nível de serviço.
Além disso, a melhoria contínua também é implementada por times de SRE. Uma das práticas recomendadas é a análise de pós-incidente, que gera melhorias para os procedimentos de resposta.
Compreender como os profissionais atuam pode esclarecer melhor as diferenças entre os papéis.
É importante lembrar que DevOps surgiu como uma cultura que deveria ser adotada por todos no time de desenvolvimento e de operação.
Porém, quando DevOps começou a ganhar o mercado, o que era uma cultura transformou-se em um papel. Logo, em muitas empresas surgiu um profissional chamado de “Engenheiro DevOps”.
Esse profissional, com um perfil altamente técnico, é responsável por automatizar processos e fornecer as ferramentas necessárias para promover e sustentar um ambiente com cultura DevOps.
Sendo assim, o profissional que atuar como Engenheiro DevOps irá realizar tarefas como:
Ou seja, o Engenheiro DevOps é um profissional altamente técnico, com expertise em infraestrutura e pipelines de CI/CD. Embora ele contribua na resolução de problemas, seu foco não está diretamente na linha de frente das operações.
No original em inglês, o cargo é chamado de Engenheiro de Confiabilidade de Sites (SRE). No entanto, no Brasil, já começou a aparecer uma variação no nome: “Analista SRE”.
Um Engenheiro ou Analista de SRE trabalha diretamente com o time de operação, responsável por uma ou mais aplicações. Suas principais funções incluem monitorar o ambiente, responder a incidentes, garantir a recuperação dos serviços e promover a melhoria contínua dos processos operacionais.
Suas atividades incluem:
Portanto, podemos dizer que uma equipe de SRE é composta por profissionais técnicos com expertise em infraestrutura, IaC e DevOps. No entanto, uma equipe eficaz de SRE vai além disso, atuando diretamente na sustentação de aplicações, monitorando o ambiente e respondendo prontamente a incidentes.
Quem tem mais tempo no mercado de TI já ouviu falar do ITIL. E talvez se pergunte qual a diferença entre o ITIL e o SRE, e se precisamos realmente de ambos.
O ITIL é um framework de boas práticas para o gerenciamento de serviços de TI, criado pelo governo britânico na década de 1980. Existe uma publicação oficial do Guia do ITIL, cuja versão mais recente, o ITIL 4, foi lançada em 2019.
O ITIL se propõe a organizar um compilado de boas práticas para 34 processos, incluindo, por exemplo, Gerenciamento de Mudança, Gerenciamento de Incidentes e Gerenciamento de Nível de Serviços.
O ITIL continua sendo uma importante base de conhecimento, com relevância inegável na definição e padronização de conceitos. Termos como incidente, problema e mudança ainda são amplamente utilizados conforme definidos pelo ITIL.
Na comparação entre SRE e ITIL, ambos visam garantir um bom nível de serviço, mas com abordagens distintas. O ITIL é focado na definição de processos formais e estruturados, enquanto o SRE adota uma abordagem baseada em engenharia de software, automação e princípios de DevOps.
O SRE e o DevOps têm muito em comum. Ambos pregam a cultura de colaboração entre Dev e Ops, e a automação com práticas de engenharia.
Porém, há diferenças significativas. O DevOps ao longo do tempo tem se concentrado mais na melhoria e automação do ciclo completo de desenvolvimento até a operação. Por outro lado, o SRE foca no nível de serviço das aplicações em produção, com o objetivo de garantir disponibilidade e confiabilidade.
Na SoftDesign, acreditamos que ambos são necessários e complementares. Entendemos que a sustentação de aplicações em produção não pode ser baseada apenas na automação de CI/CD. Ela também requer processos maduros de operação e monitoramento. O SRE complementa o DevOps ao resgatar o foco no nível de serviço, proporcionando um objetivo mais específico e nobre para o DevOps.
Um time de sustentação deve usar os dois conceitos. Isso ajuda a garantir um ciclo de desenvolvimento integrado e automatizado, mantendo como objetivo final a excelência no nível de serviço das aplicações.
Nosso palpite, é que nos próximos anos, o papel de “Engenheiro DevOps” possa desaparecer. Isso significa que teremos equipes de operação formadas por Engenheiros de Cloud e Engenheiros de Confiabilidade de Sites (SREs).
Acreditamos que essa mudança será positiva. Afinal, ela permitirá que o DevOps seja visto como uma cultura que abrange todo o ciclo de trabalho.
Veja, a seguir, a resposta para as principais dúvidas sobre SRE vs DevOps.
O DevOps se concentra na automação dos fluxos de trabalho para aprimorar o ciclo de desenvolvimento de software, enquanto o SRE se dedica a garantir a disponibilidade e confiabilidade dos serviços em produção.
Segundo o Glasdoor, a média salarial do cargo de DevOps/SRE (Brasil) é de R$ 9.000 por mês. Entretanto, o salário de um DevOps SRE pode variar muito, dependendo da experiência e da localização da empresa.
SRE é uma prática de engenharia em TI que foca em garantir a confiabilidade e a performance dos sistemas, aplicando princípios de engenharia para gerenciar a disponibilidade e a escalabilidade de serviços.
Por fim, acesse também: