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.

Portret Toma Halla
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.

Logo organizacji zespołu
poznaj rozwiązanie

Narzędzia DevOps dla całego zespołu

Logo książki
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. Inżynier DevOps, jako ekspert w dziedzinie DevOps, pomaga propagować DevOps w całej organizacji i kształcić pracowników.

9 najważniejszych 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 używanych zestawów narzędzi. Niezbędne są jednak solidne kompetencje w zakresie komunikacji i współpracy. Ważne jest również, aby inżynier DevOps miał szeroką wiedzę na temat wszystkich komponentów pipeline'u dostarczania oraz znał zalety i wady dostępnych narzędzi i usług.

1. 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.

2. 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ą.

3. 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.

4. 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.

5. 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.

6. 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órych realizacja jest możliwa dzięki całemu wachlarzowi dostępnych narzędzi. Najbardziej podstawową funkcją każdego narzędzia lub zestawu narzędzi CI/CD jest automatyzacja procesu kompilowania, 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.

7. 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.

8. Znajomość kodowania i pisania 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.

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

Współpraca między zespołami stanowi podstawowy komponent skutecznej strategii DevOps, niezależnie od konkretnej struktury organizacyjnej. Bez względu na to, czy zespół inżynierski jest grupą podzieloną 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 z wieloma różnymi osobami jako trener i współpracownik.

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.

Atlassian Open DevOps zapewnia zespołom wszystko, czego potrzebują do opracowywania i obsługi oprogramowania. Zespoły mogą utworzyć odpowiadający im łańcuch narzędzi DevOps dzięki integracjom z produktami wiodących dostawców i aplikacjom ze sklepu Marketplace. Wychodzimy z założenia, że zespoły powinny działać tak, jak one chcą, a nie tak, jak chcą dostawcy. Wypróbuj teraz.

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

Ścieżka szkoleniowa DevOps

Ilustracja przedstawiająca mapę

Zacznij korzystać za darmo

Zapisz się do newslettera DevOps

Thank you for signing up