MMM nedir
Önce Brook Yasası'nın bağlamını açıklamak istiyorum. Onu 1975'te yeniden yaratmasına neden olan varsayım neydi?
Bir Man-ay, bir kişinin bir ay içinde yaptığı işi temsil eden varsayımsal bir çalışma birimidir; Brooks kanunu, yararlı çalışmaları insan aylarında ölçmenin imkansız olduğunu söylüyor.
kaynak: https://en.wikipedia.org/wiki/The_Mythical_Man-Month
O zamanlar, karmaşık programlama projeleri büyük monolit sistemler anlamına gelecektir. Ve Brooks, bunların geliştiriciler arasında iletişim olmadan ve görevler ile bunları yerine getiren insanlar arasında bir dizi karmaşık ilişki kurmadan üzerinde çalışılabilecek ayrı görevlere mükemmel bir şekilde bölünemeyeceğini iddia ediyor.
Bu son derece uyumlu yazılım monolitlerinde çok doğrudur. Ne kadar ayrıştırma yapılırsa yapılsın, büyük monolit, yeni programcıların monolit hakkında bilgi edinmesi için gereken zamanı zorunlu kılmaktadır. Ve artan iletişim yükü, mevcut zamanın giderek artan bir miktarını tüketecektir.
Ama gerçekten bu şekilde olmak zorunda mı? Monolit yazmak ve iletişim kanallarını geliştiricilerin sayısına n(n − 1) / 2
nerede tutmak zorunda mıyız n
?
Binlerce geliştiricinin büyük projeler üzerinde çalıştığı şirketler olduğunu biliyoruz ... ve işe yarıyor. Yani 1975'ten beri değişen bir şey olmalı.
MMM'yi azaltma imkanı
2015 yılında, PuppetLabs ve IT Revolution, 2015 DevOps Durumu Raporu'nun sonuçlarını yayınladı . Bu raporda, yüksek performans gösteren kuruluşlarla yüksek performans göstermeyenler arasındaki farka odaklandılar.
Yüksek performans gösteren kuruluşlar bazı beklenmedik özellikler gösterir. Örneğin, geliştirmede en iyi proje bitiş tarihi performansına sahiptirler. Operasyonlarda en iyi operasyonel kararlılık ve güvenilirlik. Yanı sıra en iyi güvenlik ve uyum sicili.
Raporda vurgulanan şaşırtıcı şeylerden biri, günlük dağıtım sayısı metriğidir. Ancak, yalnızca günlük dağıtımları değil, dağıtım / gün / geliştiriciyi ve yüksek performans gösteren kuruluşlara yüksek performans göstermeyenlere kıyasla daha fazla geliştirici eklemenin etkilerini de ölçtüler.
Bu rapordaki grafik -
Düşük performans gösteren organizasyonlar Efsanevi Adam Ay varsayımlarına uyar. Yüksek performanslı kuruluşlar konuşlandırma / gün / dev sayısını geliştiricilerin sayısına göre doğrusal olarak ölçeklendirebilir.
Gene Kim'in DevOpsDays London 2016'da mükemmel bir sunumu bu bulguları anlatıyor.
Nasıl yapılır
İlk olarak, yüksek performanslı bir organizasyon nasıl olunur? Bunun hakkında konuşan birkaç kitap var, bu cevapta yeterli alan yok, bu yüzden sadece onlara bağlanacağım.
Yazılım ve BT kuruluşları için, yüksek performanslı bir kuruluş olmanın kritik faktörlerinden biri: kalite ve hıza odaklanma .
Örneğin Ward Cunningham Teknik Borçları açıklanmasına izin verdiğimiz her şey olarak açıklıyor . Bu, yönetim tarafından kabul edilir, çünkü her zaman zaman olduğunda düzeltileceğini vaat eder.
Asla yeterli zaman yoktur ve teknik borçlar gittikçe kötüleşir.
Teknik borcun artmasına neden olan bu şeyler nelerdir?
- eski kod
- ortamların manuel yapılandırması
- manuel test
- manuel dağıtımlar
Eski kod Michael Feathers tarafından Eski Kod ile Etkili Çalışma bölümünde tanımlandığı gibi , otomatik teste sahip olmayan herhangi bir koddur.
Kodu üretime almak için her zaman kısayolu kullanılır; operasyonlar bu borcun sonsuza dek sürdürülmesi ile yükümlüdür. Ardından dağıtım süreci uzar.
Gene sunumunda altı hafta süren dağıtımları olan bir şirket hakkında bir hikaye anlatıyor. On binlerce son derece hataya meyilli sıkıcı adım içeren, 400 kişi bağladı ve bunu her yıl dört kez yapacaklardı.
DevOps'un ilkelerinden biri, güvenilirliğin daha küçük dağıtımları daha sık yapmaktan kaynaklanmasıdır.
Misal
Bu iki sunum, Amazon'un kodu üretime dağıtma süresini azaltmak için yaptığı tüm şeyleri gösterir.
Gene'ye göre, bu yüksek performanslı organizasyonlarda zaman içinde değişen tek şey geliştiricilerin sayısıdır. Amazon örneğinden, dört yıl içinde sadece daha fazla insan ekleyerek dağıtımlarını on kat artırdıklarını söyleyebilirsiniz.
Belirli koşullar altında, sağ mimarisi ile sağ teknik uygulamalar, sağ kültürel normlar, geliştirici verimliliği Bu araçlar olabilir geliştiricilerin sayısı olarak ölçek artar. Ve DevOps kesinlikle tüm bunların ortasında.