Kim jest inżynier DevOps?

Czym zajmuje się DevOps Engineer, ile zarabia i jak bardzo pożądany jest to zawód? O to pytają osoby, które zdecydowały się na naukę programowania i szukają najodpowiedniejszej dla siebie ścieżki prowadzącej do świata IT. Na kursach organizowanych przez Codementors uczymy od podstaw warsztatu inżyniera DevOps oraz narzędzi, którymi posługuje się na co dzień. Sprawdź, czy to dla Ciebie!

 

Filozofia  DevOps

DevOps to idea, która została zaprezentowana w 2009 roku przez Patricka Debois w trakcie konferencji DevOps w Gandawie. Możecie się spotkać z innymi jej określeniami, np. Agile Operations, Agile Infrastructure, czy Dev2Ops. Nie zyskały one jednak tak dużej popularności, jak właśnie DevOps. Rzadko też spotyka się określenie „programista DevOps”. Najczęściej mówimy o „inżynierze” lub „specjaliście” DevOps. Dlaczego? Ponieważ DevOps wcale NIE MUSI BYĆ PROGRAMISTĄ. DevOps’em może być na przykład administrator baz danych. Wystarczy, że ZNA i ROZUMIE ogólne zasady wytwarzania oprogramowania, np. kontrola wersji, testowanie, publikowanie, a także posiada podstawową wiedzę na temat różnych języków programowania i potrafi korzystać z framework’ów.

Nazwa „DevOps” łączy dwa obszary:
Dev – od Development (wytwarzanie i rozwój oprogramowania = developerzy)
Ops – od Operations (zarządzanie systemami, utrzymanie = administratorzy)

Idea Devops powstała z pewnej obserwacji: administratorzy „wypuszczający” produkt na świat, bardzo często znajdują w innych miastach (a czasem nawet państwach) niż developerzy, którzy nad tym produktem pracują.  Nie znają się osobiście, a im gorsza komunikacja między nimi, tym trudniej jest im dostarczyć produkt na czas i zadbać o najwyższą jego jakość. Developerzy, przekazując efekt swojej pracy administratorom, przestają się nim interesować. Odpowiedzialność za projekt „rozmywa się”.  Rozwiązaniem tych problemów ma być filozofia DevOps.

W 2010 r. John Willis I Damon Edwards stworzyli własną definicję DevOps, uniwersalną i łatwą do zapamiętania. To tylko cztery litery: CAMS.

C jak Culture (kultura) – DevOps ma wymiar kulturowy. Ma eliminować ewentualne konflikty w obszarach developerów i administratorów, rozwijać komunikację między nimi oraz poczucie wspólnej odpowiedzialności za wytworzone oprogramowanie,
A jak Automation (automatyzacja) – Automatyzacja procesów np. testowania, tworzenia środowisk programistycznych czy deploymentu, co przyspiesza pracę i minimalizuje koszty wytworzenia,
M jak Measurement (pomiar wyników) – DevOps to również monitoring, zbieranie i analiza danych. „You can’t improve what you don’t measure” – twierdził Peter Drucker. Prawidłowo zestawione informacje i postawione cele pozwolą wyeliminować tzw. “wąskie gardła” oraz problemy w projekcie. Będą też pracować na nasz sukces i udowadniać, że kierunek podjętych działań jest słuszny. Jeśli nie określimy wskaźników sukcesu, nie będziemy mogli udowodnić, że w istocie go odnieśliśmy, prawda?
S jak Sharing (dzielenie się) – Zgodnie z filozofią DevOps wszyscy pracujemy na wspólny sukces. Dzieląc się wiedzą, doświadczeniem, fragmentem kodu z innymi osobami z zespołu, przyspieszamy pracę całej organizacji. Tworzymy nową jakość.

Podsumowując, DevOps to droga do wytwarzania lepszego, nowocześniejszego oprogramowania, przy równoczesnym rozwijaniu kultury organizacji i wprowadzaniu dobrych praktyk projektowych.

Kim jest DevOps Engineer?

Osoba pracująca na stanowisku DevOps Engineer stanowi pomost między wszystkimi zespołami technicznymi zaangażowanymi w proces wytwarzania danego produktu. Jest odpowiedzialna za komunikację między nimi i za efektywną ich współpracę. A także za efekt finalny tej współpracy, czyli za wdrożenie oprogramowania, nad którym pracowały te zespoły.

W organizacji, w której zatrudniany jest DevOps najczęściej korzysta się ze zwinnych metodyk wytwarzania oprogramowania (agile software development). Jego zadaniem jest dbałość o płynny przepływ informacji, tworzenie infrastruktury projektowej, dobór odpowiedniej technologii, kontrola iteracji projektowych i wdrożeń. DevOps używa narzędzi umożliwiających monitorowanie pracy zespołów, automatyzację procesów i zarządzanie aplikacjami. Wszystko po to, by dostarczyć klientowi najwyższej jakości oprogramowanie.

A tak konkretnie?

Umiejętności, których najczęściej wymaga się od DevOps’a, to:
– Umiejętność programowania w przynajmniej jednym języku skryptowym, np. Python, Ruby, Groovy,

– Znajomość podstawowych protokołów i usług sieciowych,

– Znajomość podstawowych serwerów webowych, np. nginx, jetty, tomcat,

– Umiejętność korzystania z kontenerów, np. Docker, Kubernetes,

– Znajomość podstawowych zagadnień bazodanowych.

Narzędzia, z których korzysta DevOps:

– Narzędzia do budowania oprogramowania: np. Maven, Gradle,

– Narzędzia CI/CD (Continuous Integration/Continuous Deployment): np. Git, Jenkins, Bamboo, Artifactory.

Metodologia pracy DevOps’a:

– Zgodność z zaleceniami Agile Manifesto (zwinne metodyki wytwarzania oprogramowania),
– Automatyzacja procesów,
– Praca iteracyjna (sprinty) – małe i częste wdrożenia,
– Architektura serwisu oparta o tzw. mikroserwisy. Mikroserwisy, to ogólnie mówiąc moduły, z których składa się cała aplikacja. Nad każdym pojedynczym modułem pracuje niezależnie jeden zespół,
– Praktykowanie Continuous Integration (systematyczna, ciągła aktualizacja centralnego repozytorium) i Continuous Deployment (dostarczanie oprogramowania w krótkich cyklach).

Cechy pożądane u inżyniera DevOps:

– Wszechstronne umiejętności techniczne – „poliglotyzm programistyczny”. DevOps powinien znać wiele języków programowania, choćby podstawy i rozumieć ogólne zasady wytwarzania oprogramowania,

– Mocno rozwinięte umiejętności interpersonalne: komunikacyjne, negocjacyjne, pracy zespołowej, rozdzielania zadań. W skrócie: lubi rozmawiać z ludźmi,

– Charyzma i odwaga. DevOps to nie tylko nazwa stanowiska. To filozofia, stan umysłu. Dobry DevOps potrafi wczuć się w rolę ewangelisty i popularyzować wiedzę na temat tej metodologii wśród współpracowników. Nie boi się wprowadzać zmian, które mają wpływ na funkcjonowanie całej organizacji.

Ile zarabia DevOps?

Portal No Fluff Jobs przeanalizował ogłoszenia o pracę skierowane do inżynierów DevOps. W 2018 r. ogłoszeniodawcy proponowali przyszłym pracownikom od 9 000 do 13 500 zł brutto na umowie o pracę, a w przypadku kontraktu B2B –  od 10 000 do 15 100 zł netto na fakturę.  Jeśli chodzi o pracę zdalną, mediana oferowanych wynagrodzeń inżynierów DevOps wyniosła od 12 700 do 20 100 zł (źródło: https://nofluffjobs.com/blog/kim-jest-i-czym-sie-zajmuje-devops-engineer/). Juniorzy na pewno muszą się z liczyć z niższymi stawkami, jak w każdym zawodzie. Ale trzeba przyznać – wygląda to dobrze.

Jeśli zainteresowała Cię filozofia DevOps, koniecznie zajrzyj do książek:
–  „DevOps. Światowej klasy zwinność, niezawodność i bezpieczeństwo w Twojej organizacji”, John Randolph Willis, Jez Humble, Gene Kim, Patrick Debois, John Allspaw.
– „Projekt Feniks. Powieść o IT, modelu DevOps i o tym, jak pomóc firmie w odniesieniu sukcesu”, Gene Kim, Kevin Behr, George Spafford

Autor: Karolina Kulawiak

Fot. Fexels.com

Źródła:
1. Edwards Damon, What is DevOps?, http://dev2ops.org/2010/02/what-is-devops/
2. Debois Patric,JustenoughDevelopedInfrastructure, http://www.jedi.be/blog/2010/02/12/what-is-this-devops-thing-anyway/
3. DevOps, Wikipedia, https://pl.wikipedia.org/wiki/DevOps
4. Kersten Nigel, What is DevOps?, https://puppet.com/blog/what-is-devops
5. Rojewska Katarzyna, Kim jest i czym się zajmuje DevOps Engineer?, https://nofluffjobs.com/blog/kim-jest-i-czym-sie-zajmuje-devops-engineer/