DevOps: o que é e por que é importante

Publicados: 2022-03-11

Embora não existam métodos “bala de prata” infalíveis para melhorar a eficiência de TI, o DevOps produziu resultados difíceis de ignorar. Como o próprio nome sugere, o DevOps combina princípios de desenvolvimento de software e operações de software com o objetivo de ajudar as organizações a desenvolver produtos com maior velocidade e eficiência. A TIAA-CREF, por exemplo, viu seu negócio de US$ 40 bilhões fazer melhorias significativas usando os princípios de DevOps. Uma entrevista da TechBeacon com o diretor digital da TIAA, Scott Blandford, explica como a TIAA mudou de software e sistemas antigos e desajeitados para “uma abordagem DevOps baseada em agilidade” que rendeu um aumento de quatro vezes na produtividade do desenvolvimento. As atualizações são lançadas muito mais rapidamente e “a TI recuperou a confiança que havia erodido ao longo dos anos à medida que começou a atender às expectativas dos usuários”.

Os resultados do Relatório State of DevOps de 2017 sugerem diferenças marcantes entre organizações de alto desempenho que empregam princípios de DevOps e organizações que não o fazem. De acordo com o relatório, as organizações de alto desempenho têm frequências de implantação de software muito mais altas (46 vezes mais frequentes), lead time muito mais rápido para alterações (440 vezes mais rápido) e uma taxa de falha de alteração de software significativamente menor (cinco vezes menor) do que seu desempenho inferior homólogos.

Apesar desses benefícios significativos, o DevOps é um exemplo clássico de um conceito técnico importante e relativamente novo que tem sido mal utilizado ou mal compreendido com muita frequência. Para muitos, a ideia permanece confusa, e até mesmo uma definição básica de DevOps pode ser elusiva.

Essa falta de clareza pode ter efeitos negativos nas organizações e equipes que tentam implementar os princípios do DevOps, causando confusão estratégica e impedindo a velocidade e a eficiência que o DevOps deve promover. Como um engenheiro de DevOps da IBM disse em um artigo publicado pela InfoWorld, “Precisávamos responder a algumas perguntas básicas e determinar os problemas que estávamos tentando resolver... Se você não sabe como o trabalho é realmente feito, você não sabe quais problemas valem a pena resolver”.

À medida que o desenvolvimento de software e as operações se tornam mais interligados e as empresas se tornam cada vez mais dependentes da infraestrutura em nuvem, os executivos e gerentes de projeto devem desenvolver fluência em DevOps para permanecerem competitivos e garantirem que suas equipes estejam realizando todo o seu potencial.

DevOps não deve ser pensado como outra palavra da moda vaga, mas sim como um conceito importante com potencial para melhorar drasticamente produtos e negócios. Este artigo, voltado para um público relativamente não técnico, visa antes de tudo esclarecer exatamente o que é DevOps. Usando exemplos específicos, este artigo explorará como são os princípios do DevOps quando bem executados e por que o DevOps é importante para você e sua organização.

DevOps como um tipo de engenheiro, cultura e prática

O que é DevOps? Em um artigo anterior publicado pela Toptal, Demir Selmanovic escreve que “DevOps é uma cultura, uma mentalidade e faz parte da TI como um todo”. Ele escreve ainda que DevOps é uma prática que permite que as organizações otimizem a velocidade e a eficiência nas funções de TI.

A Amazon Web Services, que é o maior player em infraestrutura de nuvem e, portanto, desenvolveu uma experiência significativa em DevOps, usa uma definição semelhante, dizendo que “DevOps é a combinação de filosofias, práticas e ferramentas culturais que aumentam a capacidade de uma organização de fornecer aplicativos e serviços em alta velocidade: evoluindo e melhorando os produtos em um ritmo mais rápido do que as organizações que usam processos tradicionais de desenvolvimento de software e gerenciamento de infraestrutura.”

“As pessoas de DevOps são basicamente aquelas que encontraram interesse em administração de sistemas e desenvolvimento de software e decidiram combinar suas habilidades para criar uma abordagem unificada e melhor para ambos.”

Ambas são definições úteis para um público já bem versado em áreas relacionadas, mas podem ser muito abstratas para executivos com formação técnica menos extensa. De fato, talvez parte da confusão em torno da definição de DevOps decorre do fato de que muitas vezes é referenciado simultaneamente como um tipo de engenheiro, conjunto de práticas e cultura. Embora o DevOps abranja cada um desses elementos, é útil começar considerando-os separadamente.

Para começar com a aparência de um engenheiro de DevOps, Martin Chikilian, um desenvolvedor de software anteriormente para IBM e Hewlett Packard com mais de uma década de experiência empregando princípios de DevOps, coloca em termos simples e concretos: “As pessoas de DevOps são basicamente aquelas que encontraram interesse em administração de sistemas e desenvolvimento de software e decidiram combinar suas habilidades para criar uma abordagem unificada e melhor para ambos.”

Eles são capazes de manter os servidores, redes e outros tipos de sistemas de infraestrutura que uma empresa possui, bem como iterar e melhorar ativamente esses sistemas por meio do desenvolvimento de software. Como Chikilian disse de outra forma, “uma pessoa de DevOps é alguém que pode alavancar os fundamentos do desenvolvimento de software para ajudar a si mesmos e às empresas a construir melhores ferramentas para lidar com a infraestrutura”.

A “combinação de filosofias culturais”, como a Amazon coloca, refere-se à combinação de abordagens usadas por desenvolvedores de software e aqueles com experiência em infraestrutura ou operações de software. Ao quebrar a barreira tradicional entre essas práticas, uma cultura DevOps busca capacitar as organizações a se beneficiarem dos pontos fortes distintos que desenvolvedores e especialistas em infraestrutura trazem para a mesa. A implementação bem-sucedida dos princípios do DevOps “exige uma mudança de cultura e mentalidade” para empresas que isolam esses diferentes tipos de engenheiros. Como Emily Dowdle descreve no Nordic API Platform Summit 2016, a remoção de barreiras também ajuda a aliviar o atrito natural que às vezes pode existir entre desenvolvedores e especialistas em infraestrutura e promover um ambiente de trabalho mais agradável e cooperativo.

Dito de forma simples, o DevOps trata da tradução de processos manuais complexos envolvendo interação humana propensa a erros em uma abordagem instrumentada que pode ser testada, medida e facilmente dimensionada.

Armado com uma compreensão de como é um praticante e cultura de DevOps, o que DevOps significa como prática se torna mais aparente. Dito de forma simples, o DevOps trata da tradução de processos manuais complexos envolvendo interação humana propensa a erros em uma abordagem instrumentada que pode ser testada, medida e facilmente dimensionada. Por exemplo, se um desenvolvedor deseja criar um ambiente que permita que os usuários de negócios forneçam feedback, ele pode iniciar um processo automatizado no qual o desenvolvedor pode emitir um comando criado pela equipe de DevOps (em vez de entregar um pedaço de código para a equipe de infraestrutura), que executa a tarefa relevante de forma consistente e testada, alcançando os resultados esperados rapidamente e possibilitando a colaboração.

Uma definição abrangente de DevOps requer uma compreensão do que significa como um tipo de engenheiro, cultura e prática. Tendo explorado o que DevOps significa a partir dessas perspectivas, agora é importante se aprofundar na aparência do DevOps quando implementado com sucesso.

Seu kit de ferramentas DevOps

Além da mudança cultural mencionada acima – passando de uma empresa que isola desenvolvedores de software e especialistas em infraestrutura para uma que abraça sua colaboração – as empresas precisam entender várias práticas e ferramentas específicas cruciais para o DevOps. Abaixo estão três das mais cruciais (embora certamente não as únicas) dessas práticas:

Automação: O aumento da eficiência é fundamental para o DevOps, e isso é alcançado significativamente por meio da automação de uma série de processos relativamente lentos e onerosos no desenvolvimento de software e manutenção da infraestrutura. Um exemplo específico que a Amazon cita é a prática de enviar automaticamente atualizações de software relativamente pequenas, mas frequentes. Essa prática elimina o ônus dos administradores de sistemas, que de outra forma teriam que realizar essas atualizações manualmente. Como a Amazon observa, essa prática também tem o benefício de reduzir o risco de implantação de software, permitindo que os administradores detectem e corrijam bugs que possam surgir com mais facilidade. A automação é a base do DevOps e é crucial para as outras práticas de DevOps discutidas abaixo.

Integração Contínua: Em um nível fundamental, o DevOps trata da colaboração estreita entre engenheiros e, além disso, equipes inteiras. Integração Contínua refere-se à prática de engenheiros compartilhando e mesclando código em um local central. Como a Amazon explica: “No passado, os desenvolvedores de uma equipe podiam trabalhar isolados por um longo período de tempo e apenas tentar mesclar suas alterações… Por meio da Integração Contínua, os engenheiros podem colaborar com mais eficiência e evitar os gargalos associados ao desenvolvimento e integração de seu código de forma mais fragmentada.

Entrega Contínua: Entrega Contínua refere-se à prática de entregar e implementar automaticamente mudanças no produto de software à medida que são feitas. Em outras palavras, a Entrega Contínua é habilitada pela Integração Contínua, uma vez que as alterações no código só podem ser efetivamente enviadas para todo o sistema se o código já estiver hospedado em um local central. A automação também é crucial para a Entrega Contínua. De fato, o exemplo acima mencionado de envio de atualizações de sistemas pequenas e frequentes também pode ser considerado um exemplo de Entrega Contínua. A Entrega Contínua permite que as organizações implementem mudanças e melhorias rapidamente e permite que os engenheiros concentrem seu tempo com mais eficiência em outros problemas complexos.

Contratando as pessoas certas

É claro que as empresas precisam contratar os engenheiros certos para que as práticas acima sejam implementadas com sucesso. Os engenheiros de DevOps devem ter um conjunto de habilidades que combine desenvolvimento de software e experiência em infraestrutura de sistemas, e essa combinação pode ser difícil de encontrar.

“É importante que eles sejam capazes de preencher a lacuna entre o código bruto e os desafios que a empresa enfrenta todos os dias – como reduzir o atrito entre ideias, entrega e consumidores.”

Andrea Villa, ex-engenheira de DevOps da Atlassian e arquiteta de sistemas da CloudReach com 15 anos de experiência em administração de sistemas, segurança da informação e redes, acredita que os engenheiros de DevOps precisam de uma ampla gama de experiência e conhecimento para serem bem-sucedidos.

“Para ser eficaz, o engenheiro de DevOps de hoje precisa ter experiência como desenvolvedor e possuir um amplo conhecimento de administração de sistemas e conhecimento de rede”, disse Villa. “É importante que eles sejam capazes de preencher a lacuna entre o código bruto e os desafios que a empresa enfrenta todos os dias – como reduzir o atrito entre ideias, entrega e consumidores.”

Qualificar-se como um engenheiro de DevOps forte é claramente mais fácil falar do que fazer, e encontrar esses engenheiros pode ser igualmente difícil. Ainda assim, entender as ferramentas subjacentes às práticas de DevOps pode capacitar sua organização a adaptar com mais precisão as práticas de contratação para encontrar o talento certo e implementar essas práticas com sucesso.

Por que o DevOps realmente importa

O uso de práticas de DevOps traz uma série de benefícios, alguns dos quais – incluindo maior eficiência, segurança e colaboração organizacional – já foram articulados. O relatório State of DevOps de 2017 quantifica esse aumento na eficiência, relatando que as organizações de alto desempenho que empregam práticas de DevOps gastam 21% menos tempo em trabalho não planejado e retrabalho e 44% mais tempo em novos trabalhos.

De um modo mais geral, no entanto, a implementação bem-sucedida das práticas de DevOps pode ter um impacto profundo em sua empresa, melhorando a eficiência e a execução em áreas essenciais e decididamente sem glamour.

Fredrik Haard, engenheiro com mais de 12 anos de experiência em DevOps que trabalhou como arquiteto de nuvem sênior na McKinsey e na Wondersign, articula esse ponto de forma mais completa.

“Bons engenheiros de DevOps devem ser campeões – e assumir responsabilidade por – todas as áreas que podem não ser priorizadas pela organização, como segurança de dados, recuperação de desastres, mitigação e auditorias”, disse Haard. “As escolhas que você faz no DevOps podem ter efeitos duradouros em uma empresa.”

A Microsoft também viu esses efeitos positivos por meio da implementação de práticas de DevOps em seu grupo de engenharia Cloud + Enterprise. Para oferecer os melhores resultados, explica a Microsoft, “precisávamos que a engenharia e as operações trabalhassem em conjunto durante todo o ciclo de vida do desenvolvimento, desde o design até a implantação na produção”. Ao mudar para uma cultura de DevOps e usar práticas de DevOps, a Microsoft conseguiu dimensionar e fornecer serviços de alta qualidade a seus clientes muito mais rapidamente do que anteriormente.

Resolver esses problemas e melhorar a eficiência são ótimos em si mesmos, mas são, em última análise, um meio para um fim mais fundamental: produzir produtos incríveis e gerar maiores lucros e satisfação do cliente.

Os engenheiros de DevOps podem atuar efetivamente como uma equipe de comando interna de uma empresa, ajudando a resolver uma gama diversificada de problemas que, embora talvez sem glamour ou fora de vista, são absolutamente cruciais para o funcionamento adequado de uma empresa.

Resolver esses problemas e melhorar a eficiência são ótimos em si, mas são, em última análise, um meio para um fim mais fundamental: produzir produtos incríveis e gerar maiores lucros e satisfação do cliente. Talvez a razão mais importante pela qual o DevOps realmente importa é que ele pode permitir que as organizações maximizem cada uma dessas métricas.

Enfrentando o futuro com DevOps

Em 2015, o sócio da Andreessen Horowitz, Scott Weiss, disse que o DevOps é “Mais do que apenas uma metodologia. É um conjunto de habilidades obrigatórias para o programador moderno – e está se tornando cada vez mais seu próprio departamento.”

Isso provou ser verdade, pois várias empresas de tecnologia, incluindo Amazon, Microsoft e Google, criaram equipes de DevOps e dedicaram recursos significativos para desenvolver experiência no espaço. Weiss e outros grandes players de tecnologia veem o DevOps não apenas como uma moda passageira, mas sim como um componente-chave no futuro do software.

O DevOps continuará a ser particularmente essencial à medida que os setores se tornarem mais dependentes da infraestrutura em nuvem. Em um relatório de 2017, a Gartner Research projetou que o mercado de serviços em nuvem crescerá mais de 15% ao ano até 2020. Para colocar esse crescimento em termos de dólares, um artigo recente publicado pela Forbes indica que o mercado de computação em nuvem crescerá de aproximadamente US$ 260 bilhões em 2017 para aproximadamente US$ 411 bilhões em 2020. O DevOps pode fazer uma enorme diferença na rapidez com que sua empresa migra com sucesso os sistemas para a nuvem. Na Toptal, usamos o DevOps desde o início – e tem sido essencial para nosso sucesso como uma empresa de nuvem de hipercrescimento.

Assim como o mercado de serviços em nuvem está crescendo rapidamente, também cresce a importância do DevOps. Seja em energia, saúde ou ensino superior, sua empresa precisará desenvolver experiência em DevOps. Entender o que é DevOps, como é implementado e por que é tão importante representa um primeiro passo essencial ao pensar em usar essa prática chave daqui para frente.