Cap. 10 DevOps - Engenharia de Software Moderna
Cap. 10 DevOps - Engenharia de Software Moderna
Cap. 10 DevOps - Engenharia de Software Moderna
html
Veja também os cursos de extensão a distância Engenharia de Software Moderna (48 horas) e
Teste de Software (20 horas), oferecidos pelo DCC/ICEX/UFMG.
“ Imagine a world where product owners, development, QA, IT Operations, and Infosec
work together, not only to help each other, but also to ensure that the overall
organization succeeds. – Gene Kim, Jez Humble, Patrick Debois, John Willis
Este capítulo inicia discutindo o conceito de DevOps e seus benefícios (Seção 10.1). Apesar de
ser um termo novo, existe uma tendência em ver DevOps como um movimento que visa
introduzir práticas ágeis “na última milha” de um projeto de software, isto é, quando o sistema
vai entrar em produção. Além de discutir o conceito, tratamos de três práticas importantes
quando se adota DevOps. São elas: Controle de Versões (Seção 10.2), Integração Contínua
(Seção 10.3) e Deployment Contínuo (Seção 10.4).
10.1 Introdução �
Até agora, neste livro, estudamos um conjunto de práticas para desenvolvimento de software
com qualidade e agilidade. Por meio de métodos ágeis — como Scrum, XP ou Kanban —,
vimos que o cliente deve participar desde o primeiro dia da construção de um sistema.
Também estudamos práticas importantes para produção de software com qualidade, como
1 of 22 02/09/2022 07:41
Cap. 10: DevOps – Engenharia de Software Moderna https://engsoftmoderna.info/cap10.html
Logo, após aplicar o que vimos, o sistema — ou um incremento dele, resultante de um sprint
— está pronto para entrar em produção. Essa tarefa é conhecida pelos nomes de implantação
(deploy), liberação (release) ou entrega (delivery) do sistema. Independentemente do
nome, ela não é tão simples e rápida como pode parecer.
Hoje em dia, é fácil imaginar os problemas causados por essa divisão. Na maioria das vezes, a
área de suporte tomava conhecimento de um sistema na véspera da sua implantação.
Consequentemente, a implantação poderia atrasar por meses, devido a uma variedade de
problemas que não tinham sido identificados. Dentre eles, podemos citar a falta de hardware
para executar o novo sistema ou a nova funcionalidade, problemas de desempenho,
incompatibilidades com o banco de dados de produção, vulnerabilidades de segurança, etc.
No limite, esses problemas poderiam resultar no cancelamento da implantação e no abandono
do sistema.
Então, para facilitar a implantação e entrega de sistemas, foi proposto o conceito de DevOps.
Por ser um termo recente, ele ainda não possui uma definição consolidada. Mas seus
proponentes gostam de descrever DevOps como um movimento que visa unificar as culturas
de desenvolvimento (Dev) e de operação (Ops), visando permitir a implantação mais rápida e
ágil de um sistema. Esse objetivo está refletido na frase que abre esse capítulo, de autoria de
Gene Kim, Jez Humble, Patrick Debois e John Willes, todos eles membros de um grupo de
desenvolvedores que ajudou a difundir os princípios de DevOps. Segundo eles, DevOps
representa uma disrupção na cultura tradicional de implantação de sistemas (link):
2 of 22 02/09/2022 07:41
Cap. 10: DevOps – Engenharia de Software Moderna https://engsoftmoderna.info/cap10.html
No entanto, DevOps não advoga a criação de um profissional novo, que fique responsável
tanto pelo desenvolvimento como pela implantação de sistemas. Em vez disso, defende-se
uma aproximação entre o pessoal de desenvolvimento e o pessoal de operações e vice-versa,
visando fazer com que a implantação de sistemas seja mais ágil e menos traumática. Tentando
explicar com outras palavras, a ideia é evitar dois silos independentes: desenvolvedores e
operadores, com pouca ou nenhuma interação entre eles, como ilustrado na figura a seguir.
Organização que não é baseada em DevOps, pois existe pouca comunicação entre Dev e Ops.
Em vez disso, defende-se que esses profissionais atuem em conjunto desde os primeiros
sprints de um projeto, como ilustrado na figura a seguir. Para o cliente, o benefício deve ser a
entrada em produção mais cedo do sistema que ele contratou.
Organização baseada em DevOps. Frequentemente, Devs e Ops sentam juntos para discutir questões sobre a entrega do
sistema.
Quando migra-se para uma cultura de DevOps, os times ágeis podem incluir um profissional
de operações, que participará dos trabalhos em tempo parcial ou mesmo em tempo integral.
Sempre em função da demanda, esse profissional pode também participar de mais de um
time. A ideia é que ele antecipe problemas de desempenho, segurança, incompatibilidades
com outros sistemas, etc. Ele pode também, enquanto o código está sendo implementado,
começar a trabalhar nos scripts de instalação, administração e monitoramento do sistema em
produção.
3 of 22 02/09/2022 07:41