Dlaczego administratorzy systemów powinni stać się inżynierami DevOps

Dlaczego administratorzy systemów powinni stać się inżynierami DevOps

Nie ma lepszego czasu na naukę w życiu niż dzisiaj.


Mamy rok 2019, a tematyka DevOps jest bardziej aktualna niż kiedykolwiek. Mówi się, że dni administratorów systemów już minęły, podobnie jak era mainframe'ów. Czy jest to jednak prawda?
Jak to często bywa w IT, sytuacja się zmieniła. Pojawiła się metodologia DevOps, ale nie może ona istnieć bez osoby z umiejętnościami administratora systemu, czyli bez Ops.

Zanim podejście DevOps przybrało swój nowoczesny kształt, zaliczałem się do kategorii Ops. Doskonale wiem, co czuje administrator, gdy zdaje sobie sprawę, ile jeszcze nie umie i jak mało czasu ma na naukę.

Dlaczego administratorzy systemów powinni stać się inżynierami DevOps

Ale czy naprawdę jest tak źle? Powiedziałbym, że nie warto postrzegać braku wiedzy jako dużego problemu. To raczej wyzwanie zawodowe.

Produkty o skali webowej opierają się na systemie Linux lub innym oprogramowaniu z otwartym źródłem, a na rynku jest coraz mniej specjalistów zdolnych je obsługiwać. Popyt już przewyższył liczbę profesjonalistów w tej dziedzinie. Administrator systemów nie może po prostu kontynuować pracy bez podnoszenia swoich kwalifikacji. Musi posiadać umiejętności automatyzacji, aby zarządzać wieloma serwerami/węzłami i dobrze rozumieć zasady ich działania, aby rozwiązywać pojawiające się problemy.

Zanim zostaniesz członkiem zespołu DevOps, musisz przejść dość długą, ale interesującą drogę, ucząc się nowych technologii i różnorodnych narzędzi potrzebnych do utrzymania systemu zgodnie ze standardami DevOps.

Jak zatem administrator systemów może przejść od tradycyjnego podejścia do pracy do nowej koncepcji DevOps? Tak jak zwykle: najpierw trzeba zmienić sposób myślenia. Odstąpienie od podejścia, które stosowałeś przez ostatnie dziesięć lub dwadzieścia lat, i rozpoczęcie wszystkiego na nowo nie jest łatwe, ale jest to konieczne.

Przede wszystkim ważne jest zrozumienie, że DevOps to nie konkretne stanowisko w firmie, lecz zestaw określonych praktyk. Praktyki te obejmują rozdzielenie izolowanych systemów, zmniejszenie szkód spowodowanych błędami i usterek, częste i terminowe aktualizacje oprogramowania, dobrze zorganizowaną współpracę między programistami (Dev) a administratorami (Ops), a także nieustanne testowanie nie tylko kodu, ale i całej struktury w ramach procesu ciągłej integracji i dostarczania (CI/CD).

Obok zmiany sposobu myślenia należy nauczyć się utrzymywać infrastrukturę i zapewniać jej stabilne działanie, niezawodność oraz dostępność dla ciągłej integracji i dostarczania aplikacji, usług i oprogramowania.

Czego może ci brakować jako specjaliście ds. Ops, to umiejętności programowania. Obecnie pisanie skryptów, z których korzystają administratorzy systemów do automatycznego instalowania poprawek na serwerze, zarządzania plikami i kontami, rozwiązywania problemów oraz sporządzania dokumentacji, uważane jest za przestarzałe. W stosunkowo prostych przypadkach skrypty wciąż są stosowane, ale koncepcja DevOps zakłada rozwiązanie dużych zadań, niezależnie od tego, czy chodzi o wdrożenie, testowanie, pracę z kompilacjami czy wdrażanie.

Zatem, jeśli chcesz nauczyć się automatyzacji, musisz przynajmniej w małym stopniu opanować programowanie, nawet jeśli nie jesteś programistą, ponieważ na tym etapie twojego rozwoju automatyzacja infrastruktury w DevOps wymaga tej umiejętności.

Co robić? Aby pozostawać poszukiwanym specjalistą, musisz nabyć aktualne umiejętności - opanować przynajmniej jeden język programowania, na przykład Python. Osobie, która profesjonalnie zajmuje się administracją, może się to wydawać trudne, ponieważ przyzwyczaiła się myśleć, że programują tylko programiści. Nie musisz stawać się ekspertem, jednak znajomość jednego z języków programowania (może to być Python, Bash lub nawet Powershell), z pewnością będzie atutem.

Aby nauczyć się programowania, potrzebujesz trochę czasu. Bądź ostrożny i cierpliwy — to pomoże ci zachować zrozumienie sytuacji w komunikacji z deweloperami z zespołu DevOps i klientami. Pół godziny dziennie, godzina lub więcej — nauka języka programowania powinna stać się twoim głównym celem.

Administratorzy systemów i specjaliści DevOps rozwiązują podobne zadania, ale są też zasadnicze różnice. Uważa się, że administrator systemów nie może robić wszystkiego, co potrafi inżynier DevOps. Mówi się, że administrator systemów bardziej koncentruje się na konfiguracji, obsłudze i zapewnieniu działania systemów serwerowych, podczas gdy inżynier DevOps dźwiga cały ten ciężar i jeszcze małą przyczepkę.

Jakie jest więc prawdziwe stwierdzenie?

Administrator systemów: jeden na polu wojownik

Mimo zaznaczonych w tym artykule różnic i podobieństw, wciąż uważam, że nie ma zasadniczej różnicy między administracją systemami a DevOps. Administratorzy systemów zawsze pełnili te same funkcje, co specjaliści DevOps, tylko wcześniej nikt nie nazywał tego DevOps. Uważam, że nie ma sensu specjalnie szukać różnic, zwłaszcza jeśli nie są one związane z konkretnym zadaniem. Nie należy zapominać, że w przeciwieństwie do administratora systemów, DevOps to nie stanowisko, lecz koncepcja.

Warto również zauważyć jeszcze jedną ważną rzecz, bez której rozmowa o administracji i DevOps byłaby niepełna. Administracja systemami w tradycyjnym rozumieniu zakłada istnienie u specjalisty konkretnego zestawu umiejętności i orientację na obsługę różnych typów infrastruktury. Nie w tym sensie, że to uniwersalny pracownik, ale w tym, że istnieje szereg zadań wykonywanych przez wszystkich administratorów.

Na przykład muszą od czasu do czasu być technicznymi pracownikami ogólnymi, czyli robić właściwie wszystko. A jeśli taki administrator jest jedyny w całej organizacji, to będzie wykonywał całą pracę techniczną. Może to być cokolwiek: od obsługi drukarek i kserokopiarek po realizację zadań związanych z siecią, takich jak konfiguracja routerów i switchów oraz zarządzanie nimi, czy konfiguracja zapory sieciowej.

Będzie również odpowiedzialny za aktualizację sprzętu, weryfikację i analizę dzienników, audyt bezpieczeństwa, instalację poprawek na serwerze, rozwiązywanie problemów, analizę przyczyn oraz automatyzację — zazwyczaj za pomocą skryptów PowerShell, Pythona lub Bash. Przykładem zastosowania skryptów jest zarządzanie kontami użytkowników i grupami. Tworzenie kont użytkowników i przydzielanie uprawnień to niezwykle żmudne zadanie, ponieważ użytkownicy pojawiają się i znikają niemal codziennie. Automatyzacja poprzez skrypty pozwala zaoszczędzić czas na rozwiązywanie ważniejszych zadań związanych z infrastrukturą, takich jak aktualizacja przełączników i serwerów oraz realizacja innych projektów wpływających na rentowność firmy, w której pracuje administrator (choć powszechnie uważa się, że dział IT nie przynosi dochodów bezpośrednio).

Zadaniem administratora systemów jest oszczędzanie czasu i pieniędzy firmy na wszelkie możliwe sposoby. Czasami administratorzy systemów pracują jako członkowie dużego zespołu, łączącego na przykład administratorów Linux, Windows, baz danych, magazynów i tak dalej. Harmonogram pracy również może być różny. Na przykład zmiana w jednej strefie czasowej pod koniec dnia przekazuje sprawy następnej zmianie w innej strefie czasowej, aby procesy nie były przerywane (follow-the-sun); lub pracownicy mają standardowy dzień pracy od 9 do 17; lub to praca w całodobowym centrum danych.

Z czasem administratorzy systemów nauczyli się myśleć strategicznie i łączyć ważne sprawy z rutynowymi zadaniami. Zespołom i działom, w których pracują, zazwyczaj brakuje zasobów, ale wszyscy starają się w pełni realizować codzienne obowiązki.

DevOps: rozwój i utrzymanie jedności

DevOps to pewnego rodzaju filozofia procesów rozwoju i utrzymania. Takie podejście w świecie IT stało się naprawdę innowacyjne.

Pod auspicjami DevOps z jednej strony działa zespół programistów, a z drugiej - zespół specjalistów ds. utrzymania. Często do nich dołączają specjaliści ds. zarządzania produktem, testerzy oraz projektanci interfejsów użytkownika. Wspólnie optymalizują procesy robocze, aby szybko wprowadzać nowe aplikacje i aktualizować kod, wspierając tym samym wydajność całej firmy.

Podstawą DevOps jest kontrola nad rozwojem i funkcjonowaniem oprogramowania przez cały cykl życia. Specjaliści ds. utrzymania powinni wspierać programistów, a programiści powinni rozumieć nie tylko API używane w systemach. Powinni również znać to, co jest „pod maską” (to znaczy, jak działają sprzęt i systemy operacyjne), aby lepiej reagować na błędy, rozwiązywać problemy i współpracować ze specjalistami ds. utrzymania.

Administratorzy systemów mogą przejść do zespołu DevOps, jeśli chcą poznawać najnowsze technologie i są otwarci na innowacyjne pomysły oraz rozwiązania. Jak już wspomniałem, nie muszą stawać się pełnoprawnymi programistami, ale opanowanie języków programowania, takich jak Ruby, Python lub Go, pomoże im stać się bardzo wartościowymi członkami zespołu. Chociaż administratorzy systemów tradycyjnie wykonują większość pracy samodzielnie i są często postrzegani jako loners, w DevOps czeka ich zupełnie przeciwne doświadczenie, gdzie wszyscy uczestnicy procesu współpracują ze sobą.

Temat automatyzacji staje się coraz bardziej istotny. Zarówno administratorzy systemów, jak i specjaliści DevOps są zainteresowani szybkim skalowaniem, redukcją liczby błędów oraz szybką identyfikacją i usuwaniem istniejących problemów. W ten sposób automatyzacja jest obszarem, w którym te dwa pola się łączą. Administratorzy systemów odpowiadają za takie usługi chmurowe jak AWS, Azure oraz Google Cloud Platform. Muszą zrozumieć zasady ciągłej integracji i dostarczania oraz wiedzieć, jak wykorzystać w pracy narzędzia typu. Jenkins.

Ponadto, administratorzy systemów powinni stosować takie narzędzia do konfiguracji i zarządzania, jak Ansible, niezbędne do równoległego wdrożenia dziesięciu lub dwudziestu serwerów.

Podstawowa koncepcja — infrastruktura jako kod. Oprogramowanie we wszystkim. W zasadzie, aby zawód administratora systemów nie stracił na wartości, wystarczy nieco zmienić akcent. Administratorzy systemów zajmują się konserwacją i powinni efektywnie współpracować z programistami, i odwrotnie. Jak mówi przysłowie, jedna głowa to dobrze, a dwie to lepiej.

A ostatni element w tym mechanizmie — to Gitem. Praca z Gitem jest jednym z tradycyjnych codziennych obowiązków administratora systemów. Ten system kontroli wersji jest szeroko stosowany przez programistów, specjalistów DevOps, zespoły Agile i wielu innych. Jeśli Twoja praca związana jest z cyklem życia oprogramowania, to na pewno będziesz pracować z Gitem.

Git zawiera wiele możliwości. Prawdopodobnie nigdy nie nauczysz się wszystkich komend Gita, ale na pewno zrozumiesz, dlaczego to narzędzie uważane jest za kluczowe w komunikacji i wspólnej pracy nad oprogramowaniem. Dobre opanowanie Gita jest niezwykle ważne, jeśli pracujesz w zespole DevOps.

Jeśli jesteś administratorem systemów, musisz lepiej poznać Git, zrozumieć, jak działa zarządzanie wersjami i zapamiętać powszechnie używane komendy: git status, git commit -m, git add, git pull, git push, git rebase, git branch, git diff i inne. Istnieje wiele kursów internetowych i książek, które pomogą Ci nauczyć się tego tematu od podstaw i stać się profesjonalistą z konkretnymi umiejętnościami. Są też doskonałe ściągi z komendami Gita, więc nie musisz ich wszystkich na pamięć, ale im więcej korzystasz z Gita, tym łatwiej będzie Ci go używać.

Podsumowanie

Ostatecznie sam decydujesz, czy chcesz zostać specjalistą DevOps, czy lepiej pozostać administratorem systemów. Jak widać, aby przejść na nową ścieżkę, wymagana jest nauka, ale im wcześniej zaczniesz, tym lepiej. Wybierz język programowania i równocześnie ucz się takich narzędzi jak Gitem (kontrola wersji), Jenkins (CI/CD, ciągła integracja) i Ansible (konfiguracja i automatyzacja). Niezależnie od tego, na co się zdecydujesz, pamiętaj, że zawsze trzeba się uczyć i rozwijać swoje umiejętności.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster