Close

Kto to jest inżynier DevOps?

Inżynier DevOps musi posiadać umiejętności, które obejmują zarówno programowanie, jak i operacje, a także umiejętności interpersonalne, aby pomóc w przezwyciężaniu podziałów między oddzielnymi zespołami.

Tom Hall

Specjalista i praktyk DevOps


Jeśli organizacja ma niepołączoną strukturę, gdzie programowanie i operacje działają oddzielnie, implementacja DevOps często wymaga radykalnej zmiany tej struktury. Potrzeba odpowiednich ludzi, kultury i narzędzi, aby skutecznie wdrożyć DevOps. Jednak jedną z najczęstszych przeszkód w implementacji jest, jak wynika z ankiety dotyczącej trendów DevOps Atlassian 2020, brak umiejętności pracowników.

Jednym z kluczowych stanowisk w przypadku restrukturyzacji DevOps jest inżynier DevOps. Osoba ta musi posiadać umiejętności, które obejmują zarówno programowanie, jak i operacje, a także umiejętności interpersonalne, aby pomóc w przezwyciężaniu podziałów między oddzielnymi zespołami.

Kto to jest inżynier DevOps?

Inżynier DevOps jest ogólnym specjalistą IT, który powinien posiadać szeroką wiedzę zarówno na temat programowania, jak i operacji, w tym kodowania, zarządzania infrastrukturą, administrowania systemami i łańcuchów narzędzi DevOps. Inżynierowie DevOps powinni również posiadać umiejętności interpersonalne, ponieważ ich zadaniem jest zwiększenie współpracy w firmie i wyeliminowanie „silosów”.

Inżynierowie DevOps muszą dobrze rozumieć wspólną architekturę systemu, aprowizację i administrację, ale muszą także mieć doświadczenie z tradycyjnym zestawem narzędzi i praktykami dla programistów, takimi jak korzystanie z kontroli źródła, wydawanie i odbieranie recenzji kodu, pisanie testów jednostkowych i znajomość zasad Agile.


Role i obowiązki

Rola inżyniera DevOps będzie się różnić w zależności od organizacji, ale niezmiennie wiąże się z kombinacją inżynierii wydawania, aprowizacji i zarządzania infrastrukturą, administrowania systemem, zabezpieczeń i promowania DevOps.

poznaj rozwiązanie

Narzędzia DevOps dla całego zespołu

Kurs szkoleniowy

Poznaj podstawy Atlassian DevOps

Inżynieria wydawania obejmuje prace wymagane do kompilowania i wdrażania kodu aplikacji. Właściwe narzędzia i procesy różnią się znacznie w zależności od wielu zmiennych, takich jak język, w którym pisany jest kod, stopień zautomatyzowania pipeline'u oraz to, czy infrastruktura produkcyjna jest lokalna, czy w umieszczona chmurze. Inżynieria wydawania może wymagać wyboru, aprowizacji i utrzymywania narzędzi CI/CD lub zapisywania i utrzymywania niestandardowych skryptów kompilowania/wdrażania.

Aprowizacja infrastruktury i administrowanie systemami obejmują wdrażanie i utrzymywanie serwerów, pamięci masowej i zasobów sieciowych wymaganych do hostowania aplikacji. W przypadku organizacji z zasobami lokalnymi może to obejmować zarządzanie serwerami fizycznymi, urządzeniami pamięci masowej, przełącznikami i oprogramowaniem do wirtualizacji w centrum danych. W przypadku organizacji hybrydowych lub w całości chmurowych zazwyczaj chodzi o aprowizację instancji wirtualnych tych samych składników i zarządzanie nimi.

Promowanie DevOps jest często niedoceniane lub całkowicie pomijane, podczas gdy jest prawdopodobnie najważniejszym zadaniem inżyniera DevOps. Przejście do kultury DevOps może być trudne i problematyczne dla członków zespołu inżynierskiego. Jako ekspert DevOps, inżynier DevOps pomaga propagować DevOps w całej organizacji i kształcić pracowników.


Umiejętności inżyniera DevOps

Wymagane umiejętności techniczne inżynierów DevOps różnią się w zależności od struktury zespołu, technologii i zestawów narzędzi. Niezbędne są jednak mocne kwalifikacje dotyczące komunikacji i współpracy. Ważne jest również, aby inżynier DevOps posiadał szeroką wiedzę na temat wszystkich komponentów pipeline'u dostaw oraz znał zalety i wady dostępnych narzędzi i usług.

Komunikacja i współpraca

Inżynier DevOps musi skutecznie komunikować się i współpracować z zespołami, menedżerami oraz klientami. Te tak zwane „miękkie umiejętności” są często pomijane i niedoceniane, tymczasem sukces DevOps zależy w dużej mierze od jakości i ilości informacji zwrotnych w całym strumieniu wartości.

Administrowanie systemem

Inżynier DevOps powinien mieć doświadczenie w administrowaniu systemem, w tym dotyczące udostępniania serwerów i zarządzania nimi, wdrażania baz danych, monitorowania zabezpieczeń, łatania luk systemowych oraz zarządzania wewnętrzną i zewnętrzna komunikacją sieciową.

Doświadczenie dotyczące narzędzi DevOps

Ponieważ korzystanie z odpowiednich narzędzi jest niezbędne dla praktyk DevOps, inżynier DevOps musi rozumieć różne narzędzia i być w stanie z nich korzystać. Narzędzia te obejmują cykl życia DevOps od infrastruktury i kompilacji po monitorowanie i obsługę produktu lub usługi.

Zarządzanie konfiguracją

Inżynierowie DevOps często mają doświadczenie z jednym lub większą liczbą narzędzi do zarządzania konfiguracją, takich jak Chef, Puppet lub Ansible. Wiele organizacji stosuje te lub podobne narzędzia, aby zautomatyzować zadania administracyjne systemu, takie jak wdrażanie nowych systemów lub stosowanie poprawek zabezpieczeń w systemach już działających.

Kontenery i ich orkiestracja

W przypadku konteneryzacji, będącej technologią spopularyzowaną przez firmę Docker, kod aplikacji i jej środowiska wykonawczego są dołączane do tego samego obrazu. Dzięki temu tradycyjne narzędzia do zarządzania konfiguracją stają mniej potrzebne. Równocześnie zarządzanie kontenerami oznacza osobne wyzwania, a doświadczenie z klasą narzędzi znaną jako „orkiestratory kontenerów” (np. Docker Swarm lub Kubernetes) staje się niezbędne w przypadku inżynierów DevOps.

Ciągła integracja i ciągłe wdrażanie

Ciągła integracja i ciągłe wdrażanie (CI/CD) są podstawowymi praktykami DevOps w zakresie tworzenia oprogramowania, które umożliwiają dostęp do wielu dostępnych narzędzi. Najbardziej podstawową funkcją każdego narzędzia CI/CD lub zestawu narzędzi jest zautomatyzowanie procesu tworzenia, testowania i wdrażania oprogramowania.

Inżynierowie DevOps zazwyczaj muszą mieć doświadczenie w konfigurowaniu i wdrażaniu jednego lub większej liczby narzędzi CI/CD i zazwyczaj muszą ściśle współpracować z resztą organizacji programistycznej, aby zadbać o efektywne wykorzystanie tych narzędzi.

Architektura systemu i aprowizacja

Inżynier DevOps powinien mieć możliwość projektowania, udostępniania i zarządzania ekosystemami komputerowymi, zarówno lokalnie, jak i w chmurze. Ważne jest, aby zrozumieć infrastrukturę jako kod, czyli proces zarządzania IT, który stosuje najlepsze praktyki, począwszy od tworzenia oprogramowania DevOps po zarządzanie zasobami infrastruktury chmury. Inżynier DevOps powinien zrozumieć, jak modelować infrastrukturę systemową w chmurze za pomocą usług Amazon Web Services (AWS), AWS CloudFormation lub Terraform.

Znajomość kodowania i skryptów

Wielu tradycyjnych administratorów systemów ma doświadczenie w pisaniu skryptów powłoki, aby automatyzować powtarzające się zadania. Umiejętności inżyniera DevOps nie powinny ograniczać się do pisania skryptów automatyzacji. Powinien on rozumieć zaawansowane praktyki programistyczne oraz potrafić uwzględnić elementy Agile, takie jak przeglądy kodu i kontrolę źródła, w rozwoju oprogramowania.

Umiejętności związane z zarządzaniem opartym na współpracy

Współpraca między zespołami stanowi podstawowy element skutecznej strategii DevOps, niezależnie od danej struktury organizacyjnej. Bez względu na to, czy zespół inżynierski jest grupą dzieloną tylko według ról, czy też istnieją oddzielne zespoły zajmujące się opracowywaniem funkcji, zapewnianiem jakości, DevOps itp., inżynier DevOps powinien pracować w całej organizacji jako trener i współpracownik, z wieloma różnymi osobami.

Na przykład jedną z największych zalet DevOps jest możliwość szybszego przekazywania informacji zwrotnych programistom. Inżynier DevOps często będzie musiał współpracować z działem kontroli jakości (niezależnie od tego, czy są to testerzy czy programiści automatyzujący testy) w celu zwiększenia szybkości, skuteczności i wyników metodologii testowania.

Jednocześnie programiści mogą potrzebować pomocy technicznej od inżynierów DevOps podczas pracy nad usprawnianiem procesu tworzenia i wdrażania kodu aplikacji.


Zespół DevOps: inne role i obowiązki

Ewangelista DevOps

Jest to ekspert DevOps, który promuje i rozwija praktyki DevOps w całej organizacji. Ewangelista DevOps zazwyczaj ma wykształcenie techniczne, ale jego rola skupia się na komunikacji interpersonalnej i doskonaleniu procesów.

Menedżer wydawania/rada doradcza ds. zmian

Organizacje, które nie przeszły jeszcze na DevOps lub nadal znajdują się na wczesnym etapie procesu, mogą mieć osobną grupę nazywaną radą doradczą ds. zmiany (Change Advisory Board, CAB) lub indywidualną rolę menedżera ds. wydań.

Zadaniem takich ról jest zadbanie o to, aby każde nowe oprogramowanie aplikacyjne, które jest wydawane do produkcji, spełniało standardy jakości i bezpieczeństwa oraz posiadało odpowiednie zatwierdzenia ze strony kierownictwa.

Te role są szczególnie ważne, gdy wydania oprogramowania są bardziej ryzykowne. Jednak ich znaczenie spada (być może do zera) wraz z wykorzystaniem strategii takich jak automatyczne testowanie i ciemne wdrożenia.

Ekspert ds. automatyzacji

Każdy inżynier DevOps powinien mieć doświadczenie w zakresie automatyzacji. Zdarza się jednak, że organizacja ma osobnego eksperta ds. automatyzacji lub inżyniera ds. automatyzacji. Może to być ktoś, kto skupia się na zarządzaniu narzędziami CI/CD lub opracowywaniu i utrzymywaniu zautomatyzowanych pakietów testowych.

twórca oprogramowania

W większości przypadków tytuł programisty jest nadawany osobom, które piszą front-end lub back-end aplikacji, albo oba te rodzaje kodu. Są to ludzie, którzy przed narodzinami metodyki Agile byli nazywani „programistami komputerowymi”.

Zapewnianie jakości

Zespół ds. zapewnienia jakości (QA) odpowiada za wykrywanie błędów w oprogramowaniu. Inżynierowie QA skupiali się kiedyś na ręcznym testowaniu nowego kodu aplikacji, aby upewnić się, że nie ulegnie natychmiastowej awarii („smoke testing”), nie zepsuje istniejącej funkcjonalności („testowanie regresji”) i nie będzie kolidować z innymi nowymi funkcjami („testowanie integracji”).

Organizacje coraz częściej uzupełniają lub zastępują testerów rolą inżyniera rozwoju oprogramowania w testach (development engineer in test — SDET). Zadaniem SDET jest testowanie nowego kodu aplikacji przed jego wprowadzeniem do produkcji. Jednak zamiast ręcznego testowania oprogramowania skupia się na pisaniu kodu do automatyzacji testów.

Inżynier ds. bezpieczeństwa

W organizacjach, które nie stosują pełnej integracji kwestii bezpieczeństwa i zgodności z procesami planowania i programowania, często zatrudniona jest osoba lub zespół odpowiedzialny za bezpieczeństwo. Często okazuje się, że jest to złe rozwiązanie, sprawiające, że bezpieczeństwo jest stosowane dopiero po fakcie, podczas gdy zabezpieczenie oprogramowania jest o wiele trudniejsze po jego zaprojektowaniu, napisaniu i wdrożeniu, niż zaprojektowanie go z myślą o bezpieczeństwie.


Wykraczanie poza jedną rolę

DevOps to praktyka, która wymaga zmian kulturowych, nowych zasad zarządzania i wykorzystania narzędzi technologicznych. Inżynier DevOps pełni kluczową rolę w transformacji DevOps i dlatego musi posiadać szeroki zestaw umiejętności. Większość organizacji potrzebuje jednak więcej niż jednego inżyniera DevOps — kombinacji generalistów i specjalistów, którzy będą ściśle ze sobą współpracować w celu wdrożenia DevOps i ulepszenia cyklu życia tworzenia oprogramowania. Inżynier DevOps pomaga wyeliminować „silosy” i zwiększyć współpracę między różnymi ekspertami i łańcuchami narzędzi, aby wykorzystać pełny potencjał DevOps.

Tom Hall
Tom Hall

Tom Hall jest zwolennikiem i praktykiem DevOps, zagorzałym czytelnikiem i pianistą amatorem.
Na przestrzeni ostatnich 20 lat zdobył certyfikaty firm Novell, EMC, VMware i AWS. Pomagał w organizacji DevOpsDays w Atlancie w 2016 roku oraz w Austin w stanie Teksas w późniejszych latach.


Udostępnij ten artykuł
Następny temat

Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ilustracja DevOps

Społeczność DevOps

Ilustracja DevOps

Warsztaty symulacyjne

Ilustracja przedstawiająca mapę

Zacznij korzystać za darmo

Zapisz się do newslettera DevOps

Thank you for signing up