10 puan yazan xguru 2024-12-13 | 3 yorum | WhatsApp'ta paylaş
  • Bazel, Google'ın büyük ölçekli monorepo'ları verimli biçimde derlemek için geliştirdiği açık kaynaklı bir build sistemidir
  • Karmaşık projeleri doğru ve hızlı biçimde derler; özellikle büyük kod tabanları ve çok dilli bağımlılıklarla çalışırken etkilidir
  • Bazel'in temel kavramları
    • Doğruluk temelli hız: Bazel, build işlemlerini saf fonksiyonlar olarak görür ve aynı girdilerin aynı çıktıları üretmesini garanti eder
    • Verimli cache kullanımı: Google'ın büyük ölçekli ortamında cache zorunludur ve doğruluk bunu mümkün kılar
    • Temizleme gerektirmeyen build'ler: Kaynak değişikliklerinden sonra "clean build" olmadan da kararlı build almak mümkündür
  • Bazel'in ne zaman kullanılacağı
    • Kullanımın önerildiği durumlar
      • Büyük ölçekli monorepo'lar: Kod satırı sayısının milyonlara ulaştığı ve birden fazla dilin kullanıldığı durumlar
      • Farklı dillerde bağımlılık yönetimi: Örneğin model eğitiminin Python ile, veri işlemenin Scala ile yapılması gibi
      • Hızlı ve doğru CI/CD gereksinimleri: Geliştirme hızını artırmak ve çakışmaları önlemek için
    • Kullanımın önerilmediği durumlar
      • Küçük ölçekli projeler: Kod satırı sayısının 100 binin altında olduğu ve tek bir dil kullanılan durumlar
      • Açık kaynak kütüphaneler: Bazel dağıtılabilir artifact üretmek için uygun olsa da yeniden kullanılabilir kütüphanelerin dağıtımında yetersiz kalır
  • Bazel'i benimserken dikkat edilmesi gerekenler
    • Başlangıçtaki öğrenme eğrisi yüksektir ve build dosyalarını yazmak ile bakımını yapmak için ek kaynak gerekir
    • Cache sunucusu ve uzaktan çalıştırma yapılandırması gibi altyapıların kurulması zorunludur
  • Başarılı Bazel örnekleri
    • Netflix
      • Sorun: 250 bin-300 bin satır kod içeren bir repoda CI süresi 45 dakika-1 saat sürüyordu
      • Çözüm: Bazel'in benimsenmesinden sonra build süresi 20 dakikadan 6 dakikaya düştü
      • Etkisi: Merge çakışmaları azaldı, PR işleme hızı iyileşti
    • Open Systems
      • Sorun: Yavaş build süreleri ve verimsiz iş akışı
      • Çözüm: Bazel'e geçtikten sonra geri bildirim döngüsü 20 dakikadan 5 dakikaya indi
      • Ders: Geliştirici eğitimi ve iletişim önemlidir
  • Bazel'i benimsemenin artıları ve eksileri
    • Artılar
      • Hızlı build süreleri: Cache ve artımlı build sayesinde hız artışı
      • Doğruluk ve yeniden üretilebilirlik: Karmaşık bağımlılık grafiklerini doğru biçimde ifade eder
      • Çok dilli entegrasyon: Haskell, TypeScript, Python gibi çeşitli dilleri destekler
    • Eksiler
      • Yüksek geçiş maliyeti: İlk kurulum ve öğrenme eğrisi zorludur
      • Build dosyalarının yönetimi gerekir: Girdi/çıktıların açıkça belirtilmesi şarttır ve otomasyon araçlarının kullanılması gerekir
      • JavaScript ve frontend tooling: Hot reloading gibi mevcut iş akışlarıyla uyum sağlamak zordur
  • Bazel'e geçiş ipuçları
    • Çekirdek ekip oluşturma: Bazel'i anlayıp yapılandırabilecek uzmanların bulunması
    • Eğitim ve iletişim: Geçişin başında geliştirici eğitimi ve beklenti yönetimi şarttır
    • Dile özgü karmaşıklık: Her dil farklı build yapılandırmaları gerektirir
    • Build dosyası otomasyonu: Gazelle gibi araçlardan yararlanma
  • Sonuç
    • Bazel, büyük ölçekli monorepo'ları ve karmaşık bağımlılıkları yönetmede çok güçlüdür ancak benimseme maliyeti yüksektir
    • Milyonlarca satır kod ve çoklu dil kullanan organizasyonlar için uygundur
    • Küçük ölçekli projeler veya kademeli geçiş isteyenler için Bazel yerine Earthly gibi alternatifler değerlendirilebilir

3 yorum

 
ganadist 2024-12-13

Bazel benimseme başarısızlığı örneklerinden de bahsedilse iyi olur gibi görünüyor.

AOSP örneğinde, son birkaç yılda BazelCon'da mevcut derleme sistemi (Soong)'den Bazel'e geçişle ilgili birkaç sunum yapıldı.

https://developers.googleblog.com/en/…

Ancak bu yılki BazelCon programında AOSP ile ilgili içerik paylaşımı yer almıyor ve AOSP'nin derleme ile ilgili son belgelerinde Bazel'e geçişin durdurulduğuna dair bir bilgilendirme yayımlandı.

Bazel'e geçiş konusunda AOSP ekibinin çok fazla destek alabileceği düşünülebilirken, benimsemekten vazgeçmiş olmaları bunun hakkında birçok çıkarım sunduğunu gösteriyor gibi görünüyor.

 
iolothebard 2024-12-13

Muhtemelen... yazılımınızın Bazel'e ihtiyacı yoktur.

 
kandk 2024-12-13

Haha, Earthly'de Earthly reklamı yapılıyor demek.
Bazel, hızlı derleme ve hızlı "test" üzerine odaklanıyor. Test tarafına dair çok fazla şey anlatılmamış.