Kim jest DevOps Engineer i jak nim zostać?
DevOps (w zasadzie należałoby napisać DevOps Engineer, ale często w skrócie mówimy po prostu “DevOps” i tym skrótem będziemy się tu posługiwać) ułatwia życie wszystkim innym w projekcie. Koncentruje się na automatyzacji procesu wytwarzania i nadzorowania oprogramowania, co może oznaczać wiele rzeczy: zarządzanie repozytorium kodu, przygotowywanie infrastruktury, tworzenie pipeline’ów CI/CD, monitoring aplikacji i infrastruktury i wiele więcej. Dla mnie DevOps jest fundamentem płynnej pracy w trakcie tworzenia projektu, jak i później, kiedy jest on już uruchomiony produkcyjnie.
Spis treści
Co oznacza DevOps i kim jest Devops Engineer?
DevOps (Dev-development i Ops-operations) – metodyka wytwarzania oprogramowania bazująca na komunikacji i lepszym systemie zależności pomiędzy utrzymaniem i rozwojem oprogramowania. DevOps kładzie nacisk na dobrą współpracę i zwinne zarządzanie projektami, co przekłada się na efektywność i redukcję ilości możliwych błędów.
Pojęcie DevOps zostało po raz pierwszy zaprezentowane przez Patricka Debois podczas konferencji w Belgii w 2009 roku.
DevOps Engineer to osoba, która w swojej pracy i podejściu łączy elementy rozwoju oprogramowania (tworzenie kodu) i utrzymania infrastruktury (administracja). Stanowisko DevOps jest ewolucją założenia o bliskiej współpracy działów developerskich z operacyjnymi.
Można pokusić się o wymienienie podstawowych odpowiedzialności DevOpsa: tworzenie infrastruktury, przygotowywanie środowisk pracy dla developerów czy testerów, tworzenie pipeline’ów CI/CD, zarządzanie pracą z repozytorium kodu, monitoring aplikacji i infrastruktury, automatyzacja reakcji na incydenty, implementacja metryk dotyczących zarówno infrastruktury, jak i aplikacji. Jest pewnie tych odpowiedzialności trochę więcej, ale te postrzegam jako podstawowe.
Devops skills – podstawowe umiejętności i narzędzia
Największym wyzwaniem na ścieżce DevOpsa jest podążanie za rozwojem technologii. Oznacza to konieczność ciągłego uczenia się, śledzenia trendów, uczestnictwa w konferencjach. Jest to oczywiście bardzo atrakcyjne, bo DevOps ma szansę robić ciągle coś nowego, interesującego, ale wiąże się z tym pewna odpowiedzialność. Dobry DevOps musi być osobą bardzo uporządkowaną. Musi dzielić swój czas pomiędzy tworzenie nowych elementów projektu, a support zespołu. Brak samoorganizacji bardzo przeszkadza.
To, z czym mierzy się DevOps jest uzależnione od projektu, w którym pracuje. Niemniej można wyróżnić taki “zestaw umiejętności obowiązkowych”, jak np.: rozumienie procesu wytwarzania oprogramowania, świetna umiejętność pracy z repozytorium kodu, znajomość wybranej chmury, umiejętność automatyzacji pipeline’ów CI/CD, czy znajomość narzędzi do tworzenia infrastruktury. Myślę, że każdemu DevOpsowi przyda się umiejętność programowania, poza bashem lub PowerShellem. Polecałbym Pythona, bo jest bardzo wszechstronny i łatwy do nauczenia. Automatyzacja wymaga od DevOpsa często pisania bardziej złożonych skryptów, czasem takich, których napisanie w bashu jest drogą przez mękę.
DevOps powinien również opanować umiejętność obsługi różnych narzędzi. Nie będę tu wymieniał konkretnych aplikacji, które wykorzystuję w pracy, bo jest ich wiele, ale osobiście najczęściej posługuję się zestawem AWS + Jenkins + Terraform + Kubernetes. Ale jak wspomniałem wcześniej, wszystko zależy od projektu, chmury, celu, który chcemy osiągnąć i przyzwyczajeń DevOpsa czy developerów.
Myślę, że wśród najpopularniejszych rozwiązań są (ale to tylko moja subiektywna ocena):
- GitlabCI, Jenkins, Bamboo – do tworzenia CI/CD,
- Terraform, ARM, CloudFormation – do IaaC,
- Ansible, Chef, Puppet – do provisioningu,
- ECS, EKS, AKS – do orkiestracji skonteneryzowanych workloadów.
Oczywiście narzędzi jest o wiele więcej, np. służących do tworzenia aplikacji serverlessowych i nie sposób wszystkiego wymienić.
Kariera Devops Engineer’a – od juniora do seniora
To, jak danemu programiście potoczy się ścieżka kariery, jest zależne od wielu czynników. W PGS Software wygląda to tak, że kandydat na DevOpsa przechodzi najpierw upskill, składający się z kilku etapów, pokrywających zagadnienia teoretyczne, umiejętność posługiwania się narzędziami oraz praktyczną znajomość chmury i metod automatyzacji. Po takim upskillu staramy się znaleźć dla adepta projekt, w którym mógłby zdobywać umiejętności u boku kogoś bardziej doświadczonego. A po jakimś czasie taki DevOps staje się samodzielny i może pracować w zespole jako osoba odpowiedzialna za zagadnienia DevOpsowe. Bywa tak, że w projekcie jest jeden DevOps – stąd samodzielność jest tu bardzo istotna, ale też trudna do uzyskania, bo wynika wprost z doświadczenia.
Jeśli ktoś zaczyna swoją przygodę w tym kierunku, to zależy od tego, jak lubi się uczyć. Dla mnie najlepsza droga to hands-on. Nauka poprzez tworzenie projektów, “robienie” tutoriali, czy kursów wybranych narzędzi i technik. Ale najpierw najlepiej porozmawiać z kimś bardziej doświadczonym, kto może poukładać ten temat i pokazać, na czym polegają odpowiedzialności DevOpsa. To znakomicie ułatwi proces pozyskiwania wiedzy i ustawi w pewien sposób cel, do którego się dąży.
Junior w drodze do awansu
Ci, którzy mają już poukładany jakiś zakres wiedzy w tym aspekcie i aspirują do tego, aby aplikować na stanowisko juniorskie, muszą wyróżniać się wybranymi umiejętnościami. To, co powinno znaleźć się w asortymencie umiejętności juniora, w dużej mierze jest wynikiem tego, kim jest dla nas junior DevOps.
Jeśli uznamy, że jest to człowiek, który może pracować jako DevOps pod okiem kogoś bardziej doświadczonego, to musi on posiadać takie umiejętności, które wcześniej wymieniłem (odnośnie rozumienia SDLC, chmury, procesu CI/CD, tworzenia infrastruktury i automatyzacji). Jasne jest, że na tym poziomie są one niepoukładane i niepoparte doświadczeniem. Znajomość narzędzi jest jednak wymagana – np. Jenkins, Terraform czy Docker.
Wyzwania stojące przed mid DevOps’em
Jak to mówią: “Im dalej w las, tym więcej drzew”. Naturalnym jest, że wraz z awansem, pojawia się więcej zadań oraz wyzwań. Bardzo ważne, by próbować nowych rzeczy, nowych środowisk, nowych chmur, nowych narzędzi. Równie priorytetową sprawą dla takiego DevOpsa powinno być to, aby nie bał się testować, sprawdzać, szukać swojego ulubionego środowiska pracy. No a przede wszystkim, powinien uczyć się, uczestniczyć w konferencjach, oglądać webinary i czytać.
Zaawansowany Devops – Senior
Senior to ktoś dojrzały, kto niczego się już nie boi. Trudno powiedzieć, jakie powinien mieć umiejętności, bo to często wynika z jego doświadczenia. Ale co istotne – senior DevOps to człowiek, który nie będzie miał oporów przed zrobieniem czegoś, czego jeszcze nigdy nie robił. Po prostu jego/jej poziom rozumienia konceptów jest tak wysoki, że narzędzie jest tylko narzędziem, a nie czymś, czego trzeba się uczyć od początku.
Ile czasu zajmuje droga od juniora do seniora na pozycji DevOpsa?
To bardzo trudno określić. Z mojego doświadczenia wynika, że jeśli ktoś był wcześniej developerem z kilkuletnim doświadczeniem, to po upskillu przejście z juniora do mida nie zajmuje więcej niż rok. Z mida do seniora – kilka lat, w zależności od tego, w jakich projektach przychodzi pracować. Ale oczywiście należy tu wziąć pod uwagę fakt, że bycie seniorem jest związane głównie z cechami miękkimi, a nie technologicznymi. Ogólnie pojęta dojrzałość jest ważniejszym czynnikiem przemawiającym za tym, że ktoś jest seniorem niż to, że zna 30 różnych narzędzi DevOpsowych.
DevOps przyszłości a DevOps w przyszłości
Oprócz naturalnej tendencji do migracji na chmurę (czym zresztą DevOpsi też się często zajmują) – rozwój tej części IT będzie zdeterminowany przez nowe i coraz lepsze narzędzia. Nie przewiduję jakiejś wielkiej rewolucji na rynku narzędzi DevOpsowych, ale będą zapewne pojawiać się nowe aplikacje monitorujące czy zarządzające procesem deploymentu, zwłaszcza dla workloadów serverlessowych.
Te ostatnie będą moim zdaniem zyskiwać na popularności, a DevOpsi będą musieli sprawnie poruszać się w tym specyficznym świecie. Co jeszcze czeka nas w przyszłości? Poza wymienionym coraz większą wagę klienci będą przykładać do całego obszaru “big data”. A to oznacza, że DevOpsi będą musieli nauczyć się tworzyć i zarządzać infrastrukturą do tego przeznaczoną.
Więcej o tym, kim jest DevOps i co musi umieć, Krzysztof rozwija na blogu PGS Software.
Artykuł został zaktualizowany 23.08.2022. Pierwotna data publikacji artykułu to 18.02.2021.