DevOps e métodos ágeis de desenvolvimento

A atual dinâmica dos negócios exige entregas rápidas de soluções de software para acompanhar e superar a concorrência. Os métodos tradicionais de desenvolvimento de software não foram desenhados para o atual cenário de negócios, gerando um descompasso e atritos constantes entre as áreas de negócios e as equipes de TI. Os métodos ágeis de desenvolvimento de software, como o Scrum, chegaram para tentar reduzir esse descompasso e acelerar as entregas de TI. Entretanto, cria-se um potencial gargalo na implantação dos Sprints (unidade básica de desenvolvimento em Scrum) na operação que muitas vezes não dispõe de recursos de infraestrutura para atender a demanda. Felizmente, o DevOps pode resolver o problema, integrando as equipes e automatizando os processos de desenvolvimento e operação. Dentro dessa abordagem é possível redefinir a estrutura organizacional e processos da TI tradicional.

Aplicar os novos conceitos e organização de TI para uma startup é mais fácil que em organizações já estabelecidas e com um grande volume de sistemas legados. Entretanto, podemos implantar os novos conceitos e ferramentas nos processos de negócios experimentais e evoluir para os processos estratégicos únicos de cada empresa. Entendendo nessa visão que os processos de excelência operacionais e padronizados (pelas melhores práticas ou pela legislação) são apoiados por sistemas integrados (ERP) de mercado.

Qualquer metodologia de desenvolvimento de software tem o objetivo de reduzir os riscos de falhas e aumentar a produtividade. Os métodos ágeis minimizam os riscos em curtos períodos, chamados de iteração, tipicamente menos de uma semana a até quatro. Cada iteração é como se fosse um projeto único, incluindo todas as tarefas de uma nova funcionalidade: planejamento, análise de requisitos, projeto, codificação, teste e documentação. No Scrum, a iteração é conhecida como Sprint.

Os métodos ágeis falham muitas vezes por não considerarem no desenvolvimento os chamados requisitos não-funcionais, ou seja, os recursos necessários da infraestrutura de operação para garantir os requisitos técnicos e de compliance.

Mesmo as organizações de TI que adotam o processo Kanban para acompanhar o desenvolvimento de software encontram descompasso com a operação. O Kanban aplicado ao desenvolvimento de software é um processo que acompanha todas as atividades classificando-as ao longo do período do projeto (em andamento, teste, pronto para o lançamento e liberado). Quando uma funcionalidade está pronta para ser lançada é negociada a data de liberação com a operação. O processo define um limite de WIP (Work In Progress) para cada estágio de desenvolvimento. Se um estágio (coluna) atingir o limite máximo de esforço nenhuma outra atividade estará autorizada a prosseguir, evitando gargalos futuros.

O DevOps é um framework com ferramentas para automatizar o ciclo completo de desenvolvimento e operação de software. O DevOps integra as equipes de desenvolvimento e operação, permitindo a troca constante de informações para reduzir os riscos de implantação, principalmente aos ligados aos requisitos não-funcionais.

Nessa abordagem, teríamos um representante da operação na equipe de Scrum interagindo diariamente e avaliando e recomendando para o desenvolvimento do Sprint. Em desenvolvimentos baseados em Kanban, o pessoal da operação teria a visão completa de todos os estágios de desenvolvimento e seria mais proativo na identificação de possíveis gargalos e tomar ações antecipadas para garantir os prazos de entrega.

Embora defenda a tese que as equipes de desenvolvimento de software de projetos experimentais e estratégicos devam ser próprias da empresa, no caso do representante da operação poderia ser do provedor de Cloud Computing, assegurando dessa forma os recursos necessários para assegurar as entregas.

Não tenho dúvidas que a metodologia de desenvolvimento e ferramentas de software são fatores fundamentais para assegurar a alta competitividade de negócios, passando a ser um ponto estratégico das organizações.