Wszyscy mówią, że dobry inżynier DevOps to konkretna wartość w zespole IT. Sprawdźmy dlaczego.
Kiedy zainwestujesz w dobrego inżyniera DevOps - lub zespoły DevOps, w zależności od wielkości organizacji i zakresu projektu - przekonasz się, że:
- Różne aspekty rozwoju i funkcji IT lepiej ze sobą współgrają.
- Możesz szybciej wypuszczać aktualizacje swojego produktu.
- Można zautomatyzować część procesów wewnętrznych i uwolnić sporo czasu, który można poświęcić na inne zadania.
Ale kim jest inżynier DevOps i co robi na co dzień, co czyni go tak użytecznym? Aby odpowiedzieć na to pytanie, najpierw przyjrzymy się, co oznacza termin „DevOps”.
Czym jest DevOps?
DevOps, jako termin, pochodzi od połączenia słów „development” i „operations”. DevOps jest strategią rozwoju, która wypełnia lukę pomiędzy rozwojem oprogramowania a operacjami IT. Jej celem jest stworzenie zwinnej relacji między tymi dwoma obszarami, tak aby firmy mogły tworzyć i wydawać regularne aktualizacje swoich produktów znacznie szybciej niż w przypadku tradycyjnego modelu rozwoju Waterfall.
Inżynierowie DevOps (i zespoły DevOps) znajdują się pomiędzy rozwojem a wdrożeniem niczym między młotem a kowadłem ;-) Mają za zadanie upewniać firmę w tym, że wszystko jest ukierunkowane na jak najbardziej efektywne wydawanie aktualizacji oprogramowania. Ostatecznie, chodzi o współpracę i usunięcie barier, które ją utrudniają.
Znaczenie CI/CD
Ciągła integracja i ciągłe dostarczanie (CI/CD) to dwie koncepcje fundamentalne dla DevOps - to właśnie one odróżniają wdrożenie DevOps od bardziej tradycyjnych strategii. Podczas gdy tradycyjne metodologie rozwoju działają na liniowej osi czasu, gdzie jeden etap następuje po drugim, firmy korzystające z DevOps mogą prowadzić te etapy równolegle w swego rodzaju nieskończonej pętli sprzężenia zwrotnego.
Korzyści z tego płynące są znaczące - przy dobrym użyciu podejścia DevOps oprogramowanie będzie można wdrażać nawet kilka razy dziennie, bez konieczności pobierania czegokolwiek przez użytkowników lub podejmowania jakichkolwiek dalszych działań. Mogą nawet nie zauważyć, że coś się zmieniło. W dzisiejszym szybko zmieniającym się środowisku, ten rodzaj rozwoju szybko staje się koniecznością, a nie luksusem. Jeśli jeszcze nie zdecydowałeś się na zmianę, warto to poważnie rozważyć.
No dobrze, a kim jest inżynier DevOps (DevOps Engineer)?
Często można spotkać się z określeniem „inżynier DevOps” w odniesieniu do każdego praktyka DevOps, niezależnie od tego, czy jest on inżynierem w tradycyjnym sensie, czy nie. Inżynier DevOps to po prostu specjalista IT, który współpracuje z programistami, operatorami i administratorami systemów, personelem operacyjnym i innymi osobami w celu nadzorowania lub ułatwiania wydawania lub wdrażania kodu na zasadzie CI/CD.
Jak pracują DevOpsi?
Inżynierowie DevOps biorą na siebie szereg codziennych obowiązków. Obejmują one:
- Zarządzanie projektem: w niektórych przypadkach inżynierowie DevOps przejmują inicjatywę w zarządzaniu czasem w projekcie IT, upewniając się do tego, że wszyscy mają jasność co do celów, znają główne terminy i są ze sobą w stałym kontakcie.
- Projektowanie i ulepszanie infrastruktury IT: Twoja podstawowa infrastruktura może być problemem - DevOpsi mogą określić, w jaki sposób można ją ulepszyć.
- Testowanie wydajności i benchmarking: ocena, jak dobrze i niezawodnie działają systemy jest kluczową częścią codziennych obowiązków inżyniera DevOps.
- Automatyzacja: czy Twoje wydania są spowalniane przez ważne, ale powtarzalne zadania? Jedną z głównych ról inżyniera DevOps jest zredukowanie liczby godzin spędzanych na takiej pracy; służy do tego oczywiście automatyzacja.
- Optymalizacja cykli wydawniczych: czy tracisz cenny czas z powodu tego, jak zorganizowane są cykle wydawnicze? Inżynierowie DevOps szukają sposobów na zoptymalizowanie cykli wydań software’u, usunięcie niewidocznych na pierwszy rzut oka i bezsensownych strat czasu oraz wprowadzenie nowych sposobów na przyspieszenie tego procesu (na przykład stosowanie nowych narzędzi).
- Monitoring i raportowanie: jedną z ról inżyniera DevOp jest dostarczanie informacji zwrotnych z produkcji w celu zredukowania TTD (time to detect) błędów oraz ich TTM (time to minimize).
- Bezpieczeństwo: DevOps skoncentrowany na bezpieczeństwie (lub SecDevOps jak mawiają niektórzy) to zestaw najlepszych praktyk mających na celu utrzymanie bezpieczeństwa w centrum wszystkich procesów DevOps. Obejmuje to automatyzację kluczowych procesów, harmonogramy wydań oraz projektowanie infrastruktury.
Jakie umiejętności powinien posiadać dobry inżynier DevOps?
DevOps jest więc niejako klejem, który łączy różne funkcje IT. Równie ważne jest jednak skupienie się na „miękkich” umiejętnościach, które inżynier DevOps wnosi do firmy - oprócz swojej wiedzy technicznej.
Inżynier DevOps będzie więc prowadził spotkania, ustalał harmonogram wydań i kierował procesem weryfikacji, a także zajmował się automatyzacją, złożonymi narzędziami programistycznymi i projektowaniem infrastruktury - dlatego warto poszukać osoby, która jest nienagannym organizatorem i ma silne umiejętności interpersonalne. Niesympatyczni, nieprzystępni inżynierowie DevOps nie sprawdzą się w swojej roli, bez względu na to, jak świetni są pod względem technicznym.
Jeśli chodzi o wykształcenie, dobrych inżynierów DevOps można znaleźć we wszystkich dziedzinach życia IT. Można oczywiście szukać kogoś, kto przez całą swoją pracę zawodową był tylko inżynierem DevOps ale ponieważ ten zawód jest stosunkowo młody (ma około 12 lat), może to nieco ograniczać możliwości. Zarówno byli inżynierowie oprogramowania, jak i pracownicy operacyjni IT (na przykład sysadmini) mogą stać się fantastycznymi inżynierami DevOps, a ich doświadczenie w innych obszarach funkcji IT zapewnia rzeczywistą wiedzę.
Czy inżynierowie DevOps muszą umieć kodować?
Inżynierowie DevOps zazwyczaj nie pracują bezpośrednio nad kodem produktu (to zadanie dla programistów). Często jednak muszą tworzyć rozwiązania, które oszczędzają czas (i często zdrowie) zespołów programistycznych. Może to oznaczać pisanie kodu lub skryptów do automatyzacji kluczowych zadań lub tworzenie wtyczek, które sprawią, że narzędzia programistyczne i wdrożeniowe będą lepiej spełniać potrzeby tych zespołów. Może to więc nie wymagać pisania skomplikowanych programów ale dobra znajomość skryptów średniego poziomu jest często bardzo pomocna.
Jakie inne umiejętności powinien posiadać dobry inżynier DevOps?
Zrozumienie metodologii Agile jest bardzo pomocne – w końcu DevOps to „zwinność stosowana poza zespołem programistów”. Do tego przyda się znajomość popularnych narzędzi stosowanych w tym zawodzie no i umiejętność testowania oprogramowania. Wiele z tych czynności można zautomatyzować, ale warto posiadać umiejętność wykonania testu manualnego, gdy jest to potrzebne.
Jak powinien być zorganizowany dobry zespół DevOps?
Jeśli firma jest wystarczająco duża aby uzasadnić istnienie zespołu inżynierów DevOps, może się pokusić o szukanie osób wyspecjalizowanych w niektórych z wymienionych poniżej obszarów, zamiast zatrudniać zespół złożony z samych osób mających „ogólne pojęcie o temacie”. Specjalności, których można szukać to:
- Kierownik wydania: nadzoruje planowanie i harmonogramy, zajmuje się kontrolą i wydawaniem oprogramowania.
- Ekspert ds. automatyzacji: dość oczywiste - osoba odpowiedzialna za wszystkie rzeczy związane z automatyzacją.
- Tester oprogramowania: - odpowiedzialny za wszystkie testy oprogramowania związane z DevOps.
- Specjalista QA: zapewnia jakość i przestrzeganie standardów w całej funkcji DevOps.
- Inżynier SecDevOps: przewodzi procesowi wprowadzania odpowiednich środków bezpieczeństwa do cyklu wydawniczego i wszystkich innych procesów DevOps.