Carreira

O que é DevOps?

Por em

Certamente ao navegar pelas suas mídias sociais ou em um site de empregos, você se deparou com uma vaga para um cargo chamado de Devops. Porém não era uma vaga focada em desenvolvimento e nem em infraestrutura, era um misto destas duas áreas bem interessante. E muitas empresas recentemente, cada vez mais, vem procurando por pessoas qualificadas para este cargo. Bem, mas aí você provavelmente deve se perguntar: Mas o que é DevOps?
 

A cultura Devops

Devops não é um cargo ou profissão. Devops é a combinação de filosofias culturais, práticas e ferramentas que aumentam a capacidade de uma empresa de distribuir aplicativos e serviços em alta velocidade, otimizando e aperfeiçoando seus produtos em um ritmo muito mais rápido do que o das empresas que usam processos tradicionais de desenvolvimento de software e gerenciamento de infraestrutura. Essa velocidade permite que as empresas atendam melhor aos seus clientes e compitam de modo mais eficaz no mercado.

O termo DevOps deriva da junção das palavras “desenvolvimento” e “operações”, ou seja, na cultura Devops, a equipe de desenvolvimento e a de operações (infraestrutura) não ficam mais separadas entre si, cada um na sua própria baia. Mas trabalham em conjunto agora, com o mesmo objetivo e a mesma motivação. E o objetivo principal é defender fortemente a automação e o monitoramento em todas as fases da construção do software, que inclui compilação, integração, testes, liberação para implantação e gerenciamento da infraestrutura.

De maneira ampla, a cultura DevOps é uma forma de adotar o pensamento Agile em áreas de Operações de Infraestrutura. Antes de pensar nas ferramentas, processos, documentação, contratos e planos, devemos pensar em como as pessoas vão interagir, como garantir o funcionamento dos sistemas e, principalmente como responder às mudanças. Mas por onde você deve começar?
 

O processo Devops

Para entender bem toda essa questão que envolve a cultura de DevOps, nada melhor que visualizar o processo como um todo, certo? A imagem abaixo ilustra bem isso.

Todo o processo de codificação, testes e o lançamento de novas atualizações do software fazem parte do campo de Desenvolvimento. Já o deploy, operação e monitoramento são itens do time de operações.

O que une tudo isso são as releases e o planejamento. Nessas fases, a integração de ferramentas e dos processos gerenciais acontece. A cada release é necessário realizar o deploy e os passos adicionais e, após ser definido o monitoramento do que foi implementado, retorna-se ao planejamento em conjunto com os desenvolvedores.

Dessa forma, o projeto tende a estar sempre em movimento, sendo planejado, codificado, testado, lançado, implementado e monitorado. Então, baseado nos dados coletados, planeja-se novamente o que deve ser feito e o processo continua.
 

Ferramentas

Que ferramentas podemos utilizar neste processo como um todo? Vejamos abaixo as principais ferramentas.

Git

Devops tem a ver com pessoas, comunicação e colaboração.E é aí que entra o git. Git é um sistema de controle de versão de arquivos. Através deles você pode desenvolver projetos na qual diversas pessoas podem contribuir simultaneamente no mesmo, editando e criando novos arquivos e permitindo que os mesmos possam existir sem o risco de suas alterações serem sobrescritas.

Se não houver um sistema de versão, imagine o caos entre duas pessoas abrindo o mesmo arquivo ao mesmo tempo. Uma das aplicações do git é justamente essa, permitir que um arquivo possa ser editado ao mesmo tempo por pessoas diferentes. Além disso ele serve para que você possa criar uma linha do tempo com diferentes pontos das alterações feitas. Assim, você consegue manter o histórico das alterações de um mesmo arquivo ou arquivos ao longo do tempo. Nem é necessário dizer o quanto isso é crucial para projetos de software, já que esses projetos exigem que você e sua equipe criem novas funcionalidades nos mesmos arquivos, com uma versão antiga salva pro caso da nova dar problema. Aqui na School of Net, temos um curso fantástico de Git, onde você aprenderá do zero a trabalhar com o principal sistema de controle de versão da atualidade.

Jenkins

O Jenkins na cultura Devops faz parte do processo de integração contínua. Os principais objetivos da integração contínua são encontrar e investigar bugs mais rapidamente, melhorar a qualidade do software e reduzir o tempo que leva para validar e lançar novas atualizações de software. Dessa forma, se um desenvolvedor está criando uma grande funcionalidade, a tendência é que essa funcionalidade seja dividida em partes menores e integradas à uma versão entregável, em intervalos menores, evitando que no fim de tudo tenha-se uma quantidade gigantesca de código podendo quebrar funcionalidades do sistema.

Na maioria dos casos a integração contínua é acompanhada de uma boa estrutura de testes automatizados que são executados sempre que uma nova versão entregável do software é criada, e assim, os testes garantem que as novas alterações não tenham provocado nenhum efeito negativo na aplicação. O Jenkins auxilia em todo este processo. O Jenkins é um sistema para integração contínua e automatização de tarefas, com ele é possível automatizar implantações (deploys), executar testes e gerar versões de suas aplicações. Ele atua como um orquestrador de todo o processo. Como material complementar, aqui na School of Net, nós temos o curso de Jenkins onde demonstramos a como instalar, configurar e utilizar esta ferramenta no seu processo de desenvolvimento de software.

Ansible

A infraestrutura como código é uma prática importante a ser adotada se você quiser implementar o DevOps na sua organização. A Infraestrutura como código significa que você escreve código para provisionar e gerenciar seu servidor, além de automatizar processos que rodam neste servidor. E o Ansible lhe auxilia neste caso. O Ansible é uma ferramenta de automatização de tarefas. Com ela é possível fazer o deploy de aplicações, o provisionamento de servidores, a automatização de tarefas, dentre outras funções. Aqui na School of Net, temos um curso fantástico de Ansible que vai lhe ajudar a automatizar a sua infraestrutura.
 

Finalizando

A cultura Devops entrega benefícios técnicos, como a entrega se software mais rápido e de maneira confiável, entrega benefícios culturais, como maior produtividade e equipes mais felizes, e entrega benefícios comerciais. Isto não é do dia para a noite, leva tempo e adaptação, mas são benefícios e resultados significantes. Espero que você se interesse pelo assunto e venha aprender conosco aqui na School of Net.