Jak mierzyć pracę Devops
Kamil Porembiński
Kamil Porembiński
01.02.2016

Jak mierzyć pracę Devops?

Twoja firma korzysta teraz z metodologii DevOps. Zintegrowałeś już rozwój, eksploatację i zapewnienie jakości, a także drastycznie odsunąłeś się od gwałtownych działań, a zbliżyłeś się do zrównoważonego rozwoju aplikacji. Jak masz dowiedzieć się, jak dobrze działa takie rozwiązanie? Skąd wiesz, czy w ogóle działa?

Wiele nowych firm, które korzystają z tego podejścia, jest zaskoczonych tym, że rozpoczęcie działań było prostsze, niż myślały, ale trudniejsze w utrzymaniu przy życiu. Mogą to powodować groźne nawyki lub po prostu fakt, że zespół jest zbyt przytłoczony. Jednym słowem potrzebujesz mierników.

Potrzebujesz mierników nie tylko jako sposobu do mierzenia sukcesu (lub jego braku) DevOps, ale również jako sposobu do sprawdzenia, w jaki sposób sukces ten można zwiększyć, zmodyfikować lub wydłużyć. Bez nich działasz na oślep. Z nimi natomiast masz holistyczny punkt widzenia – wiesz, gdzie jesteś, dokąd zmierzasz, dokąd możesz zmierzać i jak się tam dostać. Nie mówię jednak teraz o narzędziach analitycznych, które mierzą działania wewnątrz rozwoju. Mówię o mierzeniu samego rozwoju.

Jakie czynniki mierzą mierniki DevOps? W przeważającej części mierzą takie aspekty jak szybkość rozwoju, wdrażanie i reakcję klienta, a także częstotliwość wdrożeń i awarii, czas naprawy, objętość żądań naprawy i współczynnik zmian w powyższych wskaźnikach. Mierniki te najczęściej skupiają się na wdrożeniu, eksploatacji i wsparciu (w przeciwieństwie do np. projektowania i wdrożenia we wczesnym stadium), ponieważ większość toczącego się wysiłku związanego z DevOps odbywa się w tych obszarach.

Większość mierników DevOps dzieli się na trzy główne kategorie:

  • Ludzie. Ludzie są nieodłącznym elementem każdego procesu DevOps. Mierniki zorientowane na ludzi mierzą między innymi wyniki, możliwości i czas reakcji. Zawsze zaczynaj od ludzi. Mogą być najtrudniejszym elementem, a ich wpływ trudno niekiedy zauważyć.
  • Proces. Na pewne sposoby DevOps skupia się głównie na procesie – ciągły cykl wdrożeń, eksploatacji i wsparcia to ciągły pakiet przeplatających się procesów. Jednak niektóre mierniki są bardziej zorientowane na proces, niż inne, zwłaszcza te, które obejmują ciągłą realizację zadań, reakcję i naprawę. Czas realizacji rozwoju do wdrożenia to, przykładowo, miernik w ogromnym stopniu zorientowana na proces, podobnie jak częstotliwość wdrożeń i czas reakcji. mierniki dotyczące procesu mogą mierzyć prędkość (gdzie znajdują się wąskie gardła? Czy sam proces jest wąskim gardłem?), adekwatność (czy wszystkie kroki są istotne?), skuteczność (czy proces realizuje zadanie?) lub wydajność (czy kroki znajdują się w optymalnej kolejności? Czy w procesie obecny jest swobodny przepływ?).
  • Technologia. Mierniki dotyczące technologii odgrywają ważną rolę w DevOps, mierząc, między innymi, czas sprawności (przez jaki procent czasu działa system? Co z siecią i aplikacjami wspomagającymi?) oraz wskaźnik awaryjności (jaki procent stanowią nieudane wdrożenia, zmiany lub jednostki?).

Oczywiście wiele mierników DevOps w większym lub mniejszym stopniu obejmuje wszystkie trzy kategorie. Możliwe, że najprostszym sposobem sprawdzenia, czy mierniki działają w praktyce, jest spojrzenie na kluczowe mierniki Puppet Labs:

Częstotliwość wdrożeń (lub zmian)

Praktyki DevOps umożliwiają częste i ciągłe wdrożenia; potężne witryny internetowe o wysokim natężeniu ruchu oraz usługi oparte o technologię w chmurze sprawiają, że są one koniecznością. Dzięki szybkiej informacji zwrotnej i rozwojowi w małych partiach, zaktualizowane oprogramowanie można wdrożyć co kilka dni, a nawet kilka razy dziennie. W środowisku DevOps częstotliwość wdrożeń może być pośrednim lub bezpośrednim miernikiem czasu reakcji, spójności zespołu, możliwości rozwoju, skuteczności narzędzi rozwoju i ogólnej efektywności zespołu DevOps.

Czas realizacji zmian

Czas realizacji zmian to czas od rozpoczęcia cyklu wdrożeń (pierwszego nowego kodu) do wdrożenia. Mierzy on wydajność procesu rozwoju, złożoność kodu oraz systemy wdrożeń, a także (jak częstotliwość wdrożeń) możliwości zespołu i dewelopera. Jeśli czas realizacji zmian jest zbyt długi, może wskazywać na to, że proces rozwoju/wdrożenia na pewnych etapach jest nieefektywny, lub że obejmuje problemy z wydajnością.

Wskaźnik awaryjności zmian

Jednym z głównych celów DevOps jest zamiana szybkich i częstych wdrożeń na codzienne działania. Rzecz jasna, aby takie wdrożenia miały wartość, wskaźnik awaryjności musi być niski. W rzeczywistości powinien maleć z czasem, ponieważ zwiększają się doświadczenie i możliwości zespołów DevOps. Rosnący wskaźnik awaryjności lub taki, który jest wysoki i nie maleje z czasem, to skuteczna oznaka problemów w całym procesie DevOps.

Średni czas naprawy (MTTR)

To czas od pojawienia się awarii do jej naprawy. To dobry sposób pomiaru możliwości zespołu i, podobnie jak wskaźnik awaryjności, powinien pokazywać ogólny spadek w czasie (pozwalając na okazjonalne dłuższe czasy naprawy w momencie, kiedy zespół napotyka problem, z którym nie jest technicznie zaznajomiony). Na MTTR mogą wpływać takie elementy jak złożoność kodu (lub platformy), liczba nowych wdrażanych funkcji, a także zmiany w środowisku operacyjnym (takie jak migracja do nowego serwera w chmurze).

W oparciu o te mierniki, idealny zespół DevOps przyczyniłby się do częstych, szybkich wdrożeń z niskim (i malejącym) wskaźnikiem awaryjności oraz krótkim (i zmniejszającym się) czasie reakcji. W praktyce oczywiście mogą pojawić się czynniki, które są sprzeczne z tymi trendami — przykładowo mniejsza potrzeba lub możliwość dotycząca częstych wdrożeń lub częste zmiany w warunkach eksploatacji lub wymaganiach. Na ogół jednak mierniki te obejmują niektóre z najważniejszych problemów z wydajnością w DevOps.

Najważniejsze jest jednak to, że jeśli korzystasz z metodologii DevOps, potrzebujesz mierników i dobrych narzędzi pomiaru. Bez nich nie będziesz miał żadnej możliwości dowiedzenia się, czy zastosowanie DevOps wykonuje to, czego oczekujesz lub czy obejmuje problematyczne obszary, które wymagają Twojej uwagi.

W każdym razie dobre mierniki DevOps powinny obejmować cztery obszary określone powyżej (częstotliwość wdrożeń, czas realizacji, wskaźnik awaryjności oraz czas naprawy) wraz z innymi głównymi wskaźnikami istotnymi dla Twojej firmy. Dobre narzędzia do pomiaru DevOps powinny przedstawiać również informacje w przejrzysty, szczegółowy, dokładny i łatwo konfigurowalny sposób, pozwalając na szybkie skupienie się na potencjalnych problematycznych obszarach i innych kluczowych elementach w procesie DevOps.

Narzędzia, które mierzą wydajność DevOps zazwyczaj monitorują procesy i warunki w czasie rzeczywistym (takie jak czas sprawności i przestojów lub wielkość natężenia ruchu) oraz rejestrują zdarzenia (buildy, wdrożenia, awarie, zgłoszenia napraw itd.). Bardziej uogólnione narzędzia do zarządzania projektami, które śledzą czynniki takie jak harmonogram projektu lub cele vs. wydajność, mogą również dostarczać cennych mierników DevOps.

Warto zwrócić uwagę na następujące aspekty: kiedy zaczniesz blisko przyglądać się miernikom, zauważysz, że wiele z nich jest dostępnych. Zanim zagłębisz się w mierniki, ważne jest, aby dokładnie zrozumieć, które mierniki są dla Ciebie ważne oraz w jaki sposób będą miały zastosowanie dla Twojego programu DevOps. Jeśli nie wiesz czego szukasz, możesz łatwo zgubić się w labiryncie danych, które nie są do końca istotne. Jeśli jednak będziesz skupiony, możesz sięgać prosto po złoto, które oferują mierniki DevOps i dobrze je wykorzystać.