Daha iyi bir Türkiye mümkün! Türkiye'nin girişimcilik ve inovasyon topluluğu·2018'den beri

Yazılım Geliştirme

/yazilim

Fikirden çalışan ürüne yazılımın her hali: web, backend, veritabanı, mimari kararlar, kod kalitesi ve araçlar. Dil ve framework fark etmez; yazan herkesin ortak kanalı.

#yazılım geliştirme akışına dön
@ahmeteraslan · 7 gün önce

Her commit sonrası 40 dakika test bekliyorduk: CI süresini 11 dakikaya indirmek için yaptığımız 6 değişiklik

Yurt dışındaki bir müşterinin web uygulamasında üç kişilik uzaktan bir ekiple çalışıyorum. Yaz sonunda fark ettik ki sürekli entegrasyon hattımız her commit sonrası ortalama 40 dakika sürüyordu. Bir düzeltme gönderiyorsun, kahve yapıyorsun, başka bir işe geçiyorsun, sonra test kırmızı dönüyor ve az önce ne yaptığını hatırlamaya çalışıyorsun. Saat farkı da işin içine girince bir pull request'in birleşmesi bazen iki güne yayılıyordu. Ekim ayını bu süreyi düşürmeye ayırdık ve şu an ortalama 11 dakikadayız. Neler yaptığımızı sırayla yazayım.

İlk iş ölçmek oldu. Hattın hangi adımının ne kadar sürdüğünü bir tabloya döktük. Tahminimiz testlerin yavaş olduğuydu, ama sürenin neredeyse üçte biri bağımlılıkları her seferinde sıfırdan indirmek ve konteyner imajını yeniden oluşturmakla geçiyordu. Ölçmeden başlasaydık yanlış yerde vakit kaybedecektik.

Yaptığımız değişiklikler:

1. Bağımlılık önbelleği. Kilit dosyası değişmediği sürece paketler önbellekten geliyor. Tek başına sekiz dakika kazandırdı.
2. Konteyner imajında katman sırasını düzelttik. Sık değişen uygulama kodunu en sona aldık, bağımlılık katmanı artık çoğu commit'te yeniden oluşturulmuyor.
3. Testleri dört paralel işe böldük. Bölmeyi dosya sayısına göre değil, önceki çalışmalardaki test sürelerine göre yapıyoruz, yoksa bir iş hep geç bitiyordu.
4. Veritabanı kullanan testlerde her test için şemayı sıfırdan kurmak yerine her testi bir işlem içinde çalıştırıp sonunda geri alıyoruz.
5. Uçtan uca tarayıcı testlerini her commit'te değil, ana dala birleşmeden önce ve gece bir kez çalıştırıyoruz. Bu tartışmalı bir karardı, aşağıda anlatıyorum.
6. Ara sıra kendiliğinden kırılan, kararsız testleri ayrı bir listeye aldık. Her birinin sahibi var ve iki hafta içinde ya düzeltiliyor ya siliniyor.

Beşinci madde ekipte en çok tartışılanı oldu. Uçtan uca testleri her commit'ten çıkarınca bir hatanın ana dala girmeden önce yakalanma süresi uzadı. Bunu dengelemek için pull request birleşmeden önce bu testlerin yeşil olmasını zorunlu tuttuk. Yani hızlı geri bildirim geliştirme sırasında, tam kontrol birleşmeden önce.

Altıncı madde ise beklemediğimiz kadar etkili çıktı. Kararsız testler yüzünden insanlar kırmızı sonucu görünce tekrar çalıştır butonuna basmaya alışmıştı. Hem süre kaybı, hem de gerçek bir hatanın tekrar çalıştırmayla gözden kaçması. Liste kısaldıkça kırmızıya güven geri geldi.

Sizin ekiplerde CI süresi ne kadar ve hangi noktadan sonra çok uzun diyorsunuz? Bizde on dakika civarı, birinin başka işe geçmeden beklediği sınır gibi görünüyor.
7 3 yorum
Yorumlar (3)
@endof · 7 gün önce 5
Kararsız test listesi bizde de hayat kurtardı. Bir ek: listeye alınan testi devre dışı bırakmak yerine sonucunu raporlayıp hattı kırmayan bir moda almak daha iyi. Böylece düzeltilmediği sürece kaç kez kırıldığını görüyorsun, iki hafta sonra karar verirken elinde veri oluyor. Bizde böyle ölçünce bazı testlerin aslında gerçek bir zamanlama hatasını yakaladığı ortaya çıktı.
@oguzhanakn · 7 gün önce 6
Önbellek tarafında güvenlik açısından küçük bir uyarı: paylaşılan önbelleklerin hangi dallardan yazılabildiğine dikkat edin. Dış katkıya açık depolarda, güvenilmeyen bir daldan yazılan önbelleğin ana dalın derlemesine karışması tedarik zinciri riski doğurabiliyor. Önbellek anahtarına dal bilgisini eklemek ve ana dalın önbelleğini yalnızca ana dalın yazmasına izin vermek basit bir önlem.
@ahmeteraslan · 7 gün önce 0
İkisi de yerinde. Raporla ama kırma modunu bu hafta deniyoruz. Depomuz dış katkıya kapalı ama önbellek anahtarına dal bilgisini yine de ekledim, maliyeti yok.
Tanıtım videosu · 1 dk

inovanadolu'yu 1 dakikada tanı

Kanallar, sözlük, İlham blogu, kişilik testleri ve 140'tan fazla ücretsiz araç. Üretenlerin buluşma noktasında neler olduğunu kısaca izle.