Em um post anterior falei sobre os princípios do Lean Startup. Um deles trata-se do deploy contínuo. A ideia deste princípio é que o tempo desde a finalização da construção de um recurso até a sua disponibilização em produção seja o menor possível. No post de hoje eu falo sobre o DevOps, uma cultura importante no desenvolvimento de software para facilitar a agregação contínua de valor ao produto em desenvolvimento.
Em projetos ágeis, a missão da equipe de desenvolvimento é entregar continuamente o que o cliente solicita dentro do tempo acordado, a fim de estar sempre agregando valor ao negócio. A equipe de desenvolvimento trabalha de forma a estar sempre pronta para responder às mudanças com agilidade. Já a missão da equipe de infra em geral é manter tudo funcionando de forma estável, a fim de manter e proteger o valor do negócio. Diante deste cenário podemos perceber um conflito, que pode ocorrer em muitas organizações. Vejamos… os desenvolvedores querem subir para produção novas versões da aplicação, entregando novos recursos para o cliente. Ou seja, temos mudanças! Por outro lado, a equipe de infraestrutura impõe algumas barreiras às mudanças com o intuito de evitar incidentes e possíveis downtimes, protegendo o valor do negócio. Assim, temos de um lado uma equipe que está sempre realizando mudanças para agregar valor ao negócio, enquanto de outro lado temos uma equipe evitando mudanças a fim de proteger o valor do negócio. Daqui em diante vou me referir à equipe de desenvolvimento como equipe de dev e equipe de infraestrutura como equipe de infra.
As equipes de infra em geral não tem conhecimento sobre o ambiente de desenvolvimento e trabalha de forma mais manual, enquanto a equipe de dev não tem total conhecimento sobre o ambiente de infra, seus processos e rotinas. Geralmente a equipe de desenvolvimento tem dificuldades e às vezes não tem nem meios de garantir que suas alterações não vão quebrar sua aplicação em produção. Não é à toa que frequentemente deparamos com incidentes após o deploy em produção e, em alguns casos, até rollbacks de release, ferindo a entrega acordada entre equipe e cliente.
Diante das mudanças na TI nos últimos anos e com a ascensão da agilidade no desenvolvimento de software, não se pode mais permitir que este conflito continue impedindo que as entregas sejam feitas de forma rápida e contínua. É preciso que se criem meios para que o negócio flua, evolua e aumente o seu valor agregado ao mesmo tempo em que garanta a proteção do valor alcançado até então. Simplesmente ter uma estrutura que garanta um bom uptime na aplicação não é garantia de sucesso. Pois de que adianta ter um bom uptime se não se pode agregar valor ao negócio com agilidade?
Com o intuito de resolver estes conflitos surgiu a cultura DevOps. A ideia é que infra e dev tenham uma relação saudável de colaboração, sem divisões. O DevOps mantém o alinhamento do time de desenvolvimento (Dev) com o time de infra/operações(Ops) a fim de acelerar as entregas em produção com qualidade. Há diversas formas de aplicar o conceito de DevOps. Mas em linhas gerais trata-se de criar uma linha de produção para o desenvolvimento de qualidade em produção. Idealmente, esta linha de produção deve ser construída de forma a permitir que os desenvolvedores possam realizar o deploy sem a necessidade de requisitar operações da equipe de infra, uma vez que o processo deve ser automático. Além disso, esta linha de produção deve estar preparada para responder aos possíveis incidentes com agilidade e de forma confiável.
O conceito de DevOps é em geral aplicado com o auxílio de ferramentas de deploy automatizado, gerência de configuração, orquestração de servidores e mecanismos e ferramentas de controle e monitoramento da aplicação em produção. É recomendável que o especialista em DevOps seja um profissional experiente, que tenha conhecimento da aplicação e do ambiente de desenvolvimento, além de ser um profissional sênior em infraestrutura. Ter bom background em desenvolvimento e metodologias ágeis também são fatores importantes para o especialista em DevOps.
A implantação da cultura DevOps traz ganhos tanto para as equipes de dev quanto para as equipes de infra. A infra se torna mais organizada e ao mesmo tempo mais eficiente e ágil. A equipe de infra deixa de administrar e passa a desenvolver a infraestrutura. A criação de novos ambientes se torna mais rápida e segura ao mesmo tempo em que todos os ambientes são mantidos de forma padronizada e sob controle. Já para a equipe de dev podemos enumerar ganhos como um ambiente de trabalho mais adequado e padronizado ao mesmo tempo em que o deploy da aplicação se torna mais rápido, padronizado e seguro. Para a organização como um todo podemos enumerar ganhos como o fim da divisão entre infra e dev, participação de ambas as equipes no planejamento do ambiente de produção, facilitando o alinhamento das equipes e o monitoramento da aplicação.
A cultura DevOps pode trazer muitas melhorias para o desenvolvimento de software, facilitando o trabalho de todas as equipes e permitindo entregas contínuas e com qualidade, que é um dos pilares do Lean Startup.
E na sua empresa, como é implantada o DevOps? Compartilhe com a gente nos comentários!
Até o próximo post!
Igor, aqui no STF estamos usando muito o DevOps para tentar resolver os desencontros infra-desenv. Com o tempo a gente vai aperfeiçoando o processo e os times conseguem trabalhar com mais eficiência.