Desenvolvimento

14 out, 2013

Como o DevOps pode solucionar os problemas de desenvolvimento nesse mundo tão tecnológico

Publicidade

As quatro ondas tecnológicas que estão quebrando sobre nós, como big data, mobilidade, cloud computing e social business estão nos obrigando a repensar nossos conceitos, muitos deles arraigados e consolidados por algumas décadas de experiência profissional.

Vivemos em uma sociedade hiperconectada, com smartphones, tablets  e outros dispositivos móveis fazendo parte de nosso dia a dia. A velocidade das transformações é alucinante e aumenta a cada dia. Nesta nova sociedade digital, os ciclos acelerados fazem com que empresas líderes de um ciclo não tenham a sua sobrevivência garantida no próximo. Com a crescente digitalização da sociedade, todos setores de negócio passam a ser afetados em maior ou menor grau pela tecnologia digital. Basta ver o iPhone, que surgiu há seis anos atrás e o tablet, em 2010, como em tão pouco tempo transformaram os conceitos de mobilidade e inclusive derrubaram empresas tradicionais da era anterior como a Nokia.

Esta constante busca por inovação e mudanças está em toda parte, em todos os setores de negócio. Portanto, é inquestionável que inovação é fundamental e que tecnologia é um dos principais fatores de ruptura de qualquer setor de indústria. Mas, apesar da importância da tecnologia, os setores de TI não estão tendo boa cotação como inovadores.

Os atuais processos de desenvolvimento e gestão do ciclo de vida das aplicações, foi baseado no conceito que o sistema era desenhado para ser praticamente estático. As modificações, sejam por aspectos regulatórios ou incremento de determinadas funcionalidades, eram acumuladas e embutidas em novas versões do software, em ciclos de no mínimo um ano entre estas mudanças. Este modelo funcionou muito bem nos últimos vinte anos, mas começa a dar claros sinais de esgotamento. O mercado demanda mudanças urgentes e os smartphones e tablets mostraram que o fator essencial para vencer é proporcionar uma boa experiência de uso aos usuários dos sistemas. E esta busca por melhores experiências deve ser contínua. As evoluções sistemáticas fazem com que repensemos o ciclo de vida das aplicações (ALM, Application Lifetime Management), de longos períodos de requerimentos e desenvolvimento para um modelo em contínuo “estado beta”, ou seja, em evolução permanente a intervalos cada vez mais curtos. Atualizações não são mais anuais, mas sim mensais, semanais ou mesmo diárias!

Os desenvolvedores já haviam dado um passo nesta direção ao adotarem o método ágil para desenvolvimento. Mas esta aceleração do processo de desenvolvimento não foi estendido para toda a cadeia de valor da aplicação, que vai do desenvolvimento ao usuário final. Ficou concentrada na otimização do próprio processo de desenvolvimento, ou seja, limitada aos próprios desenvolvedores.

O que precisamos é de um novo modelo, como o conceito de DevOps, que basicamente propõe que os processos de desenvolvimento e operação do aplicativo atuem integradamente, de modo a criar um fluxo contínuo de novas experiências, que cheguem rapidamente nas mãos de quem vai apreciá-las, ou seja, os seus  usuários.

O DevOps demanda mudanças culturais e tecnológicas. Culturais pois incentiva o desenvolvimento contínuo e colaborativo, de forma similar às comunidades open source. No modelo open source se codifica e depois define-se os requisitos… Seus modelos organizacionais são diferentes do modelo tradicional, hierárquico, baseado em comando e controle. O open source criou um modelo em rede, com meritocracia como forma fundamental de criação de lideranças e colaboração ao invés de atuação em silos. Demanda também mudanças tecnológicas pois exige um alto nível de automação para gerenciar de forma única todo o ciclo de vida da aplicação.

O novo cenário tecnológico, com múltiplas e diferentes tecnologias, é altamente desafiador. Uma aplicação tem que rodar com eficiência em um ambiente de nuvem e utilizar os diversos recursos disponibilizados em smartphones e tablets muito diferentes entre si.

A própria arquitetura das aplicações tem que ser reengenheirada. De modelos monolíticos, altamente integrados e fechados em si mesmo, para um modelo de serviços, com pontos de contato com o mundo exterior através de um ecossistema de APIs. Na prática, nenhuma aplicação é uma ilha isolada. Ela deve proporcionar experiências positivas para seus usuários e portanto, deve ser desenhada para criar interfaces com as plataformas de mídia social para eles compartilharem suas ações. Um outro exemplo são interfaces que permitam obter dados sobre a pegada digital deste usuário (Big Data) de modo a aumentar a amplitude de sua experiência, como  identificando e agindo de acordo com o contexto em que o usuário está inserido a cada momento de suas interações com a aplicação.

Os processos de criação de sistema sofrem profundas mudanças com o conceito de DevOps. As extensas e demoradas listas de requisitos funcionais que tentavam ser as mais amplas possíveis, cedem lugar a um conceito baseado na proposta de “lean startup”, que propõe criar uma base funcional que opere de imediato com o que seja considerada a funcionalidade mais valiosa do aplicativo e, depois, a partir desta primeira versão, adicione funcionalidades adicionais de forma contínua.

Portanto, o DevOps representa uma ruptura na cultura tradicional de desenvolvimento e gestão do ciclo de vida das aplicações. Ele utiliza os conceitos já consagrados de “agile development” e adiciona as práticas de “lean startup”, criando um novo paradigma. É um processo colaborativo por excelência e demanda atividades em paralelo, e não apenas sequenciais, como na maioria dos processos de desenvolvimento adotados hoje. É, no fundo, uma nova doutrina para criação de produtos de software.

Os CIOs e os executivos de TI responsaveis por produzir software nas empresas não podem ignorar o movimento DevOps. Representa um fator de diferenciação competitiva. Afinal, software é fundamental para qualquer modelo ou processo de negócios. Mas entregar software tarde demais passa a ser risco para o negócio. O DevOps cria um workflow muito mais rápido e ágil.  Sugiro um maior aprofundamento nos conceitos e uma boa fonte de referência é http://www.ibm.com/ibm/devops/us/en/.