Co to jest MMM
Najpierw chcę wyjaśnić kontekst prawa Brook'a. Jakie założenie skłoniło go do stworzenia go w 1975 roku?
Miesiąc roboczy to hipotetyczna jednostka pracy reprezentująca pracę wykonaną przez jedną osobę w ciągu jednego miesiąca; Prawo Brooksa mówi, że nie można zmierzyć użytecznej pracy w ciągu osobo-miesięcy.
źródło: https://en.wikipedia.org/wiki/The_Mythical_Man-Month
W przeszłości złożone projekty programistyczne oznaczałyby duże systemy monolityczne. Brooks twierdzi, że nie można ich idealnie podzielić na odrębne zadania, nad którymi można pracować bez komunikacji między programistami i bez ustanawiania zestawu złożonych relacji między zadaniami a osobami je wykonującymi.
Jest to bardzo prawdziwe w przypadku bardzo spójnych monolitów oprogramowania. Bez względu na to, jak wiele oddzielenia zostało zrobione, wciąż duży monolit nakazuje czas potrzebny nowym programistom na poznanie monolitu. Zwiększony narzut komunikacji, który zużywa coraz więcej dostępnego czasu.
Ale czy tak naprawdę musi tak być? Czy musimy pisać monolity i utrzymywać kanały komunikacji n(n − 1) / 2
tam, gdzie n
jest liczba programistów?
Wiemy, że istnieją firmy, w których tysiące programistów pracuje nad dużymi projektami ... i to działa. Musi więc coś się zmienić od 1975 roku.
Możliwość ograniczenia MMM
W 2015 r. PuppetLabs i IT Revolution opublikowały wyniki raportu o stanie DevOps z 2015 r . W raporcie skupiono się na rozróżnieniu między organizacjami o wysokich wynikach a organizacjami o niższych wynikach.
Wysoko wydajne organizacje wykazują nieoczekiwane właściwości. Na przykład, mają najlepszą wydajność w czasie realizacji projektu. Najlepsza stabilność operacyjna i niezawodność w działaniu. Jak również najlepsze osiągnięcia w zakresie bezpieczeństwa i zgodności.
Jedną z zaskakujących rzeczy podkreślonych w raporcie jest liczba wdrożeń na dzień. Ale nie tylko wdrożenia dziennie, zmierzyli także wdrożenie / dzień / programistę i jaki jest efekt dodania większej liczby programistów w organizacjach o wysokiej wydajności w porównaniu do organizacji o niskiej wydajności.
To jest wykres z tego raportu -
Podczas gdy organizacje o niskiej wydajności dostosowują się do założeń Mythical Man Month. Wysoko wydajne organizacje mogą liniowo skalować liczbę wdrożeń / dni / deweloperów w zależności od liczby programistów.
Doskonała prezentacja Gene Kim na DevOpsDays London 2016 mówi o tych ustaleniach.
Jak to zrobić
Po pierwsze, jak zostać organizacją o wysokich wynikach? Jest kilka książek, które mówią o tym, za mało miejsca w tej odpowiedzi, więc po prostu będę do nich link.
W przypadku oprogramowania i organizacji IT jednym z kluczowych czynników umożliwiających uzyskanie wysokiej wydajności organizacji jest: skupienie się na jakości i szybkości .
Na przykład Ward Cunningham wyjaśnia Dług Techniczny jako wszystkie rzeczy, które pozwolono nam pozostawić nierozwiązane. Jest to akceptowane przez kierownictwo, ponieważ zawsze wiąże się z obietnicą, że zostanie to naprawione w odpowiednim czasie.
Nigdy nie ma wystarczająco dużo czasu, a zadłużenie techniczne staje się coraz gorsze.
Co powoduje wzrost długu technicznego?
- starszy kod
- ręczna konfiguracja środowisk
- testowanie ręczne
- ręczne wdrożenia
Starszy kod Zgodnie z definicją podaną w części „Efektywna praca ze starszym kodem” autorstwa Michaela Feathersa, każdy kod, który nie ma automatycznego testowania.
Wszelkie skróty czasowe służą do wprowadzenia kodu do produkcji; operacje są obciążone utrzymywaniem tego długu na zawsze. Następnie proces wdrażania staje się coraz dłuższy.
Gene w swojej prezentacji opowiada historię firmy, która ma sześciotygodniowe wdrożenia. Zaangażowanie dziesiątek tysięcy wyjątkowo podatnych na błędy żmudnych kroków, wiążących 400 osób, i robiliby to cztery razy w roku.
Jednym z założeń DevOps jest to, że niezawodność wynika z częstszego wykonywania mniejszych wdrożeń.
Przykład
Te dwie prezentacje pokazują wszystkie rzeczy, które Amazon zrobił, aby skrócić czas potrzebny na wdrożenie kodu na produkcji.
Według Gene'a jedyną rzeczą, która zmienia się w czasie w tych wysoko wydajnych organizacjach, jest liczba programistów. Tak więc na przykładzie Amazona można powiedzieć, że w ciągu czterech lat zwiększyli swoje wdrożenia dziesięciokrotnie, dodając więcej osób.
Oznacza to, że pod pewnymi warunkami, przy odpowiedniej architekturze, właściwych praktykach technicznych, właściwych normach kulturowych, produktywność programistów może rosnąć wraz ze wzrostem liczby programistów. DevOps jest zdecydowanie w środku tego wszystkiego.