Há um conjunto de perguntas comuns que surgem no que se refere à relação entre SRE e o DevOps, incluindo "Como eles são iguais? Como eles são diferentes? Podemos ter ambos em nossa organização?". Este artigo tenta compartilhar algumas das respostas que foram dadas pelas comunidades de SRE e DevOps que nos ajudam a entender melhor essa relação.
Como eles são iguais?
SRE e DevOps são práticas de operações modernas que foram criadas e desenvolvidas em resposta a desafios que incluíam:
- a crescente complexidade de nossos ambientes de produção e processos de desenvolvimento
- o aumento da dependência dos negócios ao funcionamento contínuo desses ambientes
- a incapacidade de dimensionar a força de funcionários de maneira linear ao tamanho desses ambientes
- a necessidade de se mover mais rápido enquanto ainda mantém a estabilidade operacional
Ambas as práticas de operações exigem atenção aos assuntos que são cruciais para lidar com esses desafios, como monitoramento/observação, automação, documentação e ferramentas de desenvolvimento de software colaborativo.
Há uma sobreposição considerável em ferramentas e áreas de trabalho entre SRE e DevOps. Conforme indicado na Pasta de Trabalho de Confiabilidade do Site, "A SRE acredita nas mesmas coisas que o DevOps, mas por motivos ligeiramente diferentes."
Três maneiras diferentes de comparar as duas práticas de operações
As semelhanças entre SRE e DevOps são óbvias. O que é realmente interessante é no que as duas diferem ou divergem. Aqui, oferecemos três maneiras de pensar sobre sua relação de forma a trazer algumas nuances para essa pergunta. Você pode não concordar com essas respostas, mas cada uma delas fornece um bom ponto de partida para discussão.
"A classe de SRE implementa a interface DevOps"
A Pasta de Trabalho de Confiabilidade do Site (mencionada em nossa lista de livros de recursos) discute SRE e DevOps em seu primeiro capítulo. Esse capítulo usa a frase "A classe de SRE implementa a interface DevOps" como seu subtítulo. Isso serve para sugerir (usando uma frase destinada a desenvolvedores) que a SRE poderia ser considerada uma implementação específica da filosofia DevOps. Como o capítulo destaca, "o DevOps é relativamente silencioso sobre como executar operações em um nível detalhado", enquanto a SRE é consideravelmente mais punitiva em suas práticas. Assim, uma resposta possível à pergunta de como os dois estão relacionados é que a SRE poderia ser considerada uma das muitas implementações possíveis de DevOps.
A SRE está relacionada à confiabilidade, assim como o DevOps está relacionado à entrega
Como há várias definições para SRE e DevOps, essa comparação é um pouco difícil de entender, mas ainda é potencialmente útil. Tudo começa com a pergunta "se você tivesse que filtrar cada prática de operações em uma ou duas palavras que demonstrem sua preocupação principal, quais seriam?"
Se usarmos essa definição de SRE do Hub de engenharia de confiabilidade do site:
A Engenharia de Confiabilidade do Site é uma disciplina de engenharia dedicada a ajudar uma organização a alcançar de maneira sustentável o nível de confiabilidade apropriado em sistemas, serviços e produtos.
Assim, seria fácil dizer que a palavra para SRE é "confiabilidade". Ter essa palavra bem no meio de seu nome também é uma boa evidência para essa afirmação.
Se usarmos esta definição de DevOps da Central de Recursos DevOps do Azure:
O DevOps é a união de pessoas, processos e produtos para habilitar a entrega contínua de valor para nossos usuários finais.
Então, um resumo semelhante para DevOps poderia ser "entrega".
Logo, "a SRE está relacionada à confiabilidade, assim como o DevOps está relacionado à entrega".
Direção da atenção
Essa resposta é uma citação ou leve paráfrase da contribuição de Thomas Limoncelli para o livro de A busca por SRE mencionado em nossa lista de livros de recursos. Ele observa que os engenheiros de DevOps estão amplamente concentrados no pipeline de desenvolvimento de software com responsabilidades de operações de produção ocasionais, enquanto os de SREs se concentram em operações de produção com responsabilidades de pipeline SDLC ocasionais.
Mas o mais importante é que ele também desenha um diagrama que começa com o processo de desenvolvimento de software em um lado e o trabalho de operações de produção no outro. Os dois estão conectados pelo pipeline comum criado para pegar o código de um desenvolvedor, guiá-lo ao longo de um número desejado de testes e mover esse código para produção.
Limoncelli observa que os engenheiros de DevOps começam no ambiente de desenvolvimento e automatizam as etapas para a produção. Depois de concluído, eles voltarão para otimizar os gargalos.
Os de SREs, por outro lado, concentram-se nas operações de produção e mergulham mais fundo no pipeline como um meio para melhorar o resultado final (basicamente trabalhando na direção oposta).
É essa diferença na direção do foco do DevOps e da SRE que pode ajudar a diferenciá-los.
Convivência na mesma organização
A pergunta final que gostaríamos de abordar é "você pode ter SRE e DevOps na mesma organização?"
A resposta é um "Sim!" bem enfático.
Esperamos que as respostas anteriores consigam dar uma ideia de como as duas práticas de operações se sobrepõem e, quando não se sobrepõem, como elas podem ser complementares no que diz respeito ao foco. As organizações com uma prática DevOps estabelecida podem experimentar as práticas de SRE em uma pequena escala (por exemplo, experimentando SLIs e SLOs) sem precisar se comprometer com a criação de equipes ou cargos de SRE. Esse é um padrão de adoção de SRE relativamente comum.
Próximas etapas
Interessado em aprender mais sobre a engenharia de confiabilidade de sites ou DevOps? Confira o Hub de engenharia de confiabilidade de site e o Centro de recursos do Azure DevOps.