DevOps e agilidade de fato

A engrenagem que faltava

A equipe responsável pela área de TI de uma média ou grande empresa costuma ser dividida em duas verticais que executam papéis bem distintos: Sistemas e “o pessoal da infra”. No primeiro segmento encontram-se os programadores, analistas de sistemas e os profissionais mais ligados ao produto. No segundo grupo encontram-se os DBAs, analistas de produção e redes. Esses profissionais, atuando em times tão segregados, acabam se enxergando como diferentes e muitas vezes isso ocorre por conta das responsabilidades definidas no andar de cima de uma organização, no nível estratégico da empresa e não tático. Essa divisão provoca a cultura do "nós e eles", desencadeando uma série de efeitos colaterais, como uma preocupação excessiva com as responsabilidades da área em detrimento dos objetivos da organização ou do projeto. Provoca também medo na possibilidade de assumir responsabilidades adicionais, falta de sinergia e ambiente pouco propício a colaboração.

Ter uma especialização não é problema. Assumir papéis distintos faz parte até da formação de profissional de TI. Muitos cursos técnicos e superiores ligados a área funcionam com um determinado número de períodos de base teórica e uma segunda parte de especialização. Em alguns casos o primeiro período já é o suficiente para que o aluno se identifique mais com um grupo de assuntos do que com outro. Geralmente o divisor de águas são os algoritmos. Impressionante como alguns tem fascínio por eles enquanto outros os vêem com um certo pavor. Se você é da área de TI talvez você se lembre do momento em que deu de cara com eles ou da reação de colegas quando os viram.

Com a explosão de startups digitais e a evolução das práticas ágeis, as áreas de negócios e as de desenvolvimento começaram interagir mais e, em alguns casos, até a se fundir. Aquela TI completamente isolada agora já tinha uma participação maior no desenvolvimento dos produtos das empresas que iam se tornando digitais. Enquanto o pessoal de infra continuava fora do circuito, cada vez mais essa integração entre desenvolvimento e negócios gerava frutos… mas esses frutos ficavam restritos a essas duas áreas! O restante da empresa e os clientes não viam, de forma explícita, o valor disso.

Então surge o conceito de DevOps, empurrado por esse desenvolvimento ágil, pela facilidade no uso da nuvem e pela necessidade cada vez maior de disponibilizar aos usuários aquelas features que foram desenvolvidas, de forma responsável, com políticas de segurança e performance.

De forma simplificada, podemos definir DevOps como o uso de diferentes disciplinas de TI com o objetivo de desenvolver, testar, disponibilizar, operar e escalonar sistemas, de forma rápida e inteligente. Ou mais simples ainda, é a junção de desenvolvimento e infraestrutura no projeto, no desenvolvimento e no suporte a um sistema.

Com a prática do DevOps, as empresas conseguem obter uma série de benefícios que estão se tornando a norma no mundo digital, sendo o benefício mais evidente o de dar evidência ao desenvolvimento ágil. Apesar do benefício de adotar práticas de desenvolvimento ágeis parecer ser óbvio ao time de desenvolvimento, ele só será visível e percebido em nível organizacional e externo com a prática de DevOps. Estratégias de Entrega Contínua, quando aplicadas de maneira correta, fazem com que usuários ou patrocinadores do projeto consigam ter acesso às funcionalidades desenvolvidas no mesmo ritmo em que elas foram demandadas e executadas pelos programadores. E de forma responsável, sem sustos na hora de utilizar!

A confiança nos sistemas também aumenta com o DevOps. Com a Integração Contínua os desenvolvedores passaram a ficar mais seguros de que, uma mudança no código necessária para fazer uma nova funcionalidade no sistema, não geraria não problemas no restante do sistema. Mas e quanto a ir para produção? A cultura de DevOps permitiu que um sistema pudesse ser avaliado de forma automatizada em termos de segurança, performance e lógica, com foco em produção e escala. Projetos que iniciam com essa mentalidade tendem a ter menos problema depois que vão para produção, pois estarão aptos a receber novas features, a não sair do ar no momento de uma atualização, a respeitar padrões de performance e segurança.

Os custos também acabam reduzidos pelo uso mais eficiente de recursos de infra-estrutura e serviços na nuvem. Um sistema projetado para escalar, com inteligência no provisionamento, é fundamental para que o sistema seja eficiente.

É muito difícil ter uma receita de bolo que vá no nível da quantidade de ingredientes necessários para adoção do DevOps. Mas se você pensar em conceitos como: Integração entre as áreas que desenvolvem e mantém os sistemas, remoção de barreiras, agilidade e respeito à cultura e à estratégia organizacional, você estará no caminho de praticar DevOps. Nos próximos posts eu vou descrever algumas estratégias para implantação do DevOps que podem ajudar.