DevOps, qual ferramenta escolher?

DevOps é um processo de mudança cultural que auxilia as empresas na transformação de desenvolvimento de software, buscando garantir mais qualidade e segurança em todo o processo, e assim, aproximar mais os times. Além desse processo, também é necessário um apoio ferramental que dê suporte em toda a mudança.

Neste post, quero compartilhar com você, algumas dicas de ferramentas que podem ser muito úteis na implantação do processo de DevOps.

Antes de continuarmos, vale um adendo: apesar de precisarmos de ferramentas, DevOps não significa você apenas utilizar a ferramenta A ou B na sua empresa. Trata-se de uma mudança cultural, que abrange todos os envolvidos no processo, como Desenvolvimento, Operações, Negócio, Segurança etc.

Introduction

A primeira ferramenta que gostaria de compartilhar com vocês é o GitHub.

O GitHub é uma plataforma voltada para pessoas desenvolvedoras, com um forte apelo para a comunidade. Hoje, o GitHub é o principal ponto de compartilhamento de código Open-Source. A maioria das ferramentas e pacotes Open-Source tem o seu código-fonte compartilhado lá.

Para você conhecer e entender melhor o GitHub, deixo aqui esse vídeo que explica o que é a plataforma.

 

Mas nem só de código Open-Source vive o GitHub. Hoje, ele vai muito além de um simples agregador de repositórios Git e possui uma gama muito grande de ferramentas que podem fazer a diferença em nosso dia a dia.

 Nós podemos, por exemplo, utilizar o GitHub Projects para criar um Backlog de demandas, a partir do Kanban, e com isso ter um controle maior das atividades. E também, você pode montar uma rastreabilidade das tarefas, relacionando as suas issues com seus commits no código-fonte.

Para compreender melhor o funcionamento do GitHub Projects, deixo aqui mais um vídeo, onde abordo o tema em detalhes.

https://www.youtube.com/watch?v=vxYTpsFKdiQ

Ainda falando de GitHub, nós contamos atualmente com o GitHub Actions. Utilizando o Actions, podemos automatizar tudo o que acontece em nosso repositório, como Issues e Pull Requests, mas também – e acho que um dos principais pontos – todo o fluxo de CI e CD.

Esse processo é possível utilizando um script YAML, versionado em conjunto com a aplicação. Nele, você pode incluir todos os passos sobre o processo de CI de sua aplicação, assim como tudo que é necessário para implantá-la em todos os seus ambientes.

No vídeo abaixo você confere todo esse processo.

https://www.youtube.com/watch?v=Oe-Yu3YP0YQ

Continuando o nosso papo, indico mais uma plataforma que poderá ser útil em seu aprendizado. Vamos falar um pouco sobre o Azure DevOps.

O Azure DevOps é uma Stack da Microsoft voltada para a cultura de DevOps. É uma ferramenta muito completa e bem versátil, o que nos permite implantar um ciclo de ponta a ponta, desde o controle de código-fonte até o Deploy. Podemos gerenciar o seu código-fonte, as tarefas, implantar aplicações, gestão de pacotes etc.

No vídeo abaixo, eu explico um pouco mais sobre a ferramenta.

https://www.youtube.com/watch?v=I9dVHxbRDBw

Ainda falando de Azure DevOps, como disse anteriormente, nós podemos gerenciar nossos backlogs, utilizando o Scrum, Kanban ou algum modelo personalizado que faça sentido para sua empresa, tudo isso com o Azure Boards. Ele se integra com o Azure DevOps de ponta a ponta, possibilitando o rastreamento das demandas, desde o desenvolvimento do código-fonte até o momento de Deploy.

Nesse outro vídeo, você pode aprender mais sobre o Azure Boards.

https://www.youtube.com/watch?v=sJzMCIWbZME

Quando falamos de CI e CD, o Azure DevOps também é capaz de nos apoiar com a ajuda do Azure Pipelines. Com ele, criamos os pipelines de CI e CD para as nossas aplicações através dos principais sistemas operacionais do mercado, como Windows, Mac e Linux. E suas implantações podem ocorrer nos mais diversos ambientes, como Azure, AWS, GCP ou mesmo OnPremisses.

Abaixo você confere dois vídeos, que mostram justamente como podemos criar processos de CI e CD com o Azure Pipelines.

1: https://www.youtube.com/watch?v=zjKAG7JkPws

2; https://www.youtube.com/watch?v=Po0vuWxZLf4

Nós falamos até aqui, sobre duas ótimas ferramentas de mercado, mas fica uma dúvida: Qual das duas devo considerar para os meus projetos?

Eu gosto muito de ambas, mas há anos atuo principalmente com o Azure DevOps. Como percebemos ao longo deste artigo, as duas ferramentas possuem basicamente as mesmas funcionalidades, então, qual escolher?

Hoje, para iniciar novos projetos, a minha sugestão é ir para o GitHub. É uma ferramenta muito conhecida por boa parte dos desenvolvedores, a acessibilidade é bem legal e os investimentos no produto têm crescido cada vez mais. Mas, verdade seja dita, os Backlogs do GitHub atualmente representam um processo muito simplificado, então, se você precisa de uma gestão de projetos mais robusta, a minha sugestão seria trabalhar em conjunto com o Azure DevOps.

Outro ponto a ser considerado é que alguns recursos mais atuais do GitHub Actions, como Deploy por ambiente e com aprovações, são ativos que que, no momento da escrita desse artigo, ainda estão na versão beta, disponíveis apenas para repositórios públicos. Uma solução para esse problema seria também trabalhar em conjunto com o Azure DevOps.

Agora, se você quer utilizar uma ferramenta única, com um sistema de backlogs mais completo e pipelines plenamente funcionais, eu iria para o Azure DevOps. Outro elemento pelo qual eu partiria para o Azure DevOps é quando  a empresa tem parceria de licenciamento do Visual Studio, pois os usuários já terão acesso à ferramenta, o que reduz o custo extra.

Com tudo isso, você pode estar se questionando: “Eu uso o Azure DevOps atualmente, deveria migrar para o GitHub? O produto está morrendo?”. A minha resposta é não, o produto não está com os dias contados. Ainda tem um backlog público grande pela frente e também mantém suas atualizações a cada três semanas. Sendo assim, não vejo a necessidade de realizar uma migração para o GitHub.

Além das ferramentas apresentadas aqui, gostaria de deixar uma dica extra para você. Neste artigo, falamos de ferramentas e mencionei o controle de versão para ambas, utilizando Git, como protocolo.E quando falamos disso, uma coisa muito importante é a maneira como trabalhamos com nossos repositórios e o fluxo de branch que utilizamos. Existem alguns modos muito comuns no mercado. No vídeo abaixo, você confere mais detalhes sobre o GitFlow.

https://www.youtube.com/watch?v=_HkR423Dcz4

GitFlow é o principal modelo de branch que utilizamos no mercado atualmente e, por isso, acredito ser crucial o seu aprendizado. Esse modelo é um pouco mais complexo, mas quando bem utilizado, traz certa segurança ao nosso projeto de software.

Vale ressaltar que temos diversos outros fluxos de branches utilizados no mercado, alguns mais simples e outros mais complexos. Como sugestão para vocês notarem essa diferença, vou deixar aqui mais um outro vídeo, que fala do GitHub Flow.

https://www.youtube.com/watch?v=D2ui0ykSZog

O GitHub Flow é um modelo criado pelo GitHub e é relativamente mais simples que o GitFlow. Neste modelo, nós temos menos branches, eliminando um pouco da complexidade do processo.

Quando falamos de fluxos de branch, vale lembrar que nenhuma delas é uma “bala de prata” e, logo,  não se pode esperar necessariamente a resolução completa dos seus problemas. Do meu ponto de vista, eles são mais um norte de como vamos trabalhar com nossas branches. É preciso entender como elas funcionam e como se aplicam ao seu projeto e aos seus times. E a partir disso, caso seja necessário, realizar algum ajuste no processo.

É isso que eu queria trazer para vocês hoje, pessoal. Algumas dicas das principais ferramentas para DevOps do mercado atualmente, com as quais a GFT está altamente qualificada para apoiar sua empresa na utilização delas, e a dica especial sobre fluxos de branch.

Post a Comment

* indicates required