Cap. 10 DevOps - Engenharia de Software Moderna

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 3

Cap. 10: DevOps – Engenharia de Software Moderna https://engsoftmoderna.info/cap10.

html

Página principal do livro

Compre na Amazon, Submarino ou UmLivro

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.

Engenharia de Software Moderna


10 DevOps �

“ 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

testes de unidade e refactoring. Estudamos ainda princípios e padrões de projeto e também


padrões arquiteturais.

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.

Historicamente, em organizações tradicionais, a área de Tecnologia da Informação era dividida


em dois departamentos:

• Departamento de Sistemas (ou Desenvolvimento), formado por desenvolvedores,


programadores, analistas, arquitetos, etc.

• Departamento de Suporte (ou Operações), no qual ficavam alocados os administradores


de rede, administradores de bancos de dados, técnicos de suporte, técnicos de
infraestrutura, etc.

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.

Resumindo, nesse modelo tradicional, existia um stakeholder importante — os administradores


de sistemas ou sysadmins — que tomava conhecimento das características e requisitos não-
funcionais de um novo software na véspera da implantação. Esse problema era agravado pelo
fato de os sistemas serem monolitos, cuja implantação gerava todo tipo de preocupação,
como mencionado no final do parágrafo anterior.

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):

“ “Em vez de iniciar as implantações à meia-noite de sexta-feira e passar o fim de

2 of 22 02/09/2022 07:41
Cap. 10: DevOps – Engenharia de Software Moderna https://engsoftmoderna.info/cap10.html

semana trabalhando para concluí-las, as implantações ocorrem em qualquer dia útil,


quando todos estão na empresa e sem que os clientes percebam — exceto quando
encontram novas funcionalidades e correções de bugs.”

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.

De forma não menos importante, DevOps advoga a automatização de todos os passos

3 of 22 02/09/2022 07:41

Você também pode gostar