Em um artigo anterior, citei algumas tendências para 2014, algumas bem visíveis, como a consolidação das cinco ondas tecnológicas (cloud, mobilidade, social business, Big data e IoT), e outras que vão despertar muita curiosidade, como sistemas cognitivos e impressoras 3D. Serão realidade em mais alguns anos, mas em 2014 vamos ver uma maior conscientização que essas ondas se formarão em breve. E abordei uma quarta tendência, DevOps, que quero debater com mais profundidade aqui.
Indiscutivelmente que o mundo está cada vez mais acelerado e dependente de software. Software está em todos os lugares.
Quando falamos em software, podemos analisar dois momentos importantes: a fase de desenvolvimento e testes, e a fase de operação. Nos primórdios da computação, nos anos 50, o programador em um computador como o IBM 1401 escrevia o programa e ele mesmo o operava. Com o surgimento dos mainframes /360 e o aumento do número e da complexidade das aplicações, começaram-se a criar os CPDs (Centros de Processamento de Dados), que agrupavam essas máquinas que ficavam em locais de acesso restrito. Os desenvolvedores ficavam fora, em um setor de desenvolvimento, e entregavam aos operadores os sistemas e programas para eles operarem. Criou-se a divisão entre desenvolvimento e operação.
Com a evolução tecnológica e a adoção dos modelos cliente-servidor e web applications, a computação se disseminou muito rapidamente. A automação também criou o conceito de “lights out data center”, no qual nem mesmo era necessária a presença de operadores. A profissão de operador de computador se extinguiu, como os datilógrafos e operadores de telex. Os operadores passaram a ser sysadmins (administradores de sistemas), pois os computadores praticamente operavam sozinhos. Já não havia fitas ou discos para trocar. Com o alto nível de automação proposto pelo modelo de computação em nuvem, os data centers passaram a ser locais quase desertos. Um exemplo é um dos mega data centers do Facebook, com 45.000 m², que opera 24×7 com milhares de servidores em cloud e apenas 35 funcionários.
Com a crescente digitalização da sociedade, as empresas passaram a ter uma extrema dependência de seus sistemas. Um sistema fora do ar por algumas horas provoca danos que podem afetar o resultado anual de uma grande corporação como um banco, uma empresa aérea ou um varejista. Além disso, o cenário de negócios instável da sociedade moderna não comporta mais esperas por meses para se ter um sistema operando. As janelas de oportunidade se estreitam cada vez mais. Isso significa que os sistemas devem ser construidos e entregues rapidamente e as inevitáveis correções e evoluções tendem a ser efetuadas continuamente, quase que em ritmos mensais, semanais ou ate mesmo diários.
Isso nos leva aos desenvolvedores. 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 mesmos, para um modelo de serviços, com pontos de contato com o mundo exterior por meio 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 desse 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.
Aí me parece que surge um conflito. De um lado, o modelo organizacional que envolve o ciclo de vida dos sistemas é dividido em uma área que desenvolve e testa os aplicativos e em outra que os opera. Existem processos e regras que criam barreiras entre eles e como resultado uma aplicação de uma correção em um sistema é lenta para os tempos atuais. As estruturas organizacionais foram desenhadas para os data centers cliente-servidor e mainframes, com os setores de desenvolvimento e operação estanques e isolados.
Por que não repensar essa organização? Por que não tornar a operação parte integrante do processo de desenvolvimento? As aplicações desenhadas para o paradigma de cloud são baseadas em conceitos diferentes das desenhadas para cliente-servidor. Os recursos de resiliência e monitoração agora fazem parte da aplicação em si. Um exemplo é o caso da Netflix. Creio que os CIOs devem começar a usar essas empresas inovadoras como benchmarks para suas próprias organizações. O conceito por trás desse modelo é o DevOps.
Os processos de criação de sistemas 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 dessa primeira versão, adicione funcionalidades adicionais de forma contínua.
Além disso, em vez de equipes de desenvolvimento, teste e operação separadas, os profissionais são agrupados em equipes em torno de serviços ou conjunto de serviços e funcionalidades. O resultado é que temos multidisciplinaridade com desenvolvedores e pessoal de operação trabalhando de forma integrada e colaborativa. Portanto, DevOps representa uma ruptura na cultura tradicional de desenvolvimento e gestão do ciclo de vida das aplicações. 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.
E para 2014? Na minha opinião, esse conceito vai começar a ser debatido com mais intensidade e aos poucos adotado pelas organizações. Ainda é visto como válido apenas para start-ups do mundo da Internet, mas pouco a pouco as empresas como bancos, varejos etc. vão admitir que o conceito é valido para elas também. Sugiro olhar a estratégia da IBM quanto a DevOps neste link, e fazer o download grátis do livro “DevOps for Dummies”, que, sem brincadeira, dá uma boa visão inicial do conceito.