A jornada de um dev: do Gitflow ao Trunk-based Development na Syngenta Digital

Fabrício Kneipp
Syngenta Digital Insights
5 min readFeb 17, 2023

Se você chegou até esse artigo é porque quer saber mais sobre Trunk-based Development (TBD), então acompanhe até o final que eu vou te contar como o TBD tem impactado o meu trabalho na Syngenta Digital.

Como desenvolvedor de software, sempre fui apaixonado por descobrir novas técnicas e abordagens para melhorar o trabalho. Experimentei diferentes estratégias para lidar com versionamento de código ao longo dos anos. Na Syngenta Digital, gerenciamos algumas centenas de repositórios, desacoplados em microsserviços. Para essa tarefa, adotamos o Trunk-based Development (TBD).

Mas, antes de explicarmos os pontos fortes do Trunk-Based Development (TBD), é importante destacar as principais dificuldades que me levaram a conhecer essa abordagem de desenvolvimento de software. Antes de fazer parte da Digital, atuei em outro time onde usávamos o Gitflow e era comum encontrarmos obstáculos na manutenção das branches e na integração de mudanças.

As branches ficavam obsoletas rapidamente, o que resultava em uma quantidade excessiva de branches inativas e problemas com a sincronização de códigos. Além disso, as mudanças frequentes na branch principal e stories que se transformavam em pull requests gigantes resultavam em conflitos de merge constantes, o que era muito demorado para resolver.

Nessa época em que enfrentava esses desafios, busquei soluções que pudessem solucioná-los de maneira eficiente. Foi então que, para minha surpresa e satisfação, descobri que muitas big techs estavam utilizando uma solução de desenvolvimento que combinava integração contínua, entrega contínua e feature flagging. Essa solução viria a ser conhecida como Trunk-based Development e se tornaria uma prática amplamente difundida no cenário de tecnologia atual.

O TBD é uma estratégia para trabalhar com sistemas de versionamento de código que se baseia em uma única branch, conhecida como “trunk”. Todos os desenvolvedores trabalham na trunk, fazendo alterações e comitando seu trabalho regularmente. A trunk é sempre mantida em um estado desbloqueado, o que significa que está sempre pronta para ser lançada em produção. É uma abordagem simples e direta, que vem tendo grande relevância, especialmente quando tratamos de temas como Desenvolvimento Ágil ou DevOps. Existem variações de como o TBD pode ser implementado por diferentes equipes, algumas adotam estratégias usando pull requests e tudo bem. No final do dia, o que importa é a entrega constante e com qualidade.

Por que optamos pelo Trunk-based Development?

  • No início de um projeto: Adotar o TBD no início de um projeto tem a vantagem de simplificar o processo de entrega de novas funcionalidades, tornando-o mais rápido e menos complexo. Não precisamos lidar com merges que irão diminuir a sanidade do time e fluxos complexos de Continuous Integration/Continuous Delivery (CI/CD), o que nos permite trabalhar de forma mais ágil e eficiente. Isso é especialmente útil quando estamos construindo uma versão inicial de um projeto, como um produto mínimo viável(MVP) ou uma prova de conceito (POC). Não há necessidade de se preocupar com processos longos e complexos de integração de código, permitindo que nos concentremos em entregar valor para o usuário o mais rapidamente possível.
  • Revisão de Código: As revisões de código tornam-se mais eficientes devido a commits menores e com maior frequência. Revisar pequenas mudanças é mais fácil e toma menos tempo do que revisar uma grande quantidade de código com uma estratégia complexa envolvendo várias branches. Os desenvolvedores podem receber feedbacks sobre suas alterações mais rapidamente, permitindo mais iteração com foco em melhoria contínua.
  • Menor complexidade: elimina a necessidade de estratégias de branches e merges complexos, tornando mais fácil entender e manter o código.
  • CI/CD mais fácil: Mantendo a trunk em um estado desbloqueado, é mais fácil integrar novas alterações ao código e garantir que tudo esteja funcionando corretamente, utilizando recursos como testes automatizados e cobertura de código.

Então, devo usar o TBD para todos os projetos?

Definitivamente não! Aqui listo dois pontos para você se atentar:

  • Experiência da sua equipe: se a sua equipe é formada majoritariamente por profissionais começando a carreira, é uma boa ideia controlar de forma mais rigorosa os repositórios dos seus projetos. Nesse cenário é mais vantajoso ajudar os profissionais a desenvolver as suas habilidades, prevenir e identificar possíveis bugs e falhas de segurança antes de serem mesclados no ambiente de produção. Aqui, na minha visão, faz sentido utilizar uma variação do TBD, usando PR’S ou usar outra estratégia de versionamento de controle.
  • Projetos open-source: similar ao cenário anterior, liderar um projeto open-source requer ter maior controle sobre as modificações, uma vez que qualquer pessoa pode contribuir. Dessa forma, é preciso garantir que as alterações sejam confiáveis e apropriadas antes de serem incorporadas ao projeto.

Palavras finais

O Trunk-based Development é uma prática comum e bem estabelecida entre as equipes de desenvolvimento de software que buscam manter altos padrões de qualidade no mercado. Essa abordagem permite que a equipe libere novas atualizações de software de maneira constante e simplificada, além de oferecer maior flexibilidade e controle sobre a entrega de software aos usuários. Mas lembre-se, já dizia o Tio Ben:

“Com grandes poderes vêm grandes responsabilidades.”

Toda a flexibilidade precisa estar alinhada com uma estratégia de cobertura de código, testes unitários e times compostos por profissionais experientes. Hoje eu posso dizer, sem hesitação, que o TBD é a abordagem que mais se adequa aos nossos times e ao nosso processo de desenvolvimento de software aqui na Syngenta Digital. Em um momento futuro, com o surgimento de novas tecnologias, acredito que o TBD se tornará irrelevante, mas, até lá, estou feliz com a nossa decisão acertada e curioso com o que está por vir.

Ficou curiosa(o) e quer ver o TBD funcionando na prática? Confere só essa live code que nosso Software Engineer Rafael Pena fez com o pessoal do podcast GeekMasters e dá uma checada no conteúdo de apoio no GitHub também. 🤓

Já experimentou o Trunk-based Development para organizar seus projetos? Compartilhe sua experiência aqui nos comentários! 😉

Se conecte ao autor @kneipp! ∞

Quer saber mais sobre a Syngenta Digital e conhecer nossas oportunidades para os times de tecnologia? Chega mais! 👊🏽

--

--