10 poin oleh xguru 2024-12-13 | 3 komentar | Bagikan ke WhatsApp
  • Bazel adalah sistem build open source yang dikembangkan Google untuk membangun monorepo berskala besar secara efisien
  • Mampu membangun proyek kompleks dengan akurat dan cepat, terutama efektif saat menangani codebase besar dan dependensi multi-bahasa
  • Konsep inti Bazel
    • Kecepatan berbasis akurasi: Bazel menganggap build sebagai fungsi murni, memastikan input yang sama menghasilkan output yang sama
    • Caching yang efisien: Di lingkungan berskala besar seperti Google, caching itu esensial, dan akurasi memungkinkan hal tersebut
    • Build tanpa pembersihan: Setelah perubahan pada source, build tetap stabil tanpa perlu melakukan "clean build"
  • Kapan menggunakan Bazel
    • Direkomendasikan
      • Monorepo skala besar: Saat jumlah baris kode mencapai jutaan dan menggunakan banyak bahasa
      • Manajemen dependensi lintas bahasa: Misalnya melatih model dengan Python, memproses data dengan Scala, dan sebagainya
      • Kebutuhan CI/CD yang cepat dan akurat: Meningkatkan kecepatan pengembangan dan mencegah konflik
    • Tidak direkomendasikan
      • Proyek kecil: Jika jumlah baris kode di bawah 100 ribu dan hanya menggunakan satu bahasa
      • Library open source: Bazel cocok untuk membuat artefak yang bisa didistribusikan, tetapi kurang ideal untuk mendistribusikan library yang dapat digunakan ulang
  • Hal yang perlu dipertimbangkan saat mengadopsi Bazel
    • Kurva belajar awal cukup tinggi, dan penulisan serta pemeliharaan file build membutuhkan sumber daya tambahan
    • Pembangunan infrastruktur seperti server cache dan pengaturan eksekusi jarak jauh adalah hal yang wajib
  • Contoh keberhasilan Bazel
    • Netflix
      • Masalah: Di repo dengan 250 ribu-300 ribu baris kode, waktu CI memakan 45 menit-1 jam
      • Solusi: Setelah mengadopsi Bazel, waktu build turun dari 20 menit menjadi 6 menit
      • Dampak: Konflik merge berkurang, kecepatan pemrosesan PR meningkat
    • Open Systems
      • Masalah: Waktu build lambat dan alur kerja tidak efisien
      • Solusi: Setelah beralih ke Bazel, feedback loop dipangkas dari 20 menit menjadi 5 menit
      • Pelajaran: Edukasi dan komunikasi untuk developer sangat penting
  • Kelebihan dan kekurangan adopsi Bazel
    • Kelebihan
      • Waktu build yang cepat: Kecepatan meningkat berkat caching dan incremental build
      • Akurasi dan reproduktibilitas: Dapat merepresentasikan graph dependensi yang kompleks dengan tepat
      • Integrasi multi-bahasa: Mendukung berbagai bahasa seperti Haskell, TypeScript, Python, dan lainnya
    • Kekurangan
      • Biaya adopsi tinggi: Setup awal dan kurva belajar cukup curam
      • Perlu mengelola file build: Input/output harus dideklarasikan secara eksplisit, dan perlu memanfaatkan alat otomatisasi
      • Tooling JavaScript dan frontend: Sulit kompatibel dengan workflow yang sudah ada seperti hot reloading
  • Tips migrasi ke Bazel
    • Membentuk tim inti: Siapkan ahli yang memahami dan dapat mengonfigurasi Bazel
    • Edukasi dan komunikasi: Di tahap awal adopsi, pelatihan developer dan penetapan ekspektasi sangat penting
    • Kompleksitas per bahasa: Setiap bahasa memiliki kebutuhan konfigurasi build yang berbeda
    • Otomatisasi file build: Gunakan alat seperti Gazelle
  • Kesimpulan
    • Bazel sangat unggul untuk menangani monorepo besar dan dependensi kompleks, tetapi biaya adopsinya tinggi
    • Cocok untuk organisasi yang menangani jutaan baris kode dan banyak bahasa
    • Untuk proyek kecil atau jika menginginkan transisi bertahap, pertimbangkan alternatif seperti Earthly alih-alih Bazel

3 komentar

 
ganadist 2024-12-13

Akan bagus juga jika kasus kegagalan adopsi Bazel ikut disebutkan.

Dalam kasus AOSP, selama beberapa tahun terakhir ada beberapa presentasi di BazelCon tentang migrasi dari sistem build lama mereka (Soong) ke Bazel.

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

Namun, pada BazelCon tahun ini, tidak ada lagi pembahasan terkait AOSP yang dibagikan, dan dalam dokumentasi build AOSP terbaru juga muncul pemberitahuan bahwa migrasi ke Bazel telah dihentikan.

Untuk migrasi Bazel, tim AOSP seharusnya bisa mendapatkan banyak bantuan, jadi fakta bahwa mereka memutuskan untuk menghentikan adopsinya tampaknya memberikan banyak hal untuk dipikirkan.

 
iolothebard 2024-12-13

Mungkin… software Anda tidak memerlukan Bazel.

 
kandk 2024-12-13

Haha, Earthly sedang beriklan soal Earthly di Earthly.
Bazel menitikberatkan pada build yang cepat dan "pengujian" yang cepat. Tidak banyak pembahasan tentang pengujian.