Acelerando entregas com o Github Flow

If your team is doing continuous delivery of software, I would suggest to adopt a much simpler workflow (like GitHub flow) instead of trying to shoehorn git-flow into your team.
Vincent Driessen (criador do Git Flow)
Este artigo foi escrito em parceria com Douglas Picolotto – especialista em Nuvem e DevOps.

Há consenso que frequência de deploy e delivery lead-time são duas das métricas mais importantes para determinar a eficiência, inclusive estratégica, da engenharia de software.

Nesse capítulo, tratamos de um fluxo de trabalho que favorece estas métricas: Github Flow.

O que é o Github Flow?

Github flow é uma alternativa notoriamente mais ágil para o Git flow.

Git flow é, certamente, a estratégia de branching mais conhecida do mercado. Criado em 2010, popularizou uma abordagem organizada e consistente para entregar software usando git. Entretanto,  com a evolução das práticas de engenharia de software, especialmente continuous deployment, tornou-se relativamente burocrático, e pouco eficiente em cenários onde deploys podem acontecer todos os dias, pois trabalha em ciclos de release.
0
Considerações?x

O GitHub Flow surgiu como uma opção mais simples e ágil de entregar software. Utilizada pelo próprio Github, permite que features sejam liberadas em produção todos os dias, assim que ela for integrada ao branch main. Para termos uma ideia, apenas no dia 23 de agosto de 2012, o Github chegou a fazer 175 deploys em produção.

Como funciona o Github Flow?

O Github Flow trabalha basicamente com a branch main de longa duração e com branches de trabalho, onde novas features e correções são desenvolvidas constantemente.

Partindo da premissa de que tudo que está na branch main pode ser publicado, o Github Flow orienta a efetuar um deploy em produção, sempre que um novo commit for efetuado nesta branch.

Um ponto extremamente importante neste modelo é a revisão de código feita através de pull requests.

Este fluxo não tem espaço para “Friendly Review” e, similar à uma rede social, permite a discussão sobre determinada alteração, fornecendo feedback para quem desenvolveu, e alinhamento entre todas as partes interessadas, mesmo antes da alteração estar pronta.

Devido ao curto ciclo de entrega, é imprescindível também uma boa base de automação, com testes automatizados, análise estática de código e segurança, além da entrega automatizada.

Github flow é sempre “melhor” que o Git flow?

A pergunta que você deve estar se fazendo é “Qual o melhor?”. Sem sombra de dúvidas, a resposta é “depende”.

Depende da natureza do software, da cultura dos times, da metodologia de desenvolvimento. Se existe a necessidade de efetuar releases fora dos horários comerciais, ou o time trabalha com um modelo de sprints, Git Flow pode fazer mais sentido.

Em contrapartida, para times que têm a possibilidade de entregar software com mais frequência, Github Flow fornece um fluxo mais simples e ágil, através de pequenas iterações (commits e pull requests). Como diz o ditado: “É mais fácil movimentar pequenas pedras, do que montanhas”.

Métricas! Métricas!

Apesar de bastante simples, o Github Flow permite que tenhamos acesso a algumas métricas importantes para o ciclo de desenvolvimento.

Nesse fluxo, é incrivelmente fácil apurar tanto a frequência de deploy quanto o deployment lead-time, pois a cada merge na main, é efetuado um novo deploy em produção.

Para Pensar

Github flow tem sido usado como base de desenvolvimento para o próprio Github com sucesso, permitindo dezenas (e até centenas) de deploys em um único dia.

Com as práticas de software adequadas, o Github Flow permite que times que trabalham entregando batches, mas que tenham condições de entregar uma feature assim que ela estiver pronta, mudem de estratégia, tornando o ciclo de desenvolvimento fluido e contínuo, resultando em maior agilidade para o processo como um todo.

Referências bibliográficas

Kim, Gene; Humble, Jez; Debois, Patrick; Willis, John. The DevOps Handbook: . IT Revolution Press. Edição do Kindle.

Compartilhe este capítulo:

Compartilhe:

Comentários

Participe da construção deste capítulo deixando seu comentário:

Inscrever-se
Notify of
guest
0 Comentários
Feedbacks interativos
Ver todos os comentários

Fundador e CEO da EximiaCo, atua como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Consultoria e Assessoria em

Engenharia de Software

Adoção de práticas, políticas e ferramentas para o desenvolvimento de software.

ElemarJúnior

Fundador e CEO da EximiaCo, atua como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Podcast

Arquitetura de Software Online

55 51 9 9942 0609  |  me@elemarjr.com

+55 51 99942-0609 |  contato@eximia.co

+55 51 99942-0609  contato@eximia.co

0
Quero saber a sua opinião, deixe seu comentáriox
()
x