DevOps – Parte 2: Cultura DevOps
Bem-vindo à segunda parte da nossa série sobre DevOps! Neste post, falaremos sobre as práticas que definem essa cultura.
O processo de transição para DevOps requer uma mudança significativa na cultura e mentalidade. Em sua essência, o principal objetivo do DevOps é eliminar as barreiras que existem entre duas equipes tradicionalmente isoladas em silos: desenvolvimento e operações (AWS, 2023).
Embora muitos padrões de DevOps requerem automação e ferramentas, o conceito também exige normas culturais e uma arquitetura que permite alcançar objetivos comuns em uma empresa de tecnologia. Conforme Christopher Little, executivo de tecnologia e um dos pioneiros na adoção do DevOps, afirmou:
“DevOps não se trata de automação, assim como astronomia não se trata de telescópios”.
Contextos importantes que a cultura DevOps representa incluem gestão de alta confiança, liderança de servidor e gestão da mudança organizacional. O resultado é alta qualidade, confiabilidade, estabilidade e segurança a custo e esforço cada vez menores (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Estrutura e Organização
O modo como as equipes são organizadas afeta o modo como os trabalhos são executados. Isso foi constatado pelo Cientista de Computação Dr. Melvin Conway em 1968, através de uma observação em um famoso experimento. Sua observação deu origem ao que é hoje conhecido como a Lei de Conway, a qual afirma que:
“As organizações que projetam sistemas estão limitadas a produzir projetos que sejam cópias de suas próprias estruturas de comunicação”.
Em outras palavras, a estrutura de comunicação e organização de uma equipe ou empresa tende a se refletir na arquitetura dos sistemas que eles produzem.
Para alcançar um fluxo de trabalho rápido entre desenvolvimento e operações, mantendo alta qualidade e obtendo excelentes resultados, deve-se organizar as equipes e o trabalho de acordo com a Lei de Conway (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Em tese, as equipes são projetadas para serem multifuncionais e independentes — capazes de projetar, construir e entregar novos recursos e funcionalidades para o ambiente de produção, sem depender de intervenções manuais ou de outras equipes (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Essas equipes são reduzidas e reúnem engenheiros com habilidades diversas, incluindo Desenvolvimento, Operações, QA e InfoSec. Essa composição torna as equipes autônomas, evitando a necessidade de solicitar suporte a outros grupos (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Comunicação e colaboração
A promoção da comunicação e da colaboração é um dos principais aspectos culturais do DevOps. As equipes estabelecem diretrizes culturais sólidas com relação ao compartilhamento de informações, utilizando aplicativos de chat, sistemas organizacionais de problemas ou projetos, e wikis (AWS, 2023).
Essa estratégia permite incorporar novas descobertas ao conhecimento coletivo da organização, ampliando seu impacto. A integração é realizada por meio de uma comunicação ativa e abrangente de novos conhecimentos (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Tais práticas culturais agilizam a interação entre desenvolvedores, operações e outros setores, como marketing ou vendas, promovendo um alinhamento mais eficaz com relação às metas e projetos da empresa (AWS, 2023).
Responsabilidade Compartilhada
Essencialmente, a cultura DevOps envolve mais colaboração e responsabilidade compartilhada entre as equipes de desenvolvimento e operações, que trabalham em conjunto para criar e manter os produtos (ATLASSIAN, 2023).
Equipes de desenvolvimento e operações devem ser responsáveis pelo êxito ou falha de um produto. Desenvolvedores não apenas desenvolvem e encaminham suas implementações para equipes de operações, mas também compartilham responsabilidades e supervisionam o produto durante todo o ciclo de vida, adotando uma mentalidade “você cria, você gerencia” (ATLASSIAN, 2023).
Os engenheiros de operações podem ser incorporados às equipes de desenvolvimento, para que suas prioridades sejam orientadas com os objetivos das equipes de produtos nas quais estão integrados (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Essa integração possibilita disseminar eficientemente o conhecimento e a experiência operacional dentro de uma equipe específica. À medida que a demanda por conhecimento e capacidade de operações diminui, os engenheiros de operações podem migrar para outros projetos ou compromissos (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Automação de Processos
Um conjunto de plataformas centralizadas e ferramentas idealmente automatizadas é essencial para que qualquer equipe de desenvolvimento possa provisionar recursos de maneira independente, incluindo a criação de ambientes, pipelines de implementação, ferramentas de testes automatizadas, paineis de monitoramento, entre outros (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Isso permite que as equipes de desenvolvimento dediquem mais tempo à construção de funcionalidades, em vez de lidar com toda a infraestrutura necessária para entregar e dar suporte a esses recursos (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Como resultado, a equipe deixa de ser prejudicada por requisitos, como a necessidade de abrir um ticket para a equipe de operações realizar uma alteração na infraestrutura, evitando o cenário em que uma tarefa que deveria ser concluída em segundos acaba levando dias ou semanas (ATLASSIAN, 2023).
Feedback Contínuo
O fluxo de informação rápido, frequente e de alta qualidade por toda a organização é fundamental para se obter qualidade, confiabilidade e segurança no sistema de trabalho. Esse feedback contínuo permite detectar e remediar problemas enquanto são menores, mais baratos e mais fáceis de corrigir. Além disso, essa prática evita que problemas sejam escalados e gera aprendizado organizacional que são integrados em trabalhos futuros (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Essa prática envolve a identificação e notificação de qualquer falha no sistema. Resultados de testes de código claros e abrangentes são disponibilizados para os desenvolvedores o mais rápido possível. Dessa forma, a equipe está ciente de quaisquer falhas de produção, deficiências de desempenho ou erros relatados (ATLASSIAN, 2023).
Vale ressaltar que tal abordagem se aplica a qualquer equipe, envolvendo todos os colaboradores necessários para a identificação de falhas e sua resolução.
Melhoria Contínua
Em DevOps, a norma cultural de melhoria contínua refere-se à prática constante de avaliar e aprimorar os processos, sistemas, ferramentas e colaboração dentro de uma organização. Essa abordagem busca identificar oportunidades para otimização, correção de falhas, aprimoramento da eficiência e garantia de melhorias graduais e consistentes ao longo do tempo.
Essa prática inclui estabelecer uma cultura de aprendizado justa, considerando os incidentes e acidentes inevitáveis e suas respostas justas. O Dr. Sidney Dekker, contribuinte na definição de alguns dos principais elementos da cultura de segurança e criador do termo “cultura justa”, escreveu:
“Quando as respostas a incidentes e acidentes são percebidas como injustas, isso pode prejudicar a investigação de segurança, gerando medo em vez de atenção nas pessoas que desempenham funções críticas para a segurança. Isso, por sua vez, torna as organizações mais burocráticas em vez de mais cuidadosas, promove o sigilo profissional e incentiva comportamentos de evasão e autoproteção”.
Sendo assim, em vez de mencionar, culpar e envergonhar uma pessoa que causou alguma determinada falha, é preferível reforçar continuamente o valor das ações que identificam e compartilham mais amplamente os problemas. Isso possibilita transformar informações em conhecimento, melhora a qualidade e segurança do sistema e fortalece as relações dentro de toda a organização (KIM, HUMBLE e DEBOIS, “et al”, 2018).
Esse artigo foi escrito por André Carvalho, Engenheiro DevOps na SysMap.
No próximo post, mergulharemos mais a fundo nas práticas DevOps. Confira a série completa: