DevOps como parte da estrutura de engenharia de software

Como a cultura do DevOps pode ajudar na estrutura da engenharia de software moderna.

DevOps é um termo relativamente novo mas, apesar disso, já é possível afirmar que é um movimento que visa introduzir práticas ágeis na última milha de um projeto de software, ou seja, quando o sistema vai entrar em produção. Neste artigo você irá entender o conceito de DevOps e seus benefícios para a engenharia de software.

Porque DevOps

“Imagine um mundo onde os Product Owners, desenvolvimento, qualidade de software, operações de TI e InfoSec trabalham juntos, não apenas para ajudar uns aos outros, mas também para garantir que toda a organização seja bem-sucedida”, compartilham Gene Kim, Jez Humble, Patrick Debois, John Willis, autores do livro “Manual de DevOps”.

A engenharia de software é um conjunto de práticas para desenvolvimento de software com qualidade e agilidade. Isso pode ser obtido utilizando vários métodos de acompanhamento durante o projeto ou boas práticas já consolidadas. Como resultado do sucesso desses padrões de projeto e da execução de todo o processo de engenharia responsável pelo ciclo de desenvolvimento de software, existe um artefato pronto para ser disponibilizado em outro ambiente, como DEV, TEST, UAT ou mesmo o ambiente de produção. Essa tarefa é conhecida pelos nomes de implantação (deploy), liberação (release) ou entrega (delivery) do sistema e mesmo parecendo simples pelo nome, ela não é rápida como pode parecer.

Para entender melhor a complexidade desses processos, é interessante entender o contexto inicial de tudo isso. Em organizações tradicionais, a área de Tecnologia da Informação era dividida em dois departamentos:

  • Departamento de Sistemas (ou Desenvolvimento)
  • Departamento de Suporte (ou Operações)

É fácil imaginar os problemas causados por essa divisão. Na maioria das vezes, a área de operações tomava conhecimento de um sistema na véspera da sua implantação. E com isso, a implantação poderia atrasar bastante, devido a uma variedade de problemas que não tinham sido identificados. Esses problemas poderiam até resultar no cancelamento da implantação e no abandono do sistema.

DevOps é um modelo que combina filosofias culturais, práticas e ferramentas que aumentam a capacidade de uma empresa distribuir seus serviços em alta velocidade. Ele é uma prática de engenharia de software moderna para unir o desenvolvimento de software com a operação, ou seja, integrar essas áreas e alcançar uma maior qualidade nas entregas. Quando essas áreas não são integradas, você pode presenciar falhas na comunicação destes times, o que pode resultar em atrasos, retrabalhos e baixa qualidade.

O DevOps chega para corrigir esse problema, unindo as duas áreas em um só processo para que no fim, o produto seja concluído e entregue sem problemas.

Para que seja possível que o processo ocorra de forma fluida, alguns princípios foram criados:

  • Crie um processo reprodutível e confiável para entrega de software. A ideia é que a entrega de software não pode ser um evento traumático, com passos manuais e sujeitos a surpresas. Em vez disso, colocar um software em produção deve ser tão simples como apertar um botão;
  • Automatize tudo que for possível. O ideal é que todos os passos para a entrega de um software devem ser automáticos, incluindo seu build, a execução dos testes, a configuração e ativação dos servidores e da rede, a carga do banco de dados, entre outros;
  • Mantenha tudo (exceto informações sensíveis, como senhas, credenciais ou strings de conexão a bancos de dados) em um sistema de controle de versões. Tudo no enunciado do princípio refere-se não apenas a todo o código fonte, mas também arquivos e scripts de administração do sistema, documentação, páginas Web, arquivos de dados;
  • Se um passo causa dor, execute-o com mais frequência e o quanto antes. A ideia é antecipar os problemas antes de acumularem e, a partir disso, tornar as soluções complicadas. Um bom exemplo disso é o de Integração Contínua de um software. Se um desenvolvedor passa muito tempo trabalhando de forma isolada, ele e o seu time podem depois ter uma grande dor de cabeça para integrar o código;
  • Concluído significa pronto para entrega e sem qualquer tipo de pendências, sejam elas de desenvolvimento ou de terceiros;
  • Todos são responsáveis pela entrega do software.

Cada um dos princípios possui relacionamento direto com a forma como a interação acontece com os pontos de desenvolvimento/acompanhamento de um software e, no fim, buscam corrigir falhas nesses processos e fazer com que todo o ciclo continue interligado e suportado por esse modelo.

Nesse artigo foram apresentados os princípios principais do DevOps e como a engenharia de software moderna pode utilizar todos esses princípios como parte de sua estrutura para que ao final, tenhamos um software entregue com qualidade e sem traumas para todos envolvidos na concepção e criação desse produto.

Tem interesse em ver vagas de DevOps e outras na GFT? Clique aqui.

Referências

Gene Kim, Jez Humble, John Willis, Patrick Debois. Manual de DevOps. Como Obter Agilidade, Confiabilidade e Segurança em Organizações Tecnológicas. Alta Books, 2018.

Jez Humble, David Farley. Entrega Contínua: Como Entregar Software de Forma Rápida e Confiável. Bookman, 2014.