Ana Sayfa

Caliper: CI Runner Maliyetlerini ve Performansını Optimize Edin

1 dk okuma

Sürekli Entegrasyon (CI) süreçlerinde kullanılan runner'ların performansı ve maliyeti genellikle bir kara kutu gibidir. Geliştiriciler, hangi runner boyutunun (CPU ve RAM konfigürasyonu) projeleri için en verimli olduğunu tahmin etmekte zorlanır, bu da gereksiz maliyetlere veya performans darboğazlarına yol açabilir. Daha küçük bir runner'da daha uzun süre çalışmanın mı, yoksa daha büyük bir runner'da daha kısa sürede bitirmenin mi daha ekonomik olduğu gibi sorular cevapsız kalır. Bu belirsizlik, ekiplerin genellikle en iyi tahmini yaparak ilerlemesine neden olur.

Bu sorunu çözmek amacıyla geliştirilen Caliper, CI runner'larınızın gerçek performansını ölçmek için tasarlanmış bir komut satırı aracıdır (CLI tool). Caliper, Docker konteynerlerini kullanarak farklı CPU ve RAM limitleriyle çeşitli runner boyutlarını simüle eder. Belirli bir derleme komutunu birden fazla kez çalıştırır (bir ısınma çalıştırması dahil) ve ortalama, medyan, standart sapma, P90, P95 ve başarı oranı gibi detaylı derleme süresi istatistikleri sunar. Aracın en önemli özelliği olan matris modu sayesinde, kullanıcılar belirledikleri CPU ve RAM değerlerinin tüm kombinasyonlarını otomatik olarak test edebilir, böylece en uygun konfigürasyonu kolayca belirleyebilirler.

InfluxDB Rust derlemesi üzerinde yapılan bir benchmark çalışması, Caliper'ın sağladığı verilerin değerini ortaya koymuştur. 25 farklı konfigürasyonda yapılan testler, CPU sayısını artırmanın derleme süresini önemli ölçüde kısalttığını ancak bu kazanımların belirli bir noktadan sonra azalan getiri sağladığını göstermiştir. Örneğin, 2 CPU'dan 4 CPU'ya geçiş derleme süresini neredeyse yarıya indirirken, 16 CPU'dan sonraki artışlar çok daha marjinal kalmıştır. Bu tür veriler, ekiplerin CI runner'ları için doğru boyutlandırma yaparak hem performansı artırmasına hem de maliyetleri düşürmesine olanak tanır.

İçgörü

Geliştiricilerin CI runner maliyetlerini ve performansını optimize etmelerine yardımcı olarak, yazılım geliştirme süreçlerinde verimliliği artırır.

Kaynak