Bu yazıda kısaca sürekli entegrasyon sürecini büyük kod tabanına ve
ekip buyuklugu 100 kisiye yaklasan bir projede nasıl uygulandığını
aktarmaya çalışacağım.
Bu tür büyük projelerde entegrasyon problemlerinin ortaya çıkma riski
daha fazla. Hergün yüzlerce satır yeni kod ekleniyor . Bu eklenen
kodların mevcut özelliklerde hiçbirşeyi bozmadığını ve problemlerin
ortaya çıkmadığını maliyetsiz biçimde doğrulamak gerekiyor. Bu nedenle
sürekli entegrasyon süreci daha fazla önem kazanıyor. Fakat bu konuda
yaşanan ana sıkıntılardan biri sürekli entegrasyon kurulumlarının kod
tabanının büyüklüğünden dolayı uzun sürmesi. Prensip olarak bu
kurulumun azami 10 dk sınırında tutulması gerekiyor. Aksi halde
insanlar kurulumun durumuna bakmadan kodları versiyon kontrole ekleyip
entegrasyon problemlerine neden olabiliyorlar. Bizim projede
uyguladığımız yöntem şu şekilde işliyor.
Sürekli entegrasyon kurulumunu 3 seviyede yapıyoruz.
1. Hızlı kurulum
2. Entegrasyon kurulumu
3. Gecelik kurulum
Hızlı kurulum:
Herhangi bir kod değişikliği yapıp versiyon kontrole eklediğimizde bu
değişiklik Hızlı kurulum sunucusu tarafından tespit ediliyor ve Ant
script vasıtasıyla hızlı kurulum başlatılıyor. Bu kurulumun kapsamı
tüm kodların derlenmesi, veritabanına değişikliklerin
uygulanması(dbdeploy) ve yaklaşık 40 bin birim testinin çalıştırılması
olarak özetlenebilir. Bu kurulum yaklaşık 7 dk sürüyor. Yeni bir
Checkin işlemi yapmadan önce mutlaka son hızlı kurulumun sonucunun
başarılı olmuş olması gerekiyor.
Eğer Hızlı kurulum başarısız olursa herkesin bilgisayarında Windows
Taskbar da çalışan CCTray uygulamasındaki ikon kırmızıya dönüyor ve
tüm ekip bir problem olduğunu anlıyor. Başarısız kuruluma neden olan
checkin işlemini yapan kişi yaptığı değişikliği geri alıyor ve bir
önceki başarılı kuruluma dönülüyor. Bu sayede diğer insanlarin checkin
işlemlerini bloke etmekten kaçınılıyor.
Hızlı kurulum sonucu başarılı ise Entegrasyon kurulumu tetikleniyor.
Entegrasyon kurulumu:
Entegrasyon kurulumu Hızlı kurulumun başarılı olduğu durumda çalışmaya
başlıyor.
Entegrasyon kurulumunun en büyük özelliği projenin uygulama
sunucularına deploy edilmesi ve QA grubu tarafından hazırlanan bir
listedeki Kabul Senaryosu testlerini çalıştırması. Bu kabul testleri
uygulamayı Selenium aracını kullanarak arayüz düzeyinde test ediyor.
Bu listede bulunan kabul senaryoları projenin önemli ve riskli bazı
özelliklerini test ediyor.
Entegrasyon kurulumu başarısız ise buna neden olan kod değişikliği
analiz edilip düzeltilmeye çalışılıyor . Hızlı kurulumdakinin aksine
ekiptekiler checkin işlemi yapılabiliyor. Fakat checkin yapmadan önce
başarısızlığı düzeltmeye çalışan kişilere gidip izin almak gerekiyor.
Versiyon kontrole eklenecek kod değişikliğinin kurulumu bozan
değişiklikten tamamen ayrı olması gerekiyor.
Gecelik kurulum
Her gece yarısı tüm ekip uyurken CruiseControl boş durmuyor. Bu
kurulum tüm kodları sıfırdan derliyor, veritabanını sıfırdan
oluşturuyor,birim testlerini çalıştırıyor ve uygulamayı deploy ederek
binlerce kabul testi senaryosunu çalıştırıyor. Bu kurulum yaklaşık 40
dk kadar sürüyor. Kabul testlerinin çalışması sırasında arayüzde
alınan hatalar o anda Desktop un resimlerini alarak kaydediliyor.
Buna ek olarak Sürekli performans denetimi için performans testleri
çalıştırılıyor ve rapor oluşturuluyor. Bu sayede uygulamanın saniyede
kaç sayfa sunabildiği gibi önemli metrikler güncelleniyor.
Bu pratiğin uygulanması sonucu baş ağrıtan ve çözülmesi zaman alan
problemlerin önüne geçilmiş oluyor. Proje her an gerçek ortama
kurulmaya hazır halde tutulabiliyor. Bu tür pratikleri uygulamayan
projelerde gerçek ortama kurulumlar günler alabilirken , sürekli
entegrasyon sayesinde bu süre dakikalarla ölçülüyor.
Konuya ilgi duyanlar için Martin Fowler ' in makalesi
http://www.martinfowler.com/articles/continuousIntegration.html
Iyi calismalar
Cenk Civici
Thoughtworks London
Senior Consultant