W ostatnich latach w branży IT coraz popularniejszym pojęciem staje się DevOps. Upowszechnienie się określenia nie idzie jednak w parze ze świadomością, co ono właściwie oznacza. W niniejszym artykule postaram się to nieco wyjaśnić.
Czym jest DevOps?
DevOps to portmanteau, czyli zbitka wyrazowa składająca się ze słów Development oraz Operations. Oznacza metodykę prowadzenia projektów IT kładącą nacisk na ścisłą współpracę między zespołami odpowiedzialnymi za rozwój oprogramowania (Dev) oraz tymi zajmującymi się operacjami (Ops). Bez szerszego omówienia zadań wymienionych powyżej zespołów cały niniejszy akapit brzmi jednak jak pleonazm. Podłoga zrobiona jest z podłogi, a masło ma maślany smak.
Czym zajmuje się dział Operations?
Kompetencje tego departamentu są bardzo szerokie. W skrócie, odpowiada on za to, w jaki sposób dział IT ma być zarządzany, zarówno pod kątem sprzętu jak i software. Innymi słowy decyduje, w jakim kierunku oprogramowanie ma być rozwijane. Aby jednak obrać poprawny kurs, niezbędne jest zebranie informacji zwrotnej od użytkowników – to również zadanie działu Operations.
Wśród innych kompetencji omawianego departamentu należy zapewnianie wsparcia, czyli prowadzenie helpdesku. Oznacza to, ze dział Operations musi pozostawać w stałym kontakcie zarówno z użytkownikami produktu, jak i deweloperami. Mamy zatem do czynienia z dwiema organellami wewnątrz jednej komórki – przepływ informacji między nimi musi być płynny i niezakłócony, zaś działanie jednej jest zależne od drugiej.
A gdyby tak zlikwidować podział?
Wracamy do definicji słowa DevOps, zarysowanej we wstępie. Współpraca między dwiema grupami ludzi w dziale IT tak ścisła, jak gdyby złączyły się one w jeden organizm. Jakie konsekwencje niesie za sobą takie likwidowanie podziałów?
Metodyka DevOps znacząco przyspiesza rozwój produktu. Jest to możliwe dzięki ciągłej wymianie informacji między działami oraz stosowaniu iteracyjnego modelu pracy. W przeciwieństwie do powszechnego kiedyś modelu kaskadowego (Waterfall), w którym każdy etap rozwoju oprogramowania był traktowany jako osobne zadanie rozpoczynane po zakończeniu poprzedniego, tutaj procesy planowania, analizy, projektu i implementacji przeplatają się. W ten sposób wytwarzanie produktu staje się bardziej elastyczne.
Stosowanie metodyki DevOps pozwala zaoszczędzić firmie czas i pieniądze. Przede wszystkim, umożliwia szybkie dostarczenie działającego produktu. Oczywiście, nie oznacza to, że pierwsza iteracja skutkuje stworzeniem finalnej wersji oprogramowania. Niemniej, dzięki utworzeniu MVP (minimum viable product) można kontynuować rozwój w momencie, gdy software już działa i jest wykorzystywany. W ten sposób klient jest w stanie zrewidować swoje założenia i, na przykład, ponownie zdefiniować potrzeby. Dzięki ścisłej współpracy ludzi, którzy w standardowym modelu pracy byliby rozdzieleni na dwa zespoły (Development i Operations), nie traci się czasu na stworzenie pełnej wersji oprogramowania, zebrania feedbacku, ponownej analizy i działania od zera. Zamiast tego, informacje zwrotne są zbierane już przy pierwszej iteracji produktu i można je przekazywać programistom, którzy są zorientowani na szybkie wydawanie kolejnych wersji efektów swojej pracy.
Cykl życia oprogramowania
Software przez cały czas musi podlegać rozwojowi. Dotyczy to zarówno implementacji nowych funkcjonalności, jak i zwyczajnego usuwania błędów czy łatania luk bezpieczeństwa. Te działania odbywają się jeszcze długo po oddaniu pierwszej finalnej wersji oprogramowania klientowi. Ponownie, metodyka DevOps znacząco usprawnia pracę na tej płaszczyźnie.
Dział Operations, we współpracy ze zleceniodawcą, określa kierunek rozwoju dla produktu. Pomaga wyznaczyć cele oraz zbiera informacje zwrotne – co działa dobrze, co można poprawić, jakie funkcje dodać a jakie zlikwidować. Dzięki ścisłej współpracy z działem Development wprowadzanie takich zmian jest płynne. Zamiast czekać, aż sugestii będzie wystarczająco dużo by opłacało się pisać program od zera, można tworzyć wiele następujących po sobie iteracji, z których każda rozwiązuje jeden z problemów. W ten sposób klient ma poczucie, że jego sugestie są traktowane poważnie, gdyż spotykają się z szybką reakcją.
Ograniczenie ilości błędów
Istotnym elementem metodyki DevOps jest automatyzacja. Mogłoby się wydawać, że jej celem jest przyspieszenie pracy, ale w rzeczywistości nie o to chodzi w pierwszej kolejności. Ludzie, w przeciwieństwie do maszyn, nie radzą sobie zbyt dobrze z powtarzalnymi zadaniami. Wraz ze wzrostem doświadczenia wykonują je coraz szybciej, ale wiąże się to z popadaniem w rutynę mogącą skutkować popełnianiem błędów. W przypadku tworzenia aplikacji, gdzie wykorzystywanych jest wiele technologii i zasobów, jest to bardzo niebezpieczne.
Zautomatyzowanie procesów wdrażania nowych wersji oprogramowania, zwłaszcza w sytuacji gdy następują one bardzo szybko po sobie, to konieczność. Za pomocą dedykowanych narzędzi możliwe jest ograniczanie ryzyka – zespół zajmuje się tworzeniem aplikacji, zaś algorytm upewnia się, że konkretna iteracja nadaje się do publikacji. Pozwala to na przykład na zapewnienie regularności wydawniczej. Za przykład może posłużyć komunikator Messenger, którego kolejne wersje publikowane są co 3 dni.
Czy ciężko jest wdrożyć metodykę DevOps?
Nie. Nie ma konieczności wywracania firmy do góry nogami. Proces scalania działów Development i Operations, a także wdrażania różnorakich nowych rozwiązań, nie musi odbywać się z dnia na dzień. Jest to działanie o niewielkim stopniu inwazyjności, nie zmusza do całkowitej zmiany nawyków w pracy. Co więcej, pierwsze korzyści wynikające z przejścia na DevOps w większości firm można odnotować już po 2-3 miesiącach od rozpoczęcia transformacji.