DevOps Lifecycle

O que é DevOps?

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.

Disciplinas DevOps
Disciplinas DevOps

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

  1. Desenvolver um script (bash, por exemplo) para a realização desse procedimento;
  2. Generalizar e parametrizar o script para que possa ser executado para qualquer usuário e qualquer servidor
  3. Versionar o script (no git, por exemplo) e permitir que o time tenha sempre acesso à última versão e possa colaborar com ela
  4. Desenvolver uma automação para que esse script seja enviado para o servidor ou ambiente em que ele deveria ser executado
  5. 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.

Publicado por

Grazi Bonizi

Coordeno a trilha de Arquitetura .Net no The Developers Conference, compartilho código no GitHub, escrevo no Medium e no Blog da Lambda3, e participo de Meetups e PodCasts normalmente sobre DevOps, Azure, .Net, Docker/Kubernetes e DDD

Um comentário em “O que é DevOps?

Deixe uma resposta