Cztery poziomy dojrzałości

DevOps umożliwia skrócenie czasu wdrażania o 70% i redukcję testów regresyjnych z 5 dni do 5 godzin. Osiągnięcie takich rezultatów wymaga jednak stałego doskonalenia i rozszerzenia praktyk zalecanych przez tę metodologię.

Podejście DevOps nakazuje bliską współpracę pionów rozwoju i operacji, co ma na celu usprawnienie przebiegu procesów wiodących oraz poprawę jakości produktu. Wspierane jest to przez automatyzację infrastruktury i procesów oraz ciągłe mierzenie wydajności wprowadzanych zmian. Jednocześnie wymaga ujednolicenia ośrodków odpowiedzialności oraz edukowania pionów IT, że wspólnie można łatwiej i szybciej osiągać zamierzone cele. Wprowadzanie praktyk DevOps wiąże się jednak z szeregiem zmian organizacyjnych i kulturowych, a dojście do perfekcji wymaga czasu.

Tabela przedstawia cztery poziomy rozwoju i doskonalenia procesów ciągłej dostawy oprogramowania. Poziomy te odnoszą się do czterech etapów procesu dostarczania oprogramowania: (1) planowania i pomiaru, (2) programowania i testowania, (3) wdrażania (4) monitoringu i optymalizacji. Mając wiedzę na temat dojrzałości własnej organizacji, można przyspieszyć adaptację DevOps, aby osiągać coraz większe korzyści, jednocześnie unikając kosztownych pomyłek.

Chcąc osiągać kolejne poziomy dojrzałości, organizacja musi zadbać nie tylko o poszczególne etapy procesu dostarczania oprogramowania, ale również o powiązane z tym etapem praktyki i operacje. Na przykład, do skutecznego wdrożenia ciągłości w testowaniu rozwiązań, potrzebna jest jednocześnie zdolność ciągłej integracji i kompilacji aplikacji, jak i zdolność stałego wdrażania zmian w środowisku testowym. Na każdym z czterech etapów dostarczania oprogramowania organizacja może niezależnie osiągać kolejne poziomy dojrzałości, a w każdym etapie ścieżka rozwoju wygląda nieco inaczej.

Planowanie i pomiar

Na poziomie stosowanym organizacja określa cele biznesowe w dokumentacji do każdego projektu, aby były zgodne ze strategią, ale zarządzanie zasobami odbywa się na poziomie działów. Wraz z dojrzewaniem organizacji potrzeby biznesowe są dokumentowane z uwzględnieniem korporacyjnego kontekstu i mierzone pod kątem zgodności z oczekiwaniami klienta. Te potrzeby otrzymają następnie priorytety i są przydzielane do realizacji oraz łączone z wymaganiami projektu. Zmiany dotyczące projektu lub zakresu prac są zarządzane na poziomie całego portfolio.

Programowanie i testowanie

Na poziomie stosowanym zespoły projektowe i programistyczne realizują wiele cykli tworzenia oprogramowania w formie dokumentów mających przedstawiać ich wymagania, projekty czy plan testów. Zmiany w kodzie czy kolejne kompilacje aplikacji są przeprowadzane periodycznie, aby zapewnić zasoby potrzebne do realizacji zadań. Wraz z dojrzewaniem organizacji cykle deweloperskie są powiązywane ze sobą na poziomie obiektów, aby poprawić współpracę w ramach poszczególnych zadań. Dostarczanie aplikacji, integracja i kompilacja z testami jednostkowymi są przeprowadzane rutynowo i ciągle dla poszczególnych programistów, zespołów, aplikacji i produktów.

Wdrożenie

Na poziomie stosowanym wdrożenia są planowane w cyklu rocznym. Krytyczne poprawki czy inne nieplanowane wersje są wprowadzane, jeśli pojawi się taka potrzeba. Wszystkie są zarządzane z wykorzystaniem arkusza aktualizowanego podczas bezpośrednich spotkań. Analiza wpływu zmian jest prowadzona ręcznie. Wraz z doskonaleniem praktyk nowe wersje oprogramowania są zarządzane centralnie, z użyciem automatycznych mechanizmów śledzenie statusu poszczególnych aplikacji. Wdrożenia stają się zautomatyzowane, podobnie jak dostarczanie zasobów infrastruktury.

Monitoring i optymalizacja

Na poziomie stosowanym wdrożone zasoby są monitorowane, a reakcja na problemy ma miejsce w momencie ich wystąpienia i odbywa się bez uwzględnienia kontekstu aplikacji, której dotyczą. Koordynacja między zespołami rozwoju i operacji ma z reguły nieformalny charakter. Informacje zwrotne od użytkowników są zbierane poprzez sformalizowane programy. Wraz z dojrzewaniem organizacji monitoring jest realizowany z uwzględnieniem kontekstu aplikacji, optymalizacja następuje już w środowisku QA, aby poprawić stabilność, dostępność I ogólną wydajność. Opinie użytkowników są monitorowane, aby optymalizować aplikacje, co jest częścią programu ciągłego poprawiania.