O que é? O que faz? Como funciona? Do que se alimenta?
Dívida técnica
Em empresas tradicionais de tecnologia, as equipes de desenvolvimento e operações de TI costumam trabalhar de forma isolada.
Os programadores desenvolvem a aplicação e tem por objetivo produzir o máximo de funções e entregar o máximo de valor possível aos clientes, a equipe de operações é responsável por manter essas aplicações e disponibilizá-las para os clientes, deploys constantes podem ser uma ameaça à estabilidade do serviço, que costuma ser a principal métrica de avaliação da equipe de operações.
Essas equipes, por não se comunicarem e por terem, em sua essência, objetivos e métricas diferentes de avaliação, acabam funcionando de forma concorrente. Gerando um panorama em que existem aplicações e infraestruturas complexas, mal documentadas e frágeis.
Na tentativa de corrigir problemas com esse sistema complexo, são realizadas as famosas “gambiarras” e ficam para trás coisas por fazer e por consertar, sempre existe aquele bloco de código que tem que ser reescrito mas que acaba ficando esquecido. Esse é o início da dívida técnica.
Com o aparecimento de novas features e produtos, essa dívida só tende a aumentar. Os problemas inerentes ao sistema já em funcionamento ainda persistem e atrapalham o desenvolvimento dos novos sistemas.
Com o passar do tempo, a carga de trabalho está cada vez maior e a dívida, crescendo a juros compostos. Chega um momento em que a menor mudança, acarreta em grandes problemas, levando a situações insustentáveis de ritmo de trabalho.
Como o DevOps resolve essa dor
Com o advento do DevOps, equipes de desenvolvimento e operações começam a trabalhar de forma conjunta. A programação começa a entrar no mundo de operações na forma de automatização de deploy, testes automatizados e etc.
Equipes pequenas implementam seus recursos independentemente, testam suas soluções em ambientes de produção de forma automática e vêm sua solução chegar até os clientes de forma rápida e segura, sempre com a possibilidade de voltar à última versão estável em casos de erro.
De forma ideal, essas equipes permanecem com a mesma formação e continuam incrementando o mesmo serviço, recebendo constante feedback dos clientes, para corrigir erros sem deixar dívida técnica.
Com este ciclo do DevOps, as aplicações são desenvolvidas, entregues ao cliente, erros são corrigidos e a aplicação é incrementada de acordo com as necessidades do cliente. A entrega contínua de recursos se torna rotina, sem o estresse e o caos de um grande deploy, que costuma ser realizado durante a madrugada, como o caso desse texto.
Um pouco mais da cultura DevOps
O DevOps evolui ainda mais quando se trata de mudança cultural das equipes. Mais do que técnicas de entrega de produto ao cliente, o DevOps trata de constante evolução da equipe do ponto de vista profissional.
O tempo da equipe é valorizado, decisões são tomadas com base em medições. Não se gasta tempo implementando código que não funciona ou que não resolve um problema.
Com uma cultura colaborativa, onde é possível cometer erros e, ao invés de ser punido, aprender com eles, o desenvolvimento pessoal e da equipe está sempre em foco, e esse desenvolvimento é revertido em melhores soluções para os clientes.
Referências
Manual de DevOps – como obter agilidade, confiabilidade e segurança em organizações tecnológicas. Gene Kim, Jez Humble, Patrick Debois e Jhon Willis
DevOps: rompendo a barreira entre desenvolvimento e operações – Atlassian