Os conceitos de DevOps e Site Reliability Engineering são semelhantes e sempre existiram lado a lado no campo do desenvolvimento de software, sendo frequentemente considerados dois conceitos interligados.
A SRE utiliza os princípios de engenharia de software para automatizar e melhorar as funções de ITOps (Operações de TI), incluindo a resposta a catástrofes, o planejamento da capacidade e a capacidade de monitoramento, complementares às filosofias e práticas do DevOps.
O DevOps, por sua vez, permite a entrega rápida de produtos de software, promovendo a colaboração entre as equipes de desenvolvimento e de operações.
A SRE aplica os princípios DevOps às operações de TI. Desenvolve a mentalidade da engenharia de software. Com a SRE, o desenvolvimento ágil tem o parceiro perfeito no lado das operações. A SRE apoia os princípios e as filosofias DevOps, e ambas visam melhorar o ciclo de lançamento e alcançar uma maior confiabilidade do produto.
O DevOps centra-se mais numa mudança cultural e filosófica, e o SRE é mais pragmático e prático. Apesar das funções diferentes que desempenham, também podem se sobrepor ou se encaixar bem como peças num quebra cabeça, para facilitar a criação de software de qualidade.
O objetivo delas é, essencialmente, o mesmo: preencher o fosso entre as equipes de desenvolvimento e de operações.
Usos conjuntos na prática de DevOps e Site Reliability
As duas metodologias não são concorrentes na prática, pois o SRE oferece uma abordagem prática para lidar com a maioria das preocupações do DevOps.
As equipes usam o SRE para implementar os princípios e filosofias do DevOps. O DevOps trabalha para garantir que vários departamentos ou equipes de software não estejam isolados uns dos outros, mas que trabalhem em conjunto para um objetivo comum.
Como as equipes implementam princípios e filosofias de DevOps por meio de SRE:
Redução dos silos organizacionais
Frente à redução de produtividade causada pela falta de colaboração e de fluxo de informação entre equipes, o DevOps visa evitar o isolamento entre diferentes departamentos ou equipes de software, garantindo que todos trabalham para um objetivo comum. A SRE consegue a propriedade do projeto entre equipes, promovendo a uniformidade com ferramentas, técnicas e bases de código partilhadas.
Mudanças graduais
As mudanças mais eficazes e de baixo risco são as mudanças pequenas e frequentes. A SRE permite atualizações desse tipo, reduzindo o impacto das alterações na disponibilidade e estabilidade da aplicação, um princípio crucial do DevOps. Com ela, as equipes podem colaborar sem problemas enquanto implementam mudanças lentas e graduais para permitir melhorias constantes.
Além disso, as equipes SRE utilizam ferramentas CI/CD para gestão de alterações e testes contínuos, garantindo a implementação bem-sucedida das alterações de código.
Aceitar as falhas
Evitar todas as falhas é impossível. Tanto a SRE como o DevOps reconhecem que as falhas são uma parte normal do processo. No entanto, enquanto o DevOps visa lidar com os erros de tempo de execução e permite que as equipes aprendam com eles, o SRE impõe a gestão de erros através de Compromissos de Nível de Serviço (SLx) para garantir que todas as falhas são resolvidas.
A SRE permite também um orçamento de risco, permitindo às equipes testar os limites de falha para inovação e reavaliação.
Ferramentas e automação
Quanto mais automatizado, melhor. O DevOps concentra-se na automatização para fornecer atualizações mais rapidamente e liberar horas de esforço manual. Tanto o DevOps como o SRE utilizam a automatização para melhorar os fluxos de trabalho e a prestação de serviços.
A SRE permite que as equipes acedam às mesmas ferramentas e serviços através de APIs flexíveis. Enquanto o DevOps promove a adoção de ferramentas de automatização, a SRE garante que todos os membros da equipe têm acesso as ferramentas e tecnologias de automatização atualizadas.
Medir tudo
Métricas são cruciais, e é imprescindível medir cada alteração para conferir se os resultados estão dentro do esperado. O DevOps reúne métricas através de um ciclo de feedback, enquanto o SRE impõe a medição, oferecendo SLIs, SLOs e SLAs para realizar medições precisas. Como as operações são definidas por software, o SRE monitoriza o trabalho e a confiabilidade, garantindo uma prestação de serviços consistente.
Conclusão
Os conceitos de DevOps e Site Reliability Engineering são semelhantes, e sempre existiram lado a lado no campo do desenvolvimento de software, sendo frequentemente considerados dois conceitos interligados, mesmo que sejam diferentes.
O objetivo delas é, essencialmente, o mesmo: preencher o fosso entre as equipes de desenvolvimento e de operações. A SRE apoia os princípios e as filosofias DevOps, e ambas visam melhorar o ciclo de lançamento e alcançar uma maior confiabilidade do produto.
Referências
https://www.bmc.com/blogs/sre-vs-devops/
https://www.altexsoft.com/blog/devops-vs-site-reliability-engineering/