DevOps já é realidade no mercado de TI
DevOps é uma evolução nas práticas que chamamos de gestão do ciclo de vida dos sistemas ou Application Development Life cycle Management (ADLM).
Um assunto que vem despertando mais e mais interesse é o conceito de DevOps e isso é fácil de comprovar. Basta ir ao Google Trends, colocar DevOps como keyword e ver o gráfico mostrando que o nível de interesse cresce rapidamente. E imaginar que em 2011 esse era um tema praticamente inexistente como palavra chave de buscas.
Pesquisando aqui e ali achei um relatório muito interessante, chamado “2013 State of DevOps Report”, publicado pela Puppet Labs. O relatório foi feito a partir de uma pesquisa com 4 mil profissionais de TI, tanto de operações, como desenvolvedores. Ele mostra que a adoção desta prática está acelerando. Os números mostram que 63% dos pesquisados disseram que suas empresas já adotam o conceito e entre os benefícios reportam que conseguem entregar código 30 vezes mais rápido e com 50% menos falhas.
Ora, simplesmente por esses números, creio que todo executivo responsável pelo que chamamos TI nas empresas devem, no mínimo, estudar o assunto. Ignorá-lo pode significar perder excelente oportunidade de virar o jogo, ou seja, desenvolver e entregar sistemas muito mais rápido do que hoje. Esta é uma demanda insaciável. O tempo é cada vez mais reduzido e a competição no cenário de negócios vem de todos os lados. As áreas de TI que não conseguem acompanhar o ritmo das demandas do negócio tendem a se tornar secundárias. Perdem a oportunidade de ser contributivas para novos negócios e acabam apenas responsáveis pela “casa das máquinas”, ou seja, necessário, mas simplesmente operacional. Como sugestão de leitura para entender melhor o conceito recomendo este paper: “What exactly is DevOps?”.
DevOps é uma mudança das práticas convencionais de desenvolvimento e entrega de sistemas. Provoca, claro, reações contrárias, como o famoso “não é novidade, sempre fizemos isso”, mas, por outro lado gera benefícios de mudanças comportamentais, como uma maior colaboração entre desenvolvimento e operações. Estes setores sempre atuaram de forma compartimentalizada, com objetivos diferentes. É absolutamente necessário para as empresas criarem coisas novas e de forma rápida, para explorar as janelas de oportunidade que cada vez mais se encurtam. Por outro lado, operações precisam garantir a estabilidade do ambiente operacional de TI. Esta é sua missão e qualquer novidade que perturba seu ambiente não é bem vista. O desafio é como conciliar estes objetivos divergentes. Tem até uma piada que mostra esta divergência de forma bem humorada: “ Confuse of Dev or Ops? Simple rule: if you are praise for web site success, you are Dev; if you are blame when web site down, you are Ops”.
A questão da integração entre desenvolvimento e operações é fundamental. Apenas olhar um lado da equação não é suficiente. Por exemplo, nos últimos anos vimos uma verdadeira explosão dos métodos ágeis, com encurtamento significativo dos prazos de desenvolvimento. Mas o deployment dos sistemas não avançou na mesma velocidade. A causa é direta: falta de colaboração entre os setores de desenvolvimento e operações. Implementar métodos ágeis sem mudança nas práticas que envolvam o deployment (operações) apenas piora as coisas. O mesmo acontece quando o setor de operações busca criar processos mais padronizados, como adoção de práticas como ITIL, e deixa em segundo plano a velocidade que o desenvolvimento demanda. O resultado de tentarmos otimizar os dois lados da equação, desenvolvimento e operações, de forma estanque, é a criação de mais barreiras e burocracias, gerando menos eficiência. Tiro n’água.
O conceito de DevOps começou a despertar atenção quando se descobriu que as principais empresas do mundo da Internet como Google, Amazon, Facebook, Twitter e outras o adotaram como prática básica. As grandes empresas da Internet apresentam números impressionantes. Por exemplo, a Amazon faz uma mudança em seus sistemas, em média, uma vez a cada 11,6 segundos!
Outros benefícios que estas empresas conseguiram foi se recuperarem muito rapidamente e os números da pesquisa mostram uma taxa de falhas bem baixa. Voltando ao exemplo da Amazon, apenas 0,001% dos deployments causaram uma pane (outage) no sistema. A média de falhas geradas pelas empresas que adotaram DevOps é cerca de 50 vezes menor em comparação das que não usam esta prática. Imaginem o que é reduzir em 50 vezes o numero de falhas! Muito menos esforço e recursos dispendidos em refazer coisas que já deveriam estar prontas e muito mais confiabilidade nos deployments. Cada vez mais fundamental em um ambiente de negócios hiperconectado, com usuários acessando seus sistemas baseados em nuvem, via smartphones e tablets.
DevOps é uma evolução nas práticas que chamamos de gestão do ciclo de vida dos sistemas ou Application Development Life cycle Management (ADLM). Demanda tecnologia sim, mas principalmente mudanças culturais, funcionais e organizacionais em TI. Em termos de tecnologia, o quadrante mágico do Gartner coloca duas empresas, IBM e Microsoft, como líderes, ao lado de empresas menores como Rally e CollabNet. Instrumentação tecnológica para automação do ciclo de vida, como controle de versões e deployment automático de código é essencial, mas é necessário ir além. As principais barreiras são o desconhecimento do conceito (e muito frequentemente a confusão que apenas implementar método ágeis resolve. E já vimos que não, pois apenas endereça um lado da equação), cultural (ambiente que não incentiva colaboração), e falta de capacitação, tanto gerencial como dos profissionais técnicos, no desenvolvimento e em operações. O diálogo entre desenvolvimento e operações é fundamental.
Importante frisar que DevOps não implica que os desenvolvedores vão operar seus sistemas. Não, esta é a função do grupo de operações. O que DevOps incentiva é um processo colaborativo entre estes dois setores estanques, de modo que eles atuem em harmonia, criando uma prática de entrega contínua de software. Não existe mais a barreira do desenvolvimento parar o processo, criar um protocolo de solicitação ao grupo de operações e aguardar que este setor responda. Os dois setores atuando em conjunto fazem com que o processo seja continuo, ou seja, sai-se do código para a nuvem de produção, sem interrupções. Em resumo, vale a pena ler a pesquisa e refletir. E aí, indagar, porque ainda não adotamos DevOps?







