Jak zostać DevOpsem?
DevOps to koncepcja, która przez większość świata IT pojmowana jest jako dążenie do sprawnej, automatycznej pracy z oprogramowaniem, które obecnie najczęściej realizowane jest w strukturach chmurowych i sieciowych. Dlatego też DevOps obejmuje bardzo szeroki zakres działań z tym związanych. Począwszy od wydajnej konstrukcji oprogramowania po efektywną pracę z infrastrukturą, w ramach której to oprogramowanie jest uruchamiane. Nowoczesne systemy realizowane są przy wykorzystaniu bardzo wielu składników i nawet praca z pojedynczym komponentem takiej platformy, wymaga rozumienia szerszego kontekstu. Dlatego DevOps koncentruje się na wymianie wiedzy pomiędzy każdym zaangażowanym podmiotem i osobom w projekcie. W Hostersach koncepcja dzielenia się wiedzą przyjmuje nawet szerszą formułę; osoby zaangażowane w różne projekty, dzielą się wiedzą oraz wspólnie analizują przypadki i dobre praktyki, które sprawdziły się w poszczególnych przedsięwzięciach. Metodologia DevOps jest rozumiana jako proces, w którym wdrażanie oprogramowania powiązane jest z testowaniem jego działania i optymalizacją prowadzącą do kolejnej iteracji całego procesu. Obecnie DevOps pojawia się często w kontekście roli lub stanowiska zawodowego (np. DevOps Engineer, DevOps Administrator, itp.).
Skąd biorą się DevOps’i? „To zależy”
Inżynierowie DevOps wywodzą się najczęściej z grupy developerów (projektantów oprogramowania), którzy rozwinęli wiedzę i umiejętności związane z tworzeniem infrastruktury, w której to oprogramowanie funkcjonuje i z którą współdziała. Równie często mamy do czynienia z sytuacją odwrotną, tj., że administrator systemów bądź architekt infrastruktury zdobywa kompetencje związane z tworzeniem i utrzymywaniem oprogramowania w celu jak największego zrozumienia kontekstu działania całego systemu. W związku z tym, że nowoczesne systemy składają się z szeregu komponentów różnego przeznaczenia - platformy bazodanowe, składowanie danych (cache), systemy chmurowe (cloud), zagadnienia sieciowe, utrzymywanie oprogramowania czy infrastruktury, to przewidywanie i znajdowanie błędów, bez kompetencji w wyżej wymienionych dziedzinach byłoby trudne, a wręcz niemożliwe.
Gdzie development łączy się z operations. Jak zostać DevOpsem?
W karierze każdego pracownika IT prędzej czy później przychodzi moment, w którym zaangażowany zostaje w projekt skomplikowany bardziej niż zwykle. Reakcje na takie wydarzenie bywają różne. Część ludzi woli skupiać się na pojedynczych zagadnieniach i rozwijać się w nich dochodząc do roli eksperta, inni natomiast odkrywają w sobie talent do obserwacji i analizy szerszego kontekstu, co przekłada się na zdobywanie szerszego wachlarza kompetencji. Szczególnie zarządzanie cyklem życia oprogramowania, planowanie jego rozwoju, automatyzacja tego procesu i starania związane z zapewnieniem jego wysokiej jakości, prowadzi do konkluzji, że należy poszerzać swoją wiedzę o zagadnienia związane z infrastrukturą. Analogiczny proces zachodzi „z drugiej strony”. Dbając o działanie oprogramowania realizowanej przez siebie infrastruktury, prowadzi do wniosku, że zrozumienie wewnętrznych mechanizmów tego oprogramowania pomaga w wyłapywaniu błędów i skutecznym planowaniu kolejnych wdrożeń.
Jakie kompetencje powinien posiadać DevOps?
Ponieważ technologie i narzędzia w świecie IT rozwijają się błyskawicznie, rasowy DevOps powinien szybko, chętnie i dużo się uczyć. Powinien też cechować się strategicznym sposobem myślenia, umiejętnością przewidywania zdarzeń i ich konsekwencji, czyli mówiąc ogólnie, powinien wyróżniać analitycznym podejściem do pracy. Ponieważ jednak DevOps bardzo często staje obliczu wykluczających się wzajemnie wymagań (czasowych, funkcjonalnych czy kosztowych) powinien perfekcyjnie zarządzać swoim czasem i charakteryzować się wysokimi zdolnościami komunikacyjnymi, ponieważ komunikacja z klientem (również tym wewnętrznym) jest nieodłącznym elementem pracy DevOps’a.
Kiedy już jesteś DevOps engineer’em… Czyli rola DevOpsa w projektach IT
Z dużym przekonaniem, można powiedzieć, że rola DevOps’a jest mocno powiązana i tym samym uzależniona od modelu zarządzania projektem stosowanym przez konkretną firmę. Najczęściej jednak, na inżyniera DevOps spada obowiązek zaprojektowania procesu wdrożenia oprogramowania i zapewnienia wysokiej jakości jego działania. Często takie podejście prowadzi również do projektowania infrastruktury, w której to oprogramowanie ma zostać uruchomione. W znakomitej większości przypadków DevOps Inżynier będzie też odpowiedzialny za wytworzenie kodu automatyzującego wdrażanie oprogramowania oraz kodu, za pomocą którego utworzona zostanie infrastruktura. Na marginesie warto dodać, że podejście DevOps znajduje swoje zastosowanie zarówno w przypadku infrastruktur chmurowych jak i lokalnych, ale to chmura daje znacznie większe możliwości automatyzacji procesów.
…i na koniec subiektywny zbiór narzędzi bez których nie obejdzie się DevOps
Zarządzanie projektem – Asana
Edytory do projektowania – diagrams.net
Platformy chmurowe lub onpremises- AWS, AZURE, GCP i DigitalOcean czy OVH
Automatyzacja provisioningu infrastruktury (Infrastructure as Code) - Terraform, Cloudformation, Pulumi, CDK
Narzędzia do zarządzania konfiguracją - Ansible, Puppet, Chief
Narzędzia dedykowane metodologii CI/CD - GitLab CI, GitHub Actions, Jenkins, CircleCI (budowanie programowania oraz jego wdrażanie najczęściej wspomagane jest przez różne platformy z których przynajmniej jedną należy znać bardzo dobrze)
Monitoring - Prometheus, Datadog, Newrelic, Dynatrace
W zależności od oprogramowania jakie wdrażamy, mamy do czynienia z platformami takimi jak Kubernetes, czy Serverless, a wśród usług wykorzystywanych przez oprogramowanie, znajdują się bazy danych takie jak MySQL, cache (Redis), szyny danych (RabbitMQ). Ponieważ nowoczesne oprogramowanie coraz częściej dostarczane jest w sposób skonteneryzowany, również te technologie (Docker, Podman) Inżynier DevOps musi opanować.
W zakładce PRACA znajdziesz stworzoną przez nas ścieżkę kariery od Operatora do DevOps Inżyniera, a także aktualne oferty pracy na stanowiska o różnym poziomie zaawansowania!