Was ist das MMM?
Zunächst möchte ich den Kontext für Brooks Gesetz erläutern. Was war die Annahme, die ihn veranlasste, es 1975 zu schaffen?
Ein Mannmonat ist eine hypothetische Arbeitseinheit, die die Arbeit einer Person in einem Monat darstellt. Brooks 'Gesetz besagt, dass es unmöglich ist, nützliche Arbeit in Mannmonaten zu messen.
Quelle: https://en.wikipedia.org/wiki/The_Mythical_Man-Month
Früher bedeuteten komplexe Programmierprojekte große Monolithsysteme. Und Brooks behauptet, dass diese Aufgaben nicht perfekt in einzelne Aufgaben unterteilt werden können, an denen gearbeitet werden kann, ohne dass eine Kommunikation zwischen den Entwicklern stattfindet und keine komplexen Beziehungen zwischen den Aufgaben und den Personen hergestellt werden, die sie ausführen.
Dies gilt vor allem für Software-Monolithen mit hohem Zusammenhalt. Unabhängig davon, wie weit die Entkopplung fortgeschritten ist, gibt der große Monolith den neuen Programmierern dennoch Zeit, sich mit dem Monolith vertraut zu machen. Und mehr Kommunikationsaufwand, der immer mehr Zeit in Anspruch nimmt.
Aber muss es wirklich so sein? Müssen wir Monolithen schreiben und Kommunikationskanäle zu halten , n(n − 1) / 2
wo n
die Zahl der Entwickler ist?
Wir wissen, dass es Unternehmen gibt, in denen Tausende von Entwicklern an großen Projekten arbeiten ... und das funktioniert. Es muss also etwas geben, das sich seit 1975 geändert hat.
Möglichkeit zur Minderung des MMM
2015 veröffentlichten PuppetLabs und IT Revolution die Ergebnisse des State of DevOps-Berichts 2015 . In diesem Bericht konzentrierten sie sich auf die Unterscheidung zwischen leistungsfähigen Unternehmen und nicht leistungsfähigen Unternehmen.
Die leistungsstarken Organisationen weisen einige unerwartete Eigenschaften auf. Zum Beispiel haben sie die beste Projektlaufzeit in der Entwicklung. Beste Betriebsstabilität und Zuverlässigkeit im Betrieb. Sowie die beste Sicherheits- und Compliance-Bilanz.
Eines der überraschenden Dinge, die im Bericht hervorgehoben werden, ist die Metrik "Bereitstellungen pro Tag". Aber nicht nur Bereitstellungen pro Tag, sondern auch Bereitstellungen / Tag / Entwickler und was ist der Effekt des Hinzufügens von mehr Entwicklern in leistungsfähigen Organisationen im Vergleich zu nicht leistungsfähigen.
Dies ist die Grafik aus diesem Bericht -
Unternehmen mit geringer Leistung stimmen zwar mit den Annahmen von Mythical Man Month überein. Die leistungsstarken Organisationen können die Anzahl der Bereitstellungen / Tage / Entwickler linear mit der Anzahl der Entwickler skalieren.
Eine exzellente Präsentation von Gene Kim auf den DevOpsDays London 2016 spricht über diese Ergebnisse.
Wie es geht
Wie wird man eine leistungsstarke Organisation? Es gibt ein paar Bücher, die darüber sprechen, nicht genug Platz in dieser Antwort, also werde ich nur auf sie verlinken.
Für Software- und IT-Organisationen ist einer der entscheidenden Faktoren für die Entwicklung einer leistungsstarken Organisation: Konzentration auf Qualität und Geschwindigkeit .
Zum Beispiel erklärt Ward Cunningham Technical Debt als all die Dinge, die wir nicht reparieren durften. Dies wird vom Management akzeptiert, da es immer mit dem Versprechen verbunden ist, dass es repariert wird, wenn Zeit ist.
Es gibt nie genug Zeit und die technischen Schulden werden immer schlimmer.
Was sind diese Dinge, die dazu führen, dass die technische Verschuldung wächst?
- Legacy-Code
- Manuelle Konfiguration von Umgebungen
- manuelle Prüfung
- manuelle Bereitstellungen
Legacy-Code Wie in Effektiv mit Legacy-Code arbeiten von Michael Feathers definiert, handelt es sich um jeden Code, der nicht über automatisierte Tests verfügt.
Jederzeit werden Verknüpfungen verwendet, um den Code zur Produktion zu bringen. Der Betrieb ist für immer mit der Aufrechterhaltung dieser Schulden belastet. Dann wird der Bereitstellungsprozess immer länger.
Gene erzählt in seiner Präsentation eine Geschichte über ein Unternehmen, das sechs Wochen im Einsatz ist. Zehntausende von extrem fehleranfälligen, langwierigen Schritten, die 400 Menschen binden und dies viermal im Jahr tun würden.
Einer der Grundsätze von DevOps ist, dass Zuverlässigkeit durch häufigere kleinere Bereitstellungen entsteht.
Beispiel
Diese beiden Präsentationen zeigen alles, was Amazon getan hat, um den Zeitaufwand für die Bereitstellung von Code in der Produktion zu verringern.
Laut Gene ist das einzige, was sich im Laufe der Zeit in diesen leistungsstarken Unternehmen ändert, die Anzahl der Entwickler. Aus dem Amazon-Beispiel könnte man also sagen, dass sie in vier Jahren ihre Bereitstellungen zehnmal vergrößerten, indem sie einfach mehr Leute hinzufügten.
Dies bedeutet, dass unter bestimmten Bedingungen mit der richtigen Architektur, den richtigen technischen Praktiken, den richtigen kulturellen Normen und der Produktivität der Entwickler skaliert werden kann , wenn die Anzahl der Entwickler erhöht wird. Und DevOps ist definitiv mittendrin.