Zgodnie z raportem No Fluff Jobs, polskiego portalu promującego oferty pracy w branży IT, w roku 2020 mimo światowego kryzysu DevOpsi wciąż byli na liście najbardziej poszukiwanych i najwyżej zarabiających pracowników w tym sektorze, ustępując miejsca jedynie specjalistom z dziedzin bezpieczeństwa i Big Data. Rozległa wiedza, wymagana by efektywnie pełnić tę rolę, wiąże się z zarobkami często przekraczającymi próg 16 000 PLN, te natomiast zwracają uwagę zarówno osób dopiero zaczynających swoją przygodę z IT, jak i weteranów branży. W drugiej połowie 2021 mówi się już nawet o pewnej modzie na DevOpsów. Jaką więc rolę pełni ten specjalista, jaką trzeba mieć wiedzę i gdzie się tego wszystkiego nauczyć?
Rola DevOpsa
O DevOpsach mówi się, że są pomostem pomiędzy deweloperami a zespołem operacyjnym. Tym samym zakres ich działań jest bardzo zróżnicowany i obejmuje następujące zagadnienia:
- monitorowanie działań zespołu operacyjnego w celu szybkiej identyfikacji i rozwiązania potencjalnych problemów z infrastrukturą, siecią czy oprogramowaniem
- pośredniczenie i koordynacja działań między deweloperami a działem operacyjnym
- pisanie kodu i skryptów, by zautomatyzować procesy, zgodnie z przekonaniem, że jeśli coś da się zautomatyzować, to powinno być to zautomatyzowane
- konteneryzacja w celu szybszego wdrażania, łatwiejszej integracji i sprawniejszego wprowadzania zmian
- wirtualizacja na potrzeby tworzenia i testowania oprogramowania w symulowanych środowiskach
- sprawne funkcjonowanie w chmurze i wdrażanie nowych rozwiązań
- testowanie oprogramowania
- monitorowanie bezpieczeństwa – tutaj możemy mówić o wyodrębnieniu nowego stanowiska (SecOps), po więcej informacji na ten temat warto zajrzeć tutaj
Co trzeba, a co warto wiedzieć?
Bez wątpienia jest to praca dla tych, którzy lubią nieustanny rozwój. Zakres wymaganej wiedzy na stanowisku DevOps jest szeroki, dlatego też osoby, które już wcześniej pracowały w IT mogą mieć łatwiejszy start, dotyczy to np. administratorów systemów lub baz danych. Ważne jest, aby znać przynajmniej jeden język programowania, w tym zakresie do najbardziej popularnych i cenionych należą Python, Java, Bash/Shell oraz Golang. Dobra znajomość kodowania pozwoli DevOpsowi zająć się niektórymi sprawami osobiście bez konieczności angażowania innych deweloperów. Będzie mu też łatwiej porozumieć się z resztą kodującego zespołu. Kluczowa jest znajomość głównych dystrybucji linuksowych, takich jak RedHat i Ubuntu. Znajomość innych dystrybucji często postrzegana jest jako plus, ale wiele z nich to pochodne tych wcześniej wspomnianych. DevOps musi znać się na infrastrukturze i różnych narzędziach do jej monitorowania, min. Icinga, Zabbix czy Prometheus. Pomoże to w identyfikacji problemów i opracowywaniu rozwiązań. Na polskim rynku najpopularniejszymi chmurami są AWS, MS Azure i Google Cloud Platform – specjalista DevOps powinien szczegółowo znać przynajmniej jedną z nich. Jako że zagadnienia związane z siecią również stanowią podstawową wiedzę dla DevOpsa, od niedawna coraz częściej słyszy się również o NetOps, czyli podkategorii która jeszcze bardziej skupia się na tej tematyce. Umiejętność wirtualizacji hardware’u i klonowania systemów ułatwi zespołom rozwijanie oprogramowania i jego testowanie. Znajomość narzędzi do automatyzacji, takich jak Ansible, Puppet, Kubernetes czy Jenkins, przyspieszy tworzenie kodu, testowanie i wdrażanie. Git jest podstawowym narzędziem kontroli wersji oprogramowania, DevOpsi na porządku dziennym korzystają z Github. Staranne prowadzenie dokumentacji jest kluczowe, aby praca przebiegała sprawnie i bez postojów. Kolejne wymagane narzędzia to np. Jira lub Trello do zarządzania projektami, Ansible, Chef, Terraform do zarządzania konfiguracją oraz Docker lub Kubernetes do kontenerów. Praktyki ciągłej integracji i ciągłego dostarczania (CI/CD – continuous integration, continuous delivery) leżą u podstaw metodyki DevOps. Wspominaliśmy już wcześniej o zagadnieniach związanych z bezpieczeństwem. Jest to obszar na tyle rozległy, że od niedawna mówi się o podkategoriach SecOps lub DevSecOps. Jeśli chodzi o kompetencje miękkie, specjalista DevOps powinien rozwijać umiejętności współpracy i chętnie przyswajać nowe rozwiązania istotne dla stanowiska. Jako, że środowisko DevOps jest bardzo dynamiczne, osoba pełniąca tę funkcję musi być otwarta na zmiany. Filozofia DevOps opiera się na komunikacji, przejrzystości, współpracy, współdzielonej odpowiedzialności za projekt i zniesieniu barier pomiędzy poszczególnymi działami.
Gdzie i jak się tego uczyć
Trudniejszym pytaniem może być, jakie obrać podejście w przyswajaniu wiedzy – czy uczyć się wielu technologii w mniejszym stopniu, czy też skupić się na jednym konkretnym rozwiązaniu? W znacznym stopniu zależeć to będzie od firmy i jej potrzeb. Praca DevOpsa zazwyczaj wiąże się z częstymi zmianami projektów, co wpływa na to jakie technologie będą mu w danej chwili potrzebne. Przy przejściu z jednego projektu do drugiego lub zmianie firmy nauka innych narzędzi może okazać się konieczna. Trzeba być przygotowanym na to, że rola DevOpsa oznacza ciągły i wielowymiarowy rozwój. Pomoże w tym udział w meetupach, kursach i szkoleniach. Osoby zainteresowane tematem powinny czytać branżowe blogi i śledzić specjalistów z tej dziedziny na portalach społecznościowych. Pomocne okażą się również tutoriale, np. te dostępne w serwisie YouTube i na stronie fundacji.
Podsumowanie
Nie podlega wątpliwościom, że DevOps to obecnie jedna z najszerszych dziedzin w IT, stąd też coraz więcej pochodnych od tego stanowiska. Praca w tej roli przynosi wiele wyzwań, ale też satysfakcji i korzyści finansowych. O tych ostatnich bardziej szczegółowo piszemy w oddzielnym artykule.