Trunk Based Development
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.
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.
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.