Em um post 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 estas ondas se formarão em breve. E abordei uma quarta tendência, DevOps, que quero debater com mais profundidade aqui.
Indiscutvelmete 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 numero e complexidade das aplicações, começou-se a criar os CPDs (Centros de Processamento de Dados) que agrupavam estas 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”, onde nem mesmo era necessário 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 haviam fitas ou discos para trocar. Com o alto nivel de automação proposto pelo modelo de computação em nuvem os data centers passam 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. Isto significa que os sistemas devem ser construídos e entregues rapidamente e as inevitáveis correções e evoluções tendem a serem efetuadas continuamente, quase que em ritmos mensais, semanais ou ate mesmo diários.
Isto 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 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.
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 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 esta organização? Porque não tornar 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 estas empresas inovadoras como benchmarks para suas próprias organizações. O conceito por trás deste 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 desta primeira versão adicione funcionalidades adicionais de forma contínua.
Além disso, ao invés 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 este 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 , e fazer o download grátis do livro “DevOps for Dummies” , que sem brincadeira, dá uma boa visão inicial do conceito.
[Crédito da Imagem: Desenvolvimento – ShutterStock]