DevOps: o mesmo número não serve para todos

Por Colaborador externo | 23 de Fevereiro de 2016 às 08h00

Por Mark Troester*

Pode parecer absurdo, mas ainda há gente de TI que às vezes manifesta saudade daqueles "bons tempos do mainframe". O motivo é que aqueles verdadeiros mamutes, com seus infinitos terminais burros e suas codificações em cartões físicos, pelo menos ofereciam à equipe de TI um controle completo da situação.

Não era permitido, por exemplo, o tal desenvolvedor cidadão e nem era exigido ao homem de TI esta atual convivência nem sempre muito tranquila com os analistas de negócios.

Pois é: as coisas ficaram muito mais complicadas depois da computação distribuída e do empoderamento dos desktops, com seus diferentes sistemas operacionais e outras tantas exigências dessa plataforma múltipla.

É bem verdade que, logo em seguida, as aplicações baseadas em servidor web simplificaram as coisas novamente, com uma relativa onda de centralização e uma nova linha de conforto.

Mas, no cenário atual, com a complexidade trazida pelos dispositivos móveis, a vida do homem de TI e - em especial do desenvolvedor - precisa enfrentar uma quantidade de variáveis e uma complexidade sistêmica até recentemente impensáveis.

Em vez de apenas atualizar o servidor, agora é preciso atualizar cada dispositivo móvel a um ritmo cada vez mais frenético e acompanhando de perto um modelo de configuração que segue a reboque do gosto mutante dos usuários.

Ou seja, estamos diante de uma situação em que a estabilidade operacional deve ser buscada a duras penas dentro de um ambiente de transações e interações no qual a própria população móvel exige (ou introduz, na prática) constantes mudanças nas aplicações.

Como enfrentar esta realidade, e em que medida nossa comunidade pode ser salva pelo novo modelo "DevOps"? Em outras palavras: é realmente útil e necessário um modelo de geração de aplicações que mistura o desenvolvimento e a operação (o "Dev" e o "Op") e um único movimento, espécie de modo contínuo?

A Evolução do DevOps

Surgido na esteira da onda de Desenvolvimento Ágil, o primeiro DevOps foi popularizado na Bélgica, em 2009.

Hoje, passados 15 anos da primeira onda Agile Development e seis anos da primeira onda DevOps, está se tornando claro que esses termos são bastante abrangentes, envolvendo os aspectos de atitude do desenvolvedor, novos padrões de abordagem da questão do código, e nova visão sobre diferentes plataformas, ferramentas e soluções.

O Agile Development, com ciclo de desenvolvimento simplificado (conhecido como scrum) e foco na rapidez de respostas, trouxe uma formidável aceleração para o desenvolvimento. Mas, em contrapartida, tornou a implantação ainda mais difícil, já que grande parte das empresas, com suas estruturas operacionais acostumadas com um ambiente estável e conservador, estava despreparada para suportar a implantação de ciclo rápido.

O DevOps, com suas plataformas, ferramentas e práticas direcionadas para a colaboração entre TI e desenvolvimento, bem como para as metas de entrega rápida de aplicativos (com testes contínuos e não por etapas) exige a aceitação do desenvolvimento e implantação de aplicações praticamente em processo contínuo.

Embora a intenção seja boa e realmente adequada à realidade digital da era mobile, ainda não se pode esperar uma adoção generalizada do conceito de DevOps, devendo-se direcioná-lo prioritariamente para tarefas específicas.

Os atuais ambientes de desenvolvimento podem ser divididos em três categorias: a categoria de baixo código, a de desenvolvimento centrado na app e a categoria propriamente "mobile". Entregar aplicativos nesses três ambientes envolve uma ampla gama de habilidades e ferramentas. Portanto, a abordagem e grau em que o DevOps é utilizado deve variar também.

Baixo-Código = Zero Ops

Em ambientes PaaS de baixo código baseados em nuvem, o modelo DevOps pode se tornar uma espécie de retaguarda. Com o fornecedor gerindo, mantendo e controlando o ambiente de desenvolvimento, o desenvolvedor cidadão ou o analista de negócio ficam aptos a trabalhar no desenvolvimento das interfaces gráficas do usuário (GUI) e em outras características e funções com baixo nível de envolvimento da TI ou setor de desenvolvimento.

Nesses ambientes, os usuários avançados podem facilmente promover aplicações de baixo código. A presença forte do DevOps aqui não é necessária, porque neste caso não existem os ambientes separados que são tipicamente usados para se propagar aplicativos. Neste contexto, o analista de negócios simplesmente faz as alterações que lhe pareçam pertinentes e as remete até a produção para que o processo se conclua.

Aqui, a TI é melhor utilizada como "guardiã", envolvendo-se apenas quando necessário. Tais ambientes que nós chamamos de "zero ops", ou talvez fosse até melhor qualificá-lo como "menos DevOps". Temos aí uma forma de entrosamento em que os usuários de negócios, TI e desenvolvimento ficam muito mais livres para se concentrar em suas áreas estratégicas e competências essenciais, canalizando recursos de forma adequada e aumentando a produtividade através dos seus respectivos domínios.

Desenvolvimento-Centrado = Ops Controlado

As apps mais críticas de negócio, voltadas para altas transações de escala global são as que incidem na categoria de desenvolvimento centrado (deployment centric). O objetivo do DevOps nesses ambientes de códigos intensivos é livrar os desenvolvedores de problemas de implantação, permitindo-lhes se concentrar em sua competência-chave do código escrito.

Quando bem executados, os DevOps podem efetivamente deslocar o esforço do desenvolvimento de aplicativos para a implantação, permitindo a colaboração mais estreita entre o desenvolvimento e a TI. Neste ambiente, um processo DevOps bem gerido pode tornar mais fácil para a equipe de DevOps implantar os aplicativos e gerenciar a implantação, avançando e escalando aplicativos automaticamente com regras de autoescala baseadas na usabilidade.

É por isso que caracterizamos o DevOps nesses ambientes como controlled ops, significando uma colaboração rigidamente controlada pela TI.

Móvel = Ops Estendido

Desde o desenvolvimento até a implantação, manutenção, monitoramento e análise, o termo mobile introduziu novos níveis de complexidade para a entrega de aplicativos. Os desenvolvedores precisam lidar com iOS, Windows e Android, sem mencionar várias versões dentro desses ambientes. Depois, há o próprio ambiente de desenvolvimento - web, nativo ou híbrido.

E, quanto aos dispositivos, há ainda uma enorme variedade de telefones e tablets de várias origens e diferentes gerações. E, ao lado de tudo isso, existem as diversas opções de implantação via lojas de aplicativos públicas e privadas ou diversos serviços de compartilhamento de arquivos.

Finalmente, o usuário final se envolve com o dispositivo de forma nunca antes imaginada, colocando a necessidade de se construir experiências de usuário atraentes e responsivas como uma exigência de grande importância.

Esse cenário que compõe o ambiente é ops estendido - um ambiente altamente colaborativo, onde o desenvolvimento, implantação, manutenção, suporte e até os gestores, se tornam todos parte integrante do sucesso de um aplicativo.

Nas comunicações móveis, todos os integrantes da cadeia de interação precisam ter um lugar no esquema DevOps, já que os aplicativos móveis estão constantemente em movimento, numa transformação permanente impulsionada principalmente pelo feedback do usuário final. A capacidade de fazer atualizações perfeitas e mudanças orientadas ao comportamento do usuário em tempo recorde pode significar o sucesso ou o fracasso de um aplicativo.

As plataformas, ferramentas e colaboração que o DevOps oferece neste ambiente nunca foram tão críticas, na medida que o usuário de negócio deve estar envolvido na concepção e desenvolvimento do aplicativo, bem como na análise de como o aplicativo é usado, o que irá ditar as mudanças a seguir. Quando bem-sucedido, o ops estendido entra em sintonia com os usuários de negócio, mas não os envolve no próprio processo DevOps - que continua pertencendo à alçada da TI e do desenvolvimento.

Em Resumo

O DevOps pode ter impacto sobre todo o ciclo de entrega das aplicações. Seja a partir da melhora na frequência de implantação, o que pode levar à uma disponibilização mais rápida no mercado, ou encurtando os prazos de entrega para novas versões com menor índice de falhas, o objetivo do DevOps é maximizar a previsibilidade, aumentar eficiência, a segurança e tornar menos custosa a manutenção dos mais simples aplicativos móveis até os mais complexos sistemas transacionais.

A chave para o sucesso do DevOps está em aplicar o nível certo de colaboração e empregar as ferramentas certas para garantir que o DevOps melhore a qualidade e produtividade, em vez de impedi-las ou complicá-las.

*Mark Troester é Vice-presidente de Soluções de Marketing da Progress.

Fique por dentro do mundo da tecnologia!

Inscreva-se em nossa newsletter e receba diariamente as notícias por e-mail.