Photo by Yancy Min on Unsplash

Trunk Based Development

Furkan BEĞEN
Finartz
Published in
3 min readJan 11, 2021

--

Trunk based development tekniğini geliştiricilerin tek bir ana branch üzerinde ortaklaşa çalışması olarak özetleyebiliriz. Trunk based development Continuous Integration ve buna bağlı olarak Continuous Delivery sürecinin önemli bir kolaylaştırıcısıdır.

Tarihçe

Trunk based development yeni bir branching modeli değildir. 90'lı yılların ortasından beri kullanılmaktadır.

Google ve Facebook, trunk based development tekniğini kullanan büyük ölçekli şirketlere örnek olarak verilebilir.

Nasıl Uygulanır?

  • Küçük takımları için doğrudan trunk(master) branch’e commit yapılır
  • Büyük takımlar için kısa-süreli feature branch’ler ile önce feature branch’e commit yapılır ardından pull-request ile yapılan geliştirme trunk(master) branch’e alınır.
Kısa-süreli feature branchler ile yaptığımız geliştirmeler daha sık trunk(master) branch’e alınacağı için merge işlemi kolay olur.

Feature branch yöntemi ile çalışırken branch’lerin kısa-süreli(bir kişinin maksimum birkaç gün çalıştığı) olması çok önemli. Aksi taktirde trunk based development tekniğinin bütün avantajlarını kaybetmiş oluruz.

Feature branch de ne kadar uzun çalışırsak, yaptığımız geliştirme trunk(master) branch’e o kadar geç aktarılacak ve bu da conflict çıkma ihtimalini arttırarak merge işlemini zorlaştıracaktır.

Continuous Integration

Trunk based development continuous integration için gerekli bir uygulamadır. Continuous integration trunk based development ve trunk(master)’a yapılan her bir committen sonra çalışacak ve geliştirmekte olduğunuz yazılımın hala çalışır olduğundan emin olacak otomatik test suitinin birleşmesinden oluşur diyebiliriz.

Continuous integration kullanmanın temel amacı sık sık küçük kod parçacıklarını sisteme entegre ederek uzun entegrasyon ve stabilizasyon aşamalarını ortadan kaldırmaktır.

Feature Flags

Feature flag tekniği genellikle trunk based development tekniği ile beraber kullanılır. Trunk based development tek branch üzerinden çalıştırmayı gerektirdiği için feature flagler kapat/aç mekanizması ile hem yapmış olduğumuz geliştirmeleri kontrollü olarak yayına almamıza olanak sağlar, hem de bir hata olması durumunda ilgili özelliğin hızlıca kapatılmasına olanak sağlar.

Ayrıca feature flag’ler yeni geliştirdiğimiz özelliği yalnızca belli bir kullanıcı kitlesine açarak canary releas’ler de çıkmamıza olanak sağlar.

Branch By Abstraction

Branch by Abstraction trunk üzerinde tamamlanması uzun sürecek geliştirmeleri aşamalı olarak gerçekleştirebilmek için kullanılabilecek bir yöntemdir.

Nasıl Uygulanır

1- Değiştirilecek kodun etrafına bir soyutlama(abstraction) katmanı ekleyin ve bunu commitleyin ve kodu versiyon kontrol sistemine gönderin(push) Yaptığınız bu işlemin yazılımın derlenmesini(build) bozmaması gerekir
2- Sisteme eklenecek yeni kod için yazdığınız soyutlamanın yeni bir implementasyonunu yazın ve bunu commitleyin ve versiyon kontrol sistemine gönderin(push) Yaptığınız bu işlemin yazılımın derlenmesini(build) bozmaması gerekir
3- Değiştirilecek kodu kaldırın
4- Soyutlama (abstraction) katmanını kaldırın.

Trunk Based Development Tekniğini Geliştirmenin Yolları

1- Küçük parçalar halinde geliştirme yapın
2- Senkron şekilde code review yapın.
3- Kapsamlı otomatik şekilde koşan testler uygulayın
4- Hızlı bir build/test süreciniz olsun

Eğer ekip olarak Continuous Integration ve buna bağlı olarak Continuous Delivery süreçlerine adapte olmak istiyorsanız yukarıda da bahsedildiği gibi Trunk based development bu sürecin en önemli kolaylaştırıcısıdır.

--

--