SRE – práticas
A maior parte do tempo de vida de um software se dá após subida em produção, quando entra em uso, e não no design ou desenvolvimento. Então, por que insistimos que os engenheiros de software devam se concentrar principalmente nas fases de design e implementação dos sistemas?
Por isso o Google desenvolveu o termo SRE Site Reliability Engineering. É um time dedicado composto por engenheiros de software que operam os produtos e criam sistemas para realizar o trabalho que seria realizado por adminstradores de sistemas geralmente de forma manual.
Agora vamos as Práticas do SRE:
- abraçar o risco;
- ter objetivos do nível de serviço;
- eliminar trabalho desnecessário;
- monitorar sistemas distribuídos;
- automatizar processos;
- ter engenharia de lançamentos;
- buscar a simplicidade.
Abraçar o risco:
Na maioria das vezes os softwares não precisam ser totalmente perfeitos, a menos que seja algum software para aviação ou médico. Os softwares podem tolerar falhas dado um determinado nível de risco estabelecido.
Ter objetivos do nível de serviço:
Os objetivos de nível de serviço (Service Level Objectives) estabelecem indicadores do que o seu software precisa cumprir para estar dentro do nível de risco. Esses SLO (Service Level Objectives) podem ser acompanhados diariamente ou semanalmente.
Se esse indicador estiver indo bem, o time pode continuar mudando as funcionalidades e construindo novas. Por outro lado se o time está adicionando novas features e o time de SRE percebe que quanto mais eles adicionam, mais o SLO vai chegando perto do máximo que poderia ser, identifica-se o momento de parar o desenvolvimento, e requisitar que o time resolva débitos técnicos ou bugs e não deixar que mandem features novas enquanto não resolverem a estabilidade do sistema.
Eliminar trabalho desnecessário:
Significa eliminar aquele serviço manual, repetitivo, e facilmente que pode ser automatizado. A ideia é sempre que possível ir diminuindo o problema.
Monitorar sistemas distribuídos;
Sobre o monitoramento é importante ter um membro da equipe dedicado para acompanhar métricas, lembrando sempre de manter simples e que realmente importam para a perenidade da operação.
Automatizar processos:
Esse é um dos princípios mais importante do SRE que suscita uma questão polêmica: Vale a pena automatizar um processo que hoje é executado manualmente e tem custo muito baixo? Na visão do SRE, sempre vale a pena!
- Quando você automatiza desacopla da pessoa que tem conhecimento dessa tarefa, qualquer um vai poder executar dali pra frente.
- Automatizar um processo, faz com que ele fique registrado no código. Muitas vezes procedimentos manuais estão em arquivos de texto, e que não tem gestão de configuração adequada e podem levar a um erro de execução (por exemplo, executar um procedimento antigo). Quando o processo está em código, ele faz parte do sistema e pode ser analisado, otimizado e garantindo que temos a última versão válida.
- Automatizar uma tarefa manual é bom, mas ter um sistema autônomo é melhor ainda. Um sistema que já saiba o que ele tem que fazer sem intervenção nenhuma e sempre de alguém escrever uma ferramenta para controlá-lo.
Ter engenharia de lançamentos:
No livro, é citado que no Google existem times responsáveis por fazer ferramentas de build e release, e os times de desenvolvimento em vez de se preocupar em como eles irão enviar o software, eles só se preocupam escrever software usando as ferramentas e os padrões do time de release, e só decidem a freqüência com que irão enviar alterações.
Buscar a simplicidade:
No SRE, é estimulado a simplicidade do código e manter o ambiente “clean”. Ou seja, sempre você não pode medo de remover código não necessário para a aplicação. Ao em vez de comentar código, ou fazer uma uma flag é indicado que esse código seja removido e caso necessário, recuperar o código através da ferramenta de gestão de controle de versão.
Conclusão:
A equipe de Site Reliability Engineering trabalha olhando para o sistema e corrigindo as falhas, além de, automatizar para ser possível prever indisponibilidade do sistema antes de chegar ao cliente final. Agora o desenvolvedor que esta trabalhando em novos produtos não precisa parar a tarefa para corrigir bugs no produto em execução.
Fonte: Livro Engenharia de Confiabilidade do Google e https://gerencianet.com.br/blog/site-reliability-engineering-sre-qual-a-funcao-em-uma-empresa/ e https://medium.com/@fabio.delgado2/sre-bf4ca0cdb82c