Criando equipes de alto desempenho com a cultura DevOps
Tags: devops, platformengineering, sre, culture
Published: 2023-03-20 18:16:51

_For non-Portuguese speakers, there is an English version of this article [here](https://medium.com/@dmyoko/nurturing-high-performing-teams-with-devops-culture-287684c99e84)_.

Você já se perguntou por que DevOps é um tópico tão confuso, cheio de _misdirections_ e montes de tutoriais sobre todo o "Ops", como se todas as pessoas "Dev" precisassem se tornar SysAdmins para conhecer DevOps?

No meu dia-a-dia, sou responsável por uma equipe de Platform Engineering e um dos meus objetivos é enriquecer a cultura DevOps por toda a organização, o que pode ser desafiador dependendo do quanto as equipes adotam os princípios e valores que orientam essa cultura. Então, quando as pessoas tentam descobrir como aprender DevOps, geralmente encontram toneladas de materiais sobre Operações.

Quero dizer, tente se colocar no lugar de um novato e imagine como isso seria avassalador... como se já não fosse avassalador o suficiente. Tive dificuldade para aprender DevOps, e tenho mais de 20 anos de carreira na área. E, só para deixar claro, não estou dizendo que essas coisas não são valiosas para aprender. Estou apenas dizendo que DevOps não é sobre nada disso.

## O que é DevOps?

![Capa do Livro The DevOps Handbook](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a8xd9ef3bk97egzz3pgr.jpg)
Então, decidi escrever sobre DevOps, os desafios de implementar uma cultura DevOps e discutir um pouco sobre que tipo de tópicos devem ser considerados ao tentar implementar o DevOps em toda a organização.

Criar uma cultura DevOps é crucial para as organizações que desejam melhorar a velocidade, qualidade e confiabilidade da entrega de seu software. No entanto, criar essa cultura pode ser desafiador, especialmente quando os desenvolvedores não estão cientes das melhores práticas e valores que uma cultura DevOps deve trazer para a organização. Neste artigo, exploraremos os princípios e práticas-chave do DevOps e como eles podem ser aplicados para superar esses desafios.

## Gene Kim e As Três Maneiras

![Capa do Livro The Phoenix Project](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9gfryd218nk4rsv8kjob.jpg)
Acredito que o conceito DevOps mais fundamental vem do The DevOps Handbook (2016, por Gene Kim, Jez Humble, Patrick Debois e John Willis). Estou falando das Três Maneiras do DevOps, apresentados em um livro anterior: The Phoenix Project (2013, de Gene Kim, Kevin Behr e George Spafford), mas melhores explorados no livro posterior.

A **Primeira Maneira** trata de criar fluxo, desde o desenvolvimento até a operação e entrega. Isso significa suavizar todo o processo pelo qual o código sai da máquina do desenvolvedor e entra em produção, aplicando quaisquer verificações necessárias e avaliando como ele se adequa para se tornar uma nova versão funcional do produto.

A **Segunda Maneira** trata de criar ciclos de feedback para que todos possam aprender e melhorar com suas experiências. Como está funcionando este código? Há novos bugs ou problemas em relação a comportamentos inesperados? Quanto tempo leva para corrigi-los? Como o usuário está experimentando o produto? O que mais podemos aprender com o produto que poderia nos dar uma visão do que mudanças devemos fazer para torná-lo melhor?

Por fim, a **Terceira Maneira** trata de criar uma cultura de experimentação e aprendizado, celebrando sucessos e falhas e criando um ambiente seguro onde as pessoas se sintam à vontade para correr riscos e experimentar coisas novas.

Em resumo, se eu tivesse que dar uma resposta curta sobre o que é a cultura DevOps, eu alegremente diria que é uma organização que valoriza todas as Três Maneiras e se deixa ser guiada por eles.

## Criando equipes de alto desempenho

![Capa do livro Accelerate](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0xzi0bhp0o5d3kwx5mwd.jpg)
Mas se você precisa de uma abordagem mais tática para aprender como implementar uma cultura DevOps, eu também posso mencionar um outro livro do Gene Kim: _Accelerate - A Ciência para Desenvolvimento de Software Ágil e DevOps: Construindo e Escalando Organizações Tecnológicas de Alto Desempenho_ (2018, por Nicole Forsgren, Ph.D., Jez Humble e Gene Kim). O livro elabora sobre como Kim, Humble e a Dra. Forsgren trabalharam juntos para conduzir a pesquisa anual para o _Relatório Estado de DevOps_ da **Puppet** e a que conclusões chegaram com os dados que obtiveram. É uma ode a todas as _Boas Práticas_ sobre as quais falamos nas últimas décadas, mas agora com dados concretos, metodologia de pesquisa e ciência.

De acordo com o livro, uma cultura DevOps é fundamental para organizações tecnológicas de alto desempenho. É caracterizada por uma compreensão compartilhada dos objetivos e metas da organização, bem como uma disposição para experimentar e aprender com os fracassos. Os líderes desempenham um papel crítico na criação de uma cultura DevOps, criando um ambiente seguro onde a experimentação e a aprendizagem são incentivadas, e promovendo uma cultura de colaboração e responsabilidade compartilhada.

Quando as pessoas desenvolvedoras não têm conhecimento das boas práticas, podem criar gargalos e atrasos no processo DevOps, atrasar a entrega e causar frustração para todos os envolvidos. Para abordar isso, as organizações devem se concentrar em educar as pessoas sobre as melhores práticas de DevOps e por que são importantes. Aqui estão algumas das melhores práticas identificadas por Kim e seus colegas:

-   **Integração Contínua**: Os desenvolvedores devem integrar seu código frequentemente em um repositório compartilhado e usar testes automatizados para identificar erros cedo.
-   **Entrega Contínua**: As mudanças de código devem ser construídas, testadas e implantadas automaticamente na produção.
-   **Monitoramento e Logs**: As organizações devem ter sistemas automatizados de monitoramento e logs para identificar e responder rapidamente aos problemas.
-   **Infraestrutura como Código**: A infraestrutura deve ser tratada como código e gerenciada através de sistemas de controle de versão para que as mudanças possam ser facilmente rastreadas e gerenciadas.
-   **Colaboração**: As equipes devem trabalhar em colaboração e compartilhar a responsabilidade pela entrega e suporte de seus sistemas.

## O Surgimento das Equipes de Engenharia de Plataforma

Outra tendência-chave em DevOps é a ascensão das equipes de Engenharia de Plataforma. Essas equipes se concentram na construção e manutenção da infraestrutura e plataformas subjacentes que permitem que as equipes de entrega de software trabalhem de maneira mais eficiente e eficaz. Elas criam padronização e automação em torno dos componentes de infraestrutura principais, como bancos de dados e redes, para que as equipes de desenvolvimento possam se concentrar na construção de aplicativos em vez de se preocupar com a infraestrutura subjacente. Ao fornecer uma base sólida para as equipes de DevOps trabalharem, as equipes de Engenharia de Plataforma ajudam a melhorar a velocidade, qualidade e confiabilidade da entrega de software.

Considere por um minuto o que qualquer pessoa desenvolvedora de backend tem que se preocupar ao criar um serviço para uma API REST e imagine toda o ruído relacionado a DevOps adicionado a isso para tornar esse serviço operacional. É esse o problema que uma equipe de Engenharia de Plataforma se propõe a resolver. Eles cuidam de todo o "encanamento" (citando Armon Dadgar, co-fundador e CTO da Hashicorp) em relação a rede, automação, segurança, balanceamento de carga, serviços de cache, proxies reversos, firewalls, serviços em nuvem, serviços de observabilidade (logs, métricas, rastreamento) e os disponibilizam como serviços para as pessoas Engenheiras de Software, para que elas não precisem entender tudo isso (contêineres, Kubernetes, malha de serviço, tudo o mais) para levar seus serviços à produção, aproveitando toda a estabilidade, segurança e disponibilidade entregues pela plataforma.

## SRE como Motor para Ciclos de Feedback

Site Reliability Engineering (SRE) é outra metodologia que combina engenharia de software e operações para criar sistemas de software altamente escaláveis e confiáveis. O SRE enfatiza a importância de automatizar tarefas repetitivas, reduzir o impacto das falhas e projetar sistemas para resiliência e escalabilidade. As equipes de SRE trabalham em estreita colaboração com as equipes de desenvolvimento para garantir que as aplicações sejam projetadas para serem altamente disponíveis e que possam se recuperar rapidamente de falhas.

Além disso, o SRE se baseia no fato de que a Confiabilidade pode ser projetada. Quero dizer, como você pode tornar um serviço mais confiável? Bem, o SRE trabalha para entender quais indicadores devem ser usados para definir a confiabilidade (SLIs), como tempo de resposta ou taxas de erro. Então, a equipe, juntamente com os especialistas em negócios e partes interessadas, tenta descobrir qual é o nível aceitável de falha para esses indicadores (SLOs), ou seja, qual é o ponto de inflexão em que todos concordam que não vale a pena tentar evitar falhas (talvez porque isso torne muito caro ou porque o próprio usuário não notará nenhuma melhoria em sua experiência). Por fim, os Orçamentos de Erro têm um papel a cumprir, ajudando as equipes a saber quando parar de implantar e começar a revisar seus problemas por um tempo. A Observabilidade também está no cerne de tudo isso, usando ferramentas para medir, monitorar e alertar o comportamento inesperado do serviço.

## Conclusão

Em resumo, criar uma cultura DevOps é fundamental para organizações que desejam fornecer software de alta qualidade com rapidez e confiabilidade. No entanto, criar essa cultura pode ser um desafio, principalmente quando os desenvolvedores não estão cientes das melhores práticas e valores que uma cultura DevOps deve trazer para a organização. Ao educar os desenvolvedores sobre as melhores práticas de DevOps e incentivar uma cultura de experimentação e aprendizado, as organizações podem superar esses desafios e criar equipes de entrega de software de alto desempenho. O surgimento das equipes de Engenharia de Plataforma e SRE também pode ajudar a melhorar a eficiência e a confiabilidade dos sistemas de software.