DevOps é CI/CD? O DevOps veio para substituir o Agile? O que é essa tal de “Cultura DevOps”?
Esse é o primeiro artigo de uma série em que estudaremos os fundamentos do DevOps, e como tudo se começa pelo começo, aqui vamos mostrar o que é DevOps, como surgiu, quais suas disciplinas, sua relação com Agilidade e o que uma empresa precisa para ter a cultura DevOps.
Definição
DevOps consiste na união de práticas, processos e ferramentas para entregar e sustentar software com mais integridade e eficiência em todo o seu ciclo de vida. O termo “DevOps” vem da junção dos termos Desenvolvimento e Operações, o que representa um dos pilares no DevOps: a aproximação entre essas áreas, tanto culturalmente, quanto por meio de tecnologias e ferramentas que atravessem ou reduzam esses limites.
Origem
As evidências mais antigas são associadas ao evento DevOpsDays, instituído em 2009 na Bélgica e realizado hoje em diversos países. Lá são discutidos tópicos sobre desenvolvimento de software, operações de infraestrutura e a intersecção entre as áreas.
Desde então convencionou-se de que, para se atingir o objetivo de entregar software melhor e mais rápido, as disciplinas de software que permeiam o desenvolvimento e operações (infraestrutura, manutenção e monitoramento, por exemplo) precisam ser eficientes.
Disciplinas
As disciplinas DevOps são as principais áreas que uma organização pode focar para entregar e sustentar uma solução com maior agilidade e eficiência. Entre elas, podemos citar: Planejamento Ágil / Enxuto (Lean), Versionamento de Código, Integração Contínua, Entrega Contínua, Containers, Infraestrutura Como Código, Utilização de Nuvens Públicas ou Híbridas, Monitoramento e Microsserviços.

Cada uma das disciplinas implica em transformações de processos, ferramentas ou cultura em algum nível. Algumas envolvem uma quebra de paradigma cultural mais profundo, como é o caso do Planejamento Ágil para empresas com processos muito burocráticos, ou utilização de Nuvens Públicas ou Híbridas para empresas que trabalham com dados altamente sigilosos e têm mais confiança em ambientes On Premises (locais). Outras demandam uma transformação cultural menor, como Infraestrutura como Código, que pode ser utilizada On Premises também.
Algumas disciplinas são mais subjetivas e podem surtir efeito a longo prazo, outras são mais práticas e trazem um resultado concreto e facilmente mensurável – com a implementação de integração e entrega contínuas (CI/CD), por exemplo, é possível reduzir deploys que demoravam horas ao serem executados manualmente a apenas alguns minutos.
O DevOps veio pra substituir o Agile?
Planejamento Ágil, ou Práticas Lean, envolvem um conjunto de processos e mudança de mindset para reduzir o ciclo de entregas e permitir a aprendizagem validada. Kanban, Scrum, CMMI ou outras frameworks de trabalho podem ser utilizadas para se alcançar esse objetivo.
Um dos doze princípios do manifesto ágil é “Entregar software frequentemente, de poucas semanas a poucos meses, preferencialmente no menor tempo possível”. Para se atingir isso, práticas de versionamento de código, integração e entregas contínuas podem ser aplicadas também.
Como se pode ver, o objetivo do DevOps é muito parecido com o do Planejamento Ágil. A principal diferença é na abordagem – enquanto o Planejamento Ágil costuma destacar princípios e formas de pensar, técnicas de priorização, transparência e organização de trabalho, no DevOps destacam-se as práticas de engenharia, normalmente mais técnicas.
Para que fique claro, o Planejamento Ágil é uma das disciplinas que o DevOps contempla. Sem ciclos de entrega curtos, ainda que se entregue software em 1 minuto após sua aprovação, ele não trará tanto valor se demorou 1 ano para ser aprovado desde que foi iniciado. Os ciclos de entrega curtos, escopo flexível, proximidade com o usuário e ajustes na estratégia são fundamentais para que produto ou solução atenda as necessidades do usuário e resolva o problema proposto no menor tempo possível.
Porém insistir em técnicas específicas de frameworks ágeis quando há uma resistência muito forte no time ou empresa pode trazer o efeito oposto, causando desgaste entre as pessoas, impactando os prazos e diminuindo a qualidade das entregas.
Independente de usar ou não alguma framework Ágil, o planejamento, distribuição e acompanhamento de atividades deve ser realizado. Seja com uma ferramenta robusta ou um Kanban numa lousa, com ciclos de entrega de uma semana ou um mês, é necessário
- Organizar e distribuir tarefas;
- Garantir a visibilidade do andamento do projeto;
- Trazer indicadores para viabilizar a aprendizagem validada.
A Cultura DevOps
Pode-se dizer que a empresa possui a Cultura DevOps quando a importância da integridade, eficiência e segurança nos processos está presente no dia a dia dos times, e não apenas no desenvolvimento e sustentação do software. Isso muitas vezes se reflete em automações de processos, uso adequado de ferramentas e mindset ágil.
Por exemplo, considere que uma pessoa analista de infraestrutura precisa atribuir permissões de um usuário a um determinado servidor. Essa atividade, como muitas outras semelhantes, tende a se repetir. Para ganhar mais eficiência e diminuir a possibilidade de falha humana, pode-se
- Desenvolver um script (bash, por exemplo) para a realização desse procedimento;
- Generalizar e parametrizar o script para que possa ser executado para qualquer usuário e qualquer servidor
- Versionar o script (no git, por exemplo) e permitir que o time tenha sempre acesso à última versão e possa colaborar com ela
- Desenvolver uma automação para que esse script seja enviado para o servidor ou ambiente em que ele deveria ser executado
- Permitir a execução remota desse script. Assim, uma pessoa autorizada a executá-lo não precisa ter acesso direto ao servidor.
Conteúdo recomendado
Para complementar alguns dos tópicos mencionados aqui, recomendo os conteúdos abaixo:
Developers Should Abandon Agile
Jeff Ries fala sobre como insistir em técnicas específicas de frameworks ágeis quando há uma resistência muito forte no time ou empresa pode trazer o efeito oposto, causando desgaste entre as pessoas, impactando os prazos e diminuindo a qualidade das entregas.
Lambda3 Podcast 88 – Será que o DevOps acabou com a Agilidade?
Nesse podcast, o Giovanni Bassi, Vinícius Quaiato, Emmanuel Brandão e o Victor Hugo debatem sobre a idéia do DevOps ter “acabado” com a Agilidade, também fazendo referências a outros podcasts e conteúdos.
Desmistificando o DevOps
No vídeo abaixo eu trago um conteúdo semelhante, além de falar um pouco sobre carreira e mercado.
Um comentário em “O que é DevOps?”