Sürekli entegrasyonla ilgili bir ek yük vardır, örneğin, kurulum, yeniden eğitim, farkındalık faaliyetleri, veri sorunları olduğu ortaya çıkan, "hataların giderilmesi" için durdurma, vb.
Sürekli entegrasyon hangi noktada kendini öder?
EDIT: Bunlar benim bulgularımdı
Kurulum, VSS veya TFS'den okuyan, Nant'lı CruiseControl.Net'tir.
Kurulum ile ilgisi olmayan başarısızlığın birkaç nedeni:
Araştırma maliyeti : Kırmızı ışığın kodda, veri kalitesinde veya altyapı sorunu gibi başka bir kaynaktan (örneğin bir ağ sorunu, kaynak kontrolünden okuma zaman aşımı, üçüncü taraf sunucusu gibi) gerçek bir mantıksal tutarsızlıktan kaynaklanıp kaynaklanmadığını araştırmak için harcanan süre aşağı, vb.)
Altyapıya ilişkin politik maliyetler : Test çalışmasında her yöntem için bir "altyapı" kontrolü yapmayı düşündüm. Yapım sunucusunu değiştirmek dışında zaman aşımına karşı hiçbir çözümü yoktu. Bürokrasi yoluna girdi ve sunucu değişikliği olmadı.
Sabitleme Birim Testlerinin Maliyeti : Veri kalitesi sorununa bağlı kırmızı ışık, kötü yazılmış birim testinin bir göstergesi olabilir. Bu nedenle, kötü verilerden dolayı kırmızı ışık olasılığını azaltmak için verilere bağlı birim testleri yeniden yazılmıştır. Birçok durumda, birim testlerini doğru şekilde yürütebilmek için test ortamına gerekli veriler eklenmiştir. Verileri daha sağlam hale getirerek, bu verilere bağlı olması halinde testin daha sağlam hale geldiğini söylemek mantıklıdır. Tabii ki, bu iyi çalıştı!
Kapsama maliyeti, yani zaten mevcut kod için ünite testleri yazma : Ünite testi kapsamı sorunu vardı. Birim testi olmayan binlerce yöntem vardı. Bu yüzden, bunları oluşturmak için oldukça fazla sayıda erkek gününe ihtiyaç vardır. Bu, bir iş vakası sunmak için çok zor olacağından, ileriye dönük herhangi bir yeni kamu yöntemi için birim testlerinin kullanılmasına karar verildi. Birim testine sahip olmayanlara 'potansiyel olarak kızılötesi' denildi. Buradaki en ilgi çekici nokta, statik yöntemlerin, belirli bir statik yöntemin nasıl başarısız olduğunu benzersiz bir şekilde saptamanın nasıl mümkün olacağı konusundaki bir tartışma noktasıydı.
Ismarlama bültenlerin maliyeti : Nant scriptleri sadece şu ana kadar gider. Bunlar, EPiServer, CMS veya herhangi bir UI odaklı veritabanı dağıtımı için CMS'ye bağlı yapılar için faydalı değildir.
Bunlar, saatlik sınama işlemleri ve bir gecede kalite güvencesi oluşturma için derleme sunucusunda meydana gelen sorun türleridir. Bunların bir yapı ustası olarak gereksiz olmalarının, bu işleri serbest bırakma sırasında, özellikle tek kişilik bir grup ve küçük bir yapıyla gerçekleştirebildiklerini düşünüyorum. Bu nedenle, tek adımlı kurulumlar deneyimlerime göre CI kullanımını haklı göstermedi. Daha karmaşık, çok aşamalı yapılara ne dersiniz? Bunlar, özellikle bir Nant senaryosu olmadan oluşturulacak bir acı olabilir. Böylece, bir tane yaratmış olsanız bile, bunlar daha başarılı değildi. Kırmızı ışık sorunlarının giderilmesinin faydaları faydalardan ağır basmıştır. Sonunda, geliştiriciler ilgisini kaybetti ve kırmızı ışığın geçerliliğini sorguladı.
Adil bir deneme yaptıktan sonra, CI'nin pahalı olduğuna ve sadece işi yapmak yerine kenarlarda çok fazla çalışma olduğuna inanıyorum. Bir alarm sistemini tanıtmak ve sürdürmekten çok, büyük projelerden mahrum kalmayan deneyimli geliştiriciler kullanmak daha ekonomiktir.
Bu geliştiriciler giderse bile durum budur. İyi bir geliştiriciden ayrılıp ayrılmasının bir önemi yoktur, çünkü takip ettiği süreçler şartname özellikleri yazmasını, özellikleri tasarlamasını, kodlama kılavuzlarına sadık kalmasını ve kodunu okunabilir olması için yorumlamasını sağlar. Bütün bunlar gözden geçirildi. Eğer bu gerçekleşmezse, o zaman takım lideri işini yapmaz, bu da menajeri tarafından toplanmalıdır.
CI'nın çalışması için sadece birim testleri yazmak, tam kapsamı korumaya çalışmak ve oldukça büyük sistemler için çalışma altyapısı sağlamak yeterli değildir.
Sonuç olarak: Biri piyasaya sürülmeden önce birçok hatanın düzeltilmesinin bir işletme sorumlusundan bile istenip istenmeyeceğini sorgulayabilir. CI, müşterinin UAT'de belirleyebileceği bir avuç böceği veya garanti süresi sona erdiğinde, bir müşteri hizmet sözleşmesinin bir parçası olarak tamir için ödeme alabileceği çok sayıda çalışmayı içerir.