Jak skutecznie budować kompetencje DevOps


Choć metodyka DevOps zyskuje coraz większą popularność, w branży funkcjonują różne, nierzadko sprzeczne interpretacje tego, co właściwie kryje się za tym pojęciem. DevOps to termin, który bywa mylony z wieloma aspektami wytwarzania oprogramowania – w rzeczywistości, jest to metoda dostarczania produktów IT i, jednocześnie, inne podejście do sposobu pracy nad tymi produktami w zespole.

Dotyczy to różnorodnych zagadnień technologicznych i zarządczych – opisuje, w jaki sposób kierujemy zadaniami, a także co dzieje się pomiędzy zespołami DEVeloperskimi a OPeracyjnymi – wspierającymi działanie na środowiskach produkcyjnych. To wszystko składa się z wielu aspektów: użyte technologie, metody, dobre praktyki, sposób współpracy, zwiększanie wydajności, itp. Ostatecznie najważniejszy jest wybór takich praktyk, które będą pasować do zespołu – z tego powodu każde wdrażanie rozwiązań DevOps należy zacząć od analizy potrzeb i optymalnych metod, jakie stosuje się  w konkretnym przypadku.

DevOps: innowacyjny sposób na zwiększenie efektywności działań

Podstawową motywacją do opracowania programu DevOps Clinic w GFT Polska, była chęć zwiększenia efektywności dostarczania projektów i dopracowania sposobu wdrażania zmian tak, aby ostatecznie zwiększyć wydajność wszystkich aspektów dostarczania oprogramowania. DevOps Clinic pozwala nam doskonalić nasze zdolności w zespołach, dzięki czemu są one w stanie dostarczać produkty w ramach metodyki Agile w pełnym zakresie: projektowanie-implementacja-wdrażanie-utrzymanie. Klinika zajmuje się szerokim zagadnieniem, które nie jest zaadresowane w ramach wspomnianej metodyki Agile – wypełnia lukę, która pojawia się, gdy techniczne aspekty dostarczania oprogramowania wymykają się spod kontroli, a także spaja zespoły projektowe przez efektywną współpracę z innymi zespołami, często zewnętrznymi względem realizowanego projektu. Ciągłe usprawnianie naszej pracy wymaga osiągnięcia doskonałych wyników na wszystkich etapach projektu – dotyczy to zarówno wyzwań natury technicznej, jak i odpowiedniego podejścia do testowania, poprawienia efektywności procesów, realizowania ciągłych usprawnień itd. Ostateczny efekt jaki chcemy osiągnąć to usprawnienie całego procesu wytwarzania oprogramowania (eng. delivery pipeline).

Podczas sesji DevOps Clinic zespoły projektowe otrzymują wskazówki, które stanowią punkt odniesienia w kontekście realizacji finalnej wizji sprawnego realizowania projektu. Po konsultacjach i odpowiednim przygotowaniu zespołu, sami członkowie zespołów są w stanie dużo mniejszym kosztem wprowadzać zmiany, mające pozytywny wpływ na elementy cyklu wytwarzania oprogramowania (eng. delivery cycle). W trakcie sesji ustalamy metryki, które umożliwiają na dalszym etapie oceniać efekt zmian wprowadzanych w projektach.

Jak działa DevOps Clinic?

Polski zespół DevOps w GFT, który funkcjonuje od roku, współpracuje z projektami i prowadzi regularne sesje konsultacyjne: raz w tygodniu odbywa się zaplanowana wcześniej sesja poświęcona jednemu projektowi. Podczas spotkania, członkowie projektu przedstawiają problemy i wyzwania, w których potrzebują wsparcia.

Zespoły mogą uzyskać zarówno ogólne informacje dotyczące wizji i kierunku zmian w projekcie, jak również konkretne rozwiązania dla wyzwań, które przed nimi stoją. Samo wdrożenie zmian leży jednak poza zakresem konsultacji, gdyż za to zawsze odpowiedzialny jest sam projekt. Niemniej jednak, posiadając odpowiednią wiedzę i kierunek działania, projekty są w stanie samodzielnie identyfikować problemy i wprowadzać rozwiązania. Jeśli po konsultacjach nadal pojawią się pytania, oczywiście możemy zawsze spotkać się przy kawie bądź zorganizować kolejną sesję DevOps Clinic.

Spodziewane rezultaty działalności DevOps Clinic

Najważniejszym efektem działań DevOps Clinic jest fakt, że zespoły projektowe zyskują szerszą świadomość na temat całego procesu dostarczania oprogramowania. Opracowujemy dobre praktyki w ramach zespołów, które same do tej pory nie miały wiedzy z tego zakresu. W efekcie, stają się one w pełni kompetentne w rozwiązaniach automatyzacji i usprawniania dostarczania oprogramowania. Jesteśmy w stanie wyeliminować potrzebę nieustannego wspierania projektu dedykowaną rolą inżyniera DevOps w ramach zespołu projektowego, czyli zbudować odpowiednie kompetencje w tym zakresie wewnątrz zespołu. Wtedy zespoły stają się autonomiczne i tym samym realizują swoją pracę bardziej efektywnie, co w rezultacie przekłada się na większe zadowolenie z pracy w projekcie.

Widząc ludzi, którzy przychodzą do nas z projektów, widząc ich odpowiednie zaangażowanie i dobre zrozumienie tematu, jesteśmy w stanie nakierować ich na taki rodzaj zmian i na wprowadzanie automatyzacji, które przyniesie bardzo szybkie efekty osiągnięte niskim nakładem pracy. Takie przedsięwzięcie sprawia, że zespoły projektowe stać na większe zaangażowanie we współpracę i komunikację – ostatecznie zespoły będą w stanie kontynuować rozwój w tym zakresie całkowicie samodzielnie. To idzie w parze z ogólną praktyką wynikającą z podejścia DevOps: osoby w projektach muszą być w stanie wykonać zadania, jakie zrobiłby za nie specjalista DevOps – taki stan projektu świadczy o wysokiej jego dojrzałości i sprawnej organizacji pracy we wszystkich aspektach wytwarzania oprogramowania. Jeśli osiągniemy ten stan, wtedy dany zespół projektowy będzie znacznie bardziej zmotywowany do osiągnięcia wysokiej jakości rezultatów. Praca w ramach dobrze opisanego, spójnego procesu, pozwala na realizację prawdziwych innowacji i budowania wydajnych, nowoczesnych rozwiązań.

Wiele zespołów developerskich unika tematu automatyzacji i usprawnień procesu wytwarzania oprogramowania – jestem w stanie to zrozumieć – zainteresowanie jest skierowane na tworzenie produktu, a nie na proces wspierający. Niemniej jednak, wsparcie wytwarzania oprogramowania stanowi konieczny element całości. Jeśli pominie się ten element, można zabrnąć w sytuację bez wyjścia – ważne zadania będą wykonywane mniej efektywnie, pojawią się problemy wynikające z nagromadzenia zadań takich jak ręczna konfiguracja środowisk, ręczne wersjonowanie, wdrażanie, testowanie, wąska specjalizacja, brak współpracy, niejasne procesy, nagromadzenie zadań, zwiększanie długu technicznego itd. W pewnym momencie okazuje się, że mało efektywne podejście do organizacji procesu wytwarzania pochłania ok. 20-30% czasu każdego członka zespołu projektowego – i jest to czas, który należy poświęcić na zadania zbędne, które nie przynoszą korzyści projektowi i zespołowi. Chcemy wyeliminować tego rodzaju straty w najszerszym możliwym zakresie – DevOps Clinic pomaga osiągnąć ten cel.