Trunk Based Development: Conheça um dos principais impulsionadores do seu Devops
- Cloud e Infraestrutura
- Artigo
A chegada de novos sistemas e tecnologias possibilitou que o desenvolvimento de software fosse aprimorado. Nesse sentido, novas práticas em DevOps foram consolidadas. Uma delas é o modelo de desenvolvimento Trunk Based Development, que simplifica o gerenciamento da versão do código fonte, além de tornar sua codificação acessível a todos os desenvolvedores.
Nesse artigo, você entende quando deve usar o Trunk Based Development, qual sua importância e quais os benefícios da sua aplicação.
O que é Trunk Based Development?
O Trunk Based Development (TBD), em português, Desenvolvimento Baseado em Tronco, é um modelo de controle de versão de software que centraliza e simplifica a codificação de uma aplicação. Com ele, os desenvolvedores conseguem mesclar pequenas atualizações, combinar recursos e corrigir bugs em um tronco principal, sem o uso de ramificações.
O TBD é um dos principais modelos dentro de DevOps, porque viabiliza os processos de combinação e integração, sendo muito utilizado entre as equipes. Além disso, ele é fortemente indicado nas práticas de Continuous Integration (CI) e Continuous Delivery (CD).
Conforme o aumento da complexidade do código-fonte e do número de colaboradores envolvidos em um projeto de software, maior a necessidade de ter o Trunk Based Development como prática, visto que, ele auxilia na sustentação do fluxo de versões.
Quando usar o Trunk Based Development?
Existem dois recursos que devem ser considerados ao optar pela utilização do Trunk Based Development: rapidez e confiabilidade. Isso porque, o TBD traz velocidade ao desenvolvimento de software, mas ao mesmo tempo, precisa de profissionais experientes para utilizá-lo da melhor forma.
Vamos supor que uma empresa recém-fundada precisa criar a primeira versão de um software o mais rápido possível e possui uma equipe experiente de desenvolvedores. Nesse caso, o Trunk Based Development funcionaria, já que a velocidade para produção é crítica e todos que utilizariam o TBD o manipulariam da maneira adequada.
Para uma equipe de desenvolvedores que possui um projeto de código aberto estabelecido, o TBD não tem necessidade de ser utilizado, já que a velocidade não é muito importante e eles não podem confiar em pessoas aleatórias para a manipulação dos códigos. Nesse caso, a equipe pode utilizar um processo mais tolerante a falhas, como o GitFlow.
Quais são os benefícios da utilização do Trunk Based Development?
Se você deseja implementar os métodos de Continuous Integration e Continuous Delivery, o Trunk Based Development é a prática certa para isso. Veja abaixo os benefícios ao utilizar o TBD:
Integração contínua de códigos
O modelo TBD possui um depósito onde existe um fluxo constante de commits (operações) que escoam para a ramificação principal (tronco). Ao adicionar pacotes de testes automatizados e monitorar a verificação do código, o fluxo de commits é otimizado, permitindo a integração contínua.
Revisão contínua de códigos
Devido aos commits no Trunk Based serem menores e mais rápidos, o processo de revisão do código torna-se mais eficiente. Por meio de entregas pequenas de código, os desenvolvedores conseguem visualizar com rapidez pequenas alterações quantas vezes desejarem. Ou seja, o TBD traz mais facilidade para revisar os códigos em comparação ao modelo tradicional.
Versões consecutivas de código de produção
O Trunk Based Development mantém somente uma ramificação do tronco ativa, isso facilita sua implementação a qualquer momento e em qualquer commit. Ao combinar os processos de testes automatizados com as revisões contínuas, o tronco garante a implementação em qualquer momento da produção. Desse modo, a equipe terá mais agilidade para definir metas de produções diárias e para realizar frequentes implementações na produção.
Quais práticas são recomendadas para utilizar em conjunto com o Trunk Based Development?
O Trunk Based Development possibilita o lançamento de códigos mais rápidos e consistentes. Confira a seguir práticas que auxiliam na otimização da cadência de produção desses códigos.
Desenvolvimento em pequenos lotes
Criar commits pequenos possibilita um fluxo mais rápido de combinações e implementações, o que facilita a vida da equipe na hora de revisar e alterar somente uma área limitada de código ao invés do conjunto inteiro.
Testes automatizados
Os testes automatizados são essenciais para qualquer software moderno que deseja atingir a integração contínua. Existem diversos testes automatizados utilizados em diferentes partes do pipeline de versão, como testes de unidade, testes de integração, testes de desempenho, entre outros. São eles os responsáveis por manter um pequeno ritmo de lotes conforme os desenvolvedores realizam a combinação de novos commits.
Esses testes analisam o código independente dos problemas e realizam a aprovação ou a negação dos códigos de forma automática. Isso permite que os desenvolvedores criem commits com mais rapidez e os executem por meio dos testes para visualizar se surgirão novos problemas.
Merge de ramificações diário
As equipes de TBD devem assumir o compromisso de realizarem a combinação de qualquer ramificação que esteja aberta e pronta para ser mesclada todos os dias. Mas por quê? Esse compromisso é o que dita o ritmo e a cadência do controle de versões dos códigos. Isso possibilita que, ao final do dia, o desenvolvedor marque o tronco master como um commit de versão, o que gera um incremento diário e ágil de versões.
Por que o Trunk Based se tornou referência em desenvolvimento para DevOps?
A automatização e o Trunk Based Development são recursos para otimização de fluxo, um dos princípios de DevOps. Seguindo esse princípio, quanto mais cedo a produção de uma linha de código for iniciada, mais valor será entregue. Isso torna um cenário perfeito para a utilização do Trunk Based.
Outro princípio muito importante de DevOps presente no TBD são os ciclos curtos de feedback, que visam identificar e resolver eventuais problemas no processo o mais cedo possível. Por meio do Trunk Based, o time de DevOps realiza vários commits ao longo do dia. Nesse caso, os commits são menores, mas fazem com que o código seja suficiente para agregar valor. E é essa regularidade, de realizar pequenos commits diários, que possibilita a validação constante do código, gerando feedbacks com mais agilidade.
O TBD faz com que todo o código esteja dentro de um Trunk, mas como identificar as features? Por meio de features flags, uma técnica que tem a capacidade de habilitar e desabilitar a execução de um código de uma determinada feature.
Os features flags permitem que uma feature seja produzida parcialmente desde que esteja desligada. E o Trunk Based Development consegue ligar e desligar features em produção facilmente, possibilitando que features possam ser experimentadas. E é aí que entra outro princípio de DevOps, o aprendizado contínuo, que é obtido por meio da experimentação.
Implementar os features flags na prática do TBD é uma combinação muito poderosa, ainda não existindo uma equivalente em outro modelo.
Simplificando, o Trunk Based Development é a prática de desenvolvimento mais adepta ao DevOps, pois compreende seus três princípios: First Way (otimização de fluxo), Second Way (ciclos curtos de feedback) e Third Way (aprendizado contínuo). E é exatamente isso que torna o TBD uma excelente prática.
Achou o Trunk Based Development interessante? Gostaria de implementar essa e outras práticas de DevOps no seu negócio? Conheça a consultoria de DevOps da Objective!