Zastanawiałeś się kiedyś co to dokładnie jest DevOps? A może widziałeś ogłoszenia o pracę, gdzie szukano „Inżyniera DevOps”? W tym wpisie postaram się pokrótce opisać, czym to właściwie jest, a czym nie.
Pierwszą rzeczą, o której należy wspomnieć jest to, że DevOps jest właściwie filozofią pracy i podejścia do rozwiązywania problemów w trakcie wytwarzania i używania oprogramowania (oraz całych systemów). Różne organizacje mają różne podejście do zagadnienia, jednak wszystkie oscylują mniej więcej wokół tego samego. Otóż, wyróżniamy część „Dev” odpowiedzialną za wytwarzanie kodu źródłowego i jego pochodnych, oraz część „Ops” odpowiedzialną za jego utrzymanie i poprawne działanie systemu. Dodatkowo, osoba (najczęściej inżynier) „zajmująca się DevOpsem”, ma za zadanie pomóc programistom i innym zaangażowanym osobom w rozwiązywaniu bieżących problemów nie tylko związanych z oprogramowaniem ale również ze sprzętem (rola administratora).

Powyższa grafika prezentuje cykl DevOps w jego kolejnych fazach poczynając od części oznaczonej jako „plan”:
– plan – planowanie jest jedną z pierwszych czynności do wykonania po otrzymaniu zadań. Jeśli klient zażyczy sobie działający system, to musimy wiedzieć kogo potrzebujemy do wykonania zadań, jakie umiejętności posiadamy, a jakich nie, w jaki sposób uzupełnić te braki oraz ile to wszystko będzie kosztować (zarówno w roboczogodzinach jak i w zajęciu personelu).
– code – jeśli wszystko mamy już zaplanowane, to przystępujemy do budowania aplikacji i/lub całego systemu, który zaplanowaliśmy. W tym miejscu zaczynają pojawiać się pierwsze pomysły na usprawnienia, wychodzą nieścisłości oraz widać, o czym się zapomniało.
– build – gdy już kod jest gotowy, można przystąpić do budowania systemu czyli jego kompilacji i jego uruchomienia. Jeśli uda się za pierwszym razem, to świetnie. Jeśli nie, to należy problem zbadać i naprawić.
– test – system musi zostać przetestowany zanim trafi do klienta. W przeciwnym wypadku końcowy klient może być niezadowolony z wyniku. Testami zajmują się testerzy automatyczni, manualni ale też inżynierowie jakości.
– release – gdy już wszystkie testy przeszły na zielono, wszystkie znalezione błędy zostały poprawione i nie ma zastrzeżeń, można wydać system.
– deploy – w tej fazie pokazujemy oprogramowanie światu i w tym miejscu zwykli użytkownicy mogą dodać coś od siebie. Początkowo można wypuścić oprogramowanie do kilku procent użytkowników, którzy z chęcią poinformują o swoich odczuciach (tzw. early adopters).
– operate – tutaj już wszyscy używają oprogramowania. Pamiętajmy, że nawet największe organizacje zatrudniające kilka tysięcy pracowników, nie mogą sobie pozwolić na to, aby zaangażować taką ilość osób do testów. Jeśli jednak oprogramowanie pobierze kilkadziesiąt tysięcy (a może nawet milionów) osób, każda wykona jakąś czynność i przy okazji znajdzie niedziałającą część oprogramowania, to można wówczas nanieść dalsze poprawki albo też zmienić jakąś funkcjonalność. W końcu, to klient decyduje czy oprogramowanie odniesie sukces czy też nie!
– monitor – jest to ostatnia, ale też bardzo ważna faza odpowiadająca za sukces końcowy. Musimy wiedzieć czy nasz system działa. W przeciwnym wypadku może się okazać, że wielomiesięczny projekt zakończy się porażką, gdyż użytkownicy po prostu nie będą w stanie używać naszej platformy. Jeśli tworzymy portal z najnowszymi wiadomościami, to chcemy aby działał cały czas bo jeśli tak się nie stanie, to użytkownicy odpłyną do konkurencji. To samo dotyczy się sklepów internetowych – klient, po ujrzeniu białej strony, po prostu uda się do innej zakładki w przeglądarce, a nam ucieknie potencjalny zysk. W tym miejscu jesteśmy też w stanie wykryć potencjalne zagrożenia dla platformy oraz zweryfikować nasze założenia początkowe. Wówczas możemy zaplanować implementację i cykl rozpocznie się od początku.
Powyższe jest tylko krótkim i subiektywnym opisem cyklu DevOps. Jeśli chcesz wiedzieć więcej na ten temat oraz zobaczyć, jak inne organizacje za branży IT zapatrują się na zagadnienie, to więcej informacji znajdziesz na:
https://azure.microsoft.com/pl-pl/overview/what-is-devops/
https://aws.amazon.com/devops/what-is-devops/
https://www.atlassian.com/devops/what-is-devops
