Bus Factor
- Okunuşu
- bas faktır
Kısaca
Bus factor, geriye kalanlardan hiçbiri kritik parçaları bilmediği için bir proje durma noktasına gelmeden önce aniden ayrılabilecek en az kişi sayısıdır.
Bus factor nedir?
Bus factor, geriye kalan kimse projenin kritik bir parçasını anlamadığı için projenin ciddi sıkıntıya düşmesinden önce aniden ortadan kaybolabilecek (kasvetli özgün ifadeyle, otobüsün çarpacağı) en az ekip üyesi sayısıdır. Bus factor'ün 1 olması, tek bir kişinin başka kimsede olmayan bilgiyi elinde tuttuğu anlamına gelir; bu ciddi bir risktir. İmge biraz ürkütücü olduğu için birçok kişi, o kişinin piyangoyu kazanıp işi bıraktığını hayal eden lottery factor (piyango faktörü) adını tercih eder.
Ekipler onu genellikle gayriresmî olarak, dağıtım, faturalama ya da arama servisi gibi her kritik alan için bozulursa gece 3'te onu kimin düzeltebileceğini sorarak tahmin eder. Yalnızca tek bir isim çıkıyorsa o alanın bus factor'ü 1'dir. Araçlar da onu sürüm kontrol geçmişinden, neredeyse tamamen tek bir kişi tarafından yazılmış dosyaları bularak tahmin edebilir. Onu artırmanın yolları arasında eşli ve mob programming, farklı takım arkadaşlarının kod incelemesi yapması, görevlerin ve nöbet (on-call) sorumluluğunun dönüşümlü olması, runbook'lar ve mimari notlar yazmak ve ortak kimlik bilgilerini tek bir kişinin kafası yerine bir gizli bilgi yöneticisinde (secrets manager) saklamak vardır.
Düşük bir bus factor, imza sosun tarifini yalnızca bir aşçının bildiği bir restorana benzer: o aşçı hastalanırsa yemek menüden kaybolur. Bu fikir şirket ekipleri, tek bir gönüllünün sürdürdüğü açık kaynak projeleri ve küçük bir projeye bağımlı olmanın riskini değerlendiren herkes için önemlidir.
Bus factor çoğunlukla tek hata noktasıyla (single point of failure) karıştırılır. Tek hata noktası genellikle yedeği olmayan tek bir sunucu gibi teknik bir şeydir; bus factor ise insanlar ve bilgiyle ilgilidir; 1 olan bir bus factor, insan kaynaklı bir tek hata noktasıdır. Bus factor'ü artırmak herkesin her şeyi bilmesi gerektiği anlamına gelmez; her kritik alanda güvenle çalışabilecek en az iki veya üç kişi olması demektir.
Önemli noktalar
- Bus factor, bir projenin durmadan önce kaç kişiyi kaybedebileceğini sayar.
- 1 olan bir bus factor, kritik bilginin tek bir kişinin kafasında olduğu anlamına gelir.
- Eşleşme, kod incelemesi, rotasyon ve dokümantasyon onu artırır.
- Sürüm kontrol geçmişi, tek bir yazara ait alanları ortaya çıkarabilir.
- Bir bilgi riskidir; teknik tek hata noktasıyla ilişkili ama ondan farklıdır.
Örnek
# Who made the commits that touched the billing code?
git shortlog --summary --numbered --no-merges -- src/billing/
# 412 Dana
# 17 Sam
# 3 Lee
# One person made about 95% of the changes: likely a bus factor of 1.
# Who has worked on it recently? (recent knowledge matters most)
git shortlog -sn --since="1 year ago" -- src/billing/Sık sorulan sorular
İyi bir bus factor nedir?
Evrensel bir sayı yoktur, ama her kritik alanın bus factor'ü en az 2, tercihen 3 veya daha fazla olmalıdır. Tüm proje için, bilgi tesadüfen değil bilinçli olarak paylaşıldığı sürece ne kadar yüksekse o kadar iyidir.
Lottery factor nedir?
Lottery factor, bus factor'ün daha dostane bir adıdır. Aynı riski kasvetli imge olmadan tanımlayarak, proje durmadan önce kaç kişinin piyangoyu kazanıp işi bırakabileceğini sorar.
Bus factor nasıl artırılır?
Bilgiyi bilinçli olarak paylaşın: eşli veya mob programming yapın, her alanı farklı kişilerin incelemesini ve üzerinde çalışmasını sağlayın, nöbet sorumluluğunu dönüşümlü yapın ve kritik sistemler için kısa, güncel dokümantasyon tutun.
İlgili sayfalar
- Pair ProgrammingEkipler ve Süreç, s. 15Pair programming, iki geliştiricinin aynı kod üzerinde birlikte çalıştığı, birinin yazarken diğerinin işi gözden geçirip yönlendirdiği bir Agile tekniğidir.
- Mob ProgrammingEkipler ve Süreç, s. 13Mob programming, bütün bir ekibin aynı görev üzerinde, aynı anda ve tek bir ortak bilgisayarda sırayla klavyeyi kullanarak çalıştığı bir pratiktir.
- Code ReviewSürüm Kontrolü, s. 4Code review, kod değişikliklerinin birleştirilmeden önce başka geliştiricilerce incelenmesidir; hataları yakalar, kaliteyi artırır, bilgi paylaşımını sağlar.
- GitSürüm Kontrolü, s. 10Git, dosyalardaki değişiklikleri zamanla izleyen ücretsiz, açık kaynaklı dağıtık sürüm kontrol sistemidir; iş birliğini ve hataları geri almayı kolaylaştırır.
- Teknik BorçYazılım Mimarisi, s. 43Teknik borç, daha uzun sürecek daha iyi bir yaklaşım yerine şimdi hızlı ya da sınırlı bir çözüm seçilmesiyle doğan, gelecekteki ek iş maliyetidir.
- Tedarik Zinciri SaldırısıGüvenlik, s. 43Tedarik zinciri saldırısı, uygulamanın kendisini değil, açık kaynak paketi, derleme aracı veya güncelleme sunucusu gibi dayandığı bir bileşeni ele geçirir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin