DevOps: uma metodologia para extrair o melhor das equipes de trabalho
O mercado global de ferramentas para aplicação dessa metodologia atingiu US$ 5,2 bilhões em 2018 e vai praticamente triplicar em 2023, segundo o IDC.
Há algum tempo, em uma galáxia não muito distante, os projetos de tecnologia eram desenvolvidos de uma forma bastante particular: o cliente fazia algumas requisições ao departamento de tecnologia para atender alguma necessidade do seu negócio; o departamento de tecnologia tomava nota, entendia, ou acreditava entender - o problema, desaparecia por um tempo e voltava algumas semanas ou alguns meses depois com um produto finalizado que poderia resolver - ou não - as necessidades do cliente.
Em meio à falta de comunicação, do "cada um fazendo o que deve fazer" sem a participação ativa do outro, as soluções poderiam chegar tarde, mal ou nunca, após uma avalanche de retrabalho, estouro de custos e desperdício de recursos que teria sido evitada por ter aplicado uma metodologia eficaz para levar a cabo o processo.
Mas à medida que o tempo passou, tanto clientes como equipes de tecnologia -sejam internas nas empresas ou fornecedores externos - se deram conta de que trabalhar cada um no seu canto não levava o trabalho muito longe, e que o planejamento e colaboração são fundamentais para o sucesso de um projeto.
Neste contexto, as metodologias se tornaram uma parte fundamental do desenvolvimento de projetos de tecnologia. E entre as diferentes cores e sabores são destacadas as metodologias Ágeis, entre cujos objetivos fundamentais se encontra melhorar a qualidade dos produtos e elevar a satisfação dos clientes, através do processo colaborativo realizado por equipes mais motivadas.
Foi precisamente durante a conferência Agile 2008, realizada em Toronto (Canadá), que se ouviu falar pela primeira vez do termo DevOps, um acrônimo das palavras development e operations (desenvolvimento e operações, em Inglês), que hoje é considerado como uma das metodologias mais bem-sucedidos de desenvolvimento de software e é aplicado por empresas do porte de IBM, Microsoft, Red Hat e AWS, para mencionar alguns.
Assim, DevOps está relacionado às Metodologias Ágeis, com vínculos mais ou menos estreitos conforme as definições de diferentes autores e empresas, que se referem a eles como mundos relacionados, mas independentes ou estabeleceram quase um parentesco de 'mãe e filha'.
Tal é o sucesso de DevOps que uma análise da IDC diz que o mercado mundial de ferramentas para a aplicação desta metodologia atingiu os US$ 5.2 milhões de dólares em 2018 e praticamente triplicará em 2023, quando ele vai chegar a US$ 15 milhões de dólares.
Mas como podemos entender mais facilmente o que é DevOps e quais são os componentes que o tornam uma metodologia de sucesso? Para responder a esta pergunta, SearchDataCenter en Español conversou com Magda Martínez Vélez, Arquiteta de Soluções da Red Hat para a América do Sul e Caribe.
Um por todos e todos ... por todos
Para a especialista da Red Hat, a imagem que melhor descreve DevOps é uma harmonia perfeita entre as áreas de desenvolvimento e operações das empresas, que tradicionalmente tinham trabalhado como 'lados enfrentados' e agora o fazem como uma equipe para alcançar um objetivo comum.
Embora Desenvolvimento e Operações sejam mundos muito diferentes, a ideia não é 'passar a bola' em processos sequenciais intermináveis, mas que sejam amigos e trabalhem de forma conjunta, alavancados em três componentes fundamentais, que Martinez julga ter o mesmo peso dentro do processo:
- Cultura: que as pessoas entendam que o que importa não é o ego e o reconhecimento individual, mas a equipe e o objetivo comum. Já não "sou eu ", mas " somos nós" e " respondemos pelo projeto " não apenas "a parte que me corresponde".
- Processos: a maneira como a empresa dá sentido à visão que quer desenvolver e aproveita a metodologia para obter a meta.
- Tecnologia: são as ferramentas que permitem a equipe trabalhar no desenvolvimento das peças que compõem o produto final e permitem que ele seja trazido para a produção.
Diferente da abordagem tradicional, em que os projetos passavam por estágios sequenciais (um após o outro) de análise, concepção, programação e testes, no mundo DevOps não se pensa em projetos de longo prazo que tem um começo e um fim perfeitamente bem definidos, mas sim em etapas curtas, durante as quais se adiantam processos simples de maneira simultânea.
Magda Martinez usa como um exemplo o desenvolvimento de um controle remoto, que a partir da perspectiva de DevOps não seria planejado a partir do início como um equipamento com mil botões que cumprem todas as funções necessárias, mas que se realizaria por etapas curtas: a primeira seria tão simples quanto um dispositivo com botões para ligar e desligar a TV, aumentar e diminuir o volume e mudar os canais.
À medida em que o projeto progride funcionalidades vão sendo adicionadas. É um processo de melhoria contínua e flexível, que permite fazer ajustes no andamento em prol da qualidade do produto final. Este ciclo de melhorias contínuas é composto por iterações de etapas como planejamento, criação, configuração, monitoramento e colocação em produção.
Uma coisa interessante é que durante o andamento do projeto não se estabelecem prazos rigorosos e imóveis, mas se trabalha com estimativas que, embora possam ser muito variáveis, não devem sacrificar a qualidade do produto final.
A delicada arte de estimar
Enquanto trabalhar com estimativas aumenta a flexibilidade no desenvolvimento de projetos, essas podem variar até 400% com relação à fase de início, como definido por Steve McConnel em seu "cone de incerteza", um conceito utilizado em engenharia de software para descrever a evolução do grau de incerteza para a realização de um projeto.
De acordo com sua abordagem, estimativas iniciais exatas não são possíveis e a única pergunta que podem tentar responder é: Este projeto é viável?
Embora o foco de DevOps seja a integração entre os departamentos de Desenvolvimento e Operações, durante o andamento do projeto também se está trabalhando em conjunto com as áreas de segurança, negócios, controle de qualidade... com todos que devem estar envolvidos na realização do objetivo final.
Outra coisa interessante é que as equipes são tão flexíveis quanto a mesma metodologia, de maneira que pessoas que contribuem com seu conhecimento durante as diferentes fases do projeto podem entrar ou sair, de acordo com as necessidades e exigências: "O interessante é que não há papéis definidos [um princípio que se incorpora desde as metodologias ágeis]. A função se adequa à pessoa, não a pessoa à função. Pode parecer muito caótico, mas realmente não é assim. Estamos tirando o melhor dessa pessoa para um determinado objetivo,” diz Magda Martínez.
Isso implica um trabalho rigoroso de documentação dos processos, não só para que todos estejam bem-informados do andamento, mas também para evitar o que a executiva da Red Hat chama de “heróis organizacionais”, aquelas pessoas que não podem sair de férias porque só eles sabem como fazer algo ou que não podem deixar a empresa porque senão ela acaba.
Os clientes, além disso, são parte fundamental das equipes. Não aparecem unicamente no início do processo para explicar suas necessidades e no final para obter o produto acabado, mas eles estão envolvidos durante todo o desenvolvimento do projeto. Isso, é claro, implica que seus processos também devem estar alinhados com a metodologia.
Serve para todos?
Como vimos, devemos levar em conta que, ao falar de cultura, processos e ferramentas, existe a possibilidade de que nem todas as metodologias sejam aplicáveis por igual - ou simplesmente que, de forma planejada, não se possa aplicar - em todas as organizações. "Não há uma metodologia padrão, senão que tudo irá depender do contexto, de maneira que talvez DevOps funcione em muitos casos, mas para outras pessoas outra metodologia funcione melhor, como Scrum ou um método tradicional" explica Magda Martinez.
De fato, o Gartner prevê que até 2022, 75% das iniciativas de DevOps não devem atender às expectativas devido a problemas relacionados ao aprendizado e mudança organizacional, o que confirma a visão de Martinez no que diz respeito ao peso equitativo entre os três componentes que alavancam a metodologia. A mesma empresa de consultoria estabelece um guia de oito etapas para a implementação correta dos conceitos de DevOps:
- Identifique a equipe inicial
- Selecione o aplicativo que será o ponto de partida
- Defina DevOps de acordo com as necessidades da organização
- Identifique a justificativa ou requisito do negócio
- Defina metas e métricas
- Identifique as limitações ou gargalos
- Desenvolva a cadeia de ferramentas
- Escalar quando se estiver pronto para fazê-lo
Por outro lado, embora haja uma base fundamental para a implementação de metodologias, é possível que DevOps tenha algumas diferenças de acordo com a abordagem de cada fornecedor, que também terá produtos específicos para viabilizar sua implementação.
Em relação aos casos de uso, Magda Martínez destaca o mundo dos bancos, em que as mudanças nas dinâmicas de mercado têm obrigado as entidades financeiras a se transformar e adaptar se quiserem sobreviver, inclusive em comparação a concorrentes que não necessariamente são bancos (como pode ser o Rappi). Também menciona especialmente o caso do varejo, no qual as empresas tradicionais buscam a maneira de alcançar o passo das iniciativas daqueles que nasceram em ambientes digitais.
O benefício do DevOps se manifesta em processos mais rápidos, investimentos sob medida para orçamentos e equipes de trabalho mais satisfeitas. Uma flexibilidade que, novamente, não compromete a qualidade do produto final, mas sim procura melhorá-lo.
DevOps nas palavras de ...
Microsoft: "O DevOps permite que as funções que antes estavam isoladas (desenvolvimento, operações de TI, engenharia de qualidade e segurança) sejam coordenadas e colaborem para produzir produtos melhores e mais confiáveis. Ao adotar uma cultura de DevOps junto com práticas e ferramentas de DevOps, as equipes adquirem a capacidade para responder melhor às necessidades dos clientes, aumentar a confiança nos aplicativos que criam e atingir os objetivos empresariais em menos tempo".
Deloitte: “É importante esclarecer em um primeiro momento que DevOps não é uma tecnologia, mas uma metodologia que está vinculada às metodologias de desenvolvimento de software ágil. Com esta metodologia não só mudamos os métodos de gestão do ciclo de desenvolvimento de software a nível tecnológico, mas também a nível cultural. As equipes de desenvolvimento, sistemas e até mesmo a garantia de qualidade (QA), passam a colaborar e trabalhar juntas para cobrir todo o ciclo de desenvolvimento de software para que os processos sejam muito mais ágeis e seguros e desta forma também garantam um produto final de muito maior qualidade e confiabilidade”.
Gartner: “Os serviços de DevOps podem ser baseados em consultoria, como definição de estratégia, capacitação/treinamento e implementação de produtos e ferramentas, ou operações de serviço em tempo real em toda ou parte da cadeia de ferramentas ou aplicações de DevOps. O escopo do serviço pode incluir integração contínua (CI), entrega contínua, funcionalidade de implementação contínua (CD), operações de serviço ao vivo e suporte de plataforma, e a prestação de serviços de engenharia de lançamento e performance ".
Red Hat: "DevOps descreve as abordagens para agilizar os processos com os quais uma ideia (como um novo recurso de software, uma solicitação de melhoria ou correção de erros) passa do desenvolvimento para a implementação, em um ambiente de produção no qual você pode gerar valor para o usuário. Essas abordagens requerem que as equipes de desenvolvimento e operações se comuniquem com frequência e abordem seu trabalho com empatia para com seus colegas de equipe. Também são necessários a escalabilidade e provisionamento flexível. [...] Os desenvolvedores, que normalmente realizam codificações em um ambiente de desenvolvimento padrão, trabalham em estreita colaboração com as equipes de operações de TI para agilizar o projeto, o teste e o lançamento de sistemas de software sem comprometer a confiabilidade”.
AWS: "As equipes utilizam práticas para automatizar os processos que anteriormente havam sido manuais e lentos. Eles usam uma pilha de tecnologia e ferramentas que ajudam a operar e melhorar os aplicativos de forma rápida e confiável. Em adição, estas ferramentas ajudam os engenheiros a realizar tarefas de forma independente que normalmente teriam exigido a ajuda de outras equipes (por exemplo, implementar código ou provisionamento de infraestrutura), o que aumenta ainda mais a velocidade da equipe ".