Wpływ automatyzacji na metodykę DevOps

Programista DevOps pracuje przy komputerze i dwóch monitorach.

Zgodnie z definicją, DevOps (DEVelopment and OPerationS) to metodyka, często w literaturze zamiennie nazywana kulturą DevOps, zespolenia rozwoju (development) i eksploatacji (operations) tworzonego i rozwijanego oprogramowania. W dużym stopniu metodyka ta kładzie nacisk na ścisłą współpracę i komunikację specjalistów z zakresu utrzymania IT (np. administratorów) oraz specjalistów odpowiedzialnych za rozwój oprogramowania (programistów oraz testerów).

O tym, jak wygląda praca DevOpsa, które technologie są przydatne oraz dlaczego w tej kulturze ważna jest automatyzacja, opowiada Sławomir Sendor - Senior Software Engineer/DevOps w Comarch Healthcare.

Na początek zacznijmy od Twojej definicji. Czym według Ciebie jest DevOps?

Najprościej mówiąc, DevOps jest metodyką dostarczania oprogramowania, która łączy jego wytwarzanie i utrzymanie w jeden spójny proces.

Jaka w takim razie jest główna zaleta wprowadzenia podejścia DevOps dla biznesu i developmentu?

Podejście DevOps pozwala na zdecydowane skrócenie czasu potrzebnego na dostarczenie nowych funkcjonalności, a także poprawienie jakości produktu.

Załóżmy, że właśnie wprowadzam DevOps do swojej firmy. Jakie praktyki powinienem zastosować na początku?

Podejście DevOps nieodłącznie wiąże się z automatyzacją całego procesu: testowania, statycznej analizy kodu, wydawania nowych wersji, wdrażania i monitorowania. Dobry zautomatyzowany proces wymusza na zespole stosowanie dobrych praktyk, zmniejsza szansę na popełnienie błędów oraz zwiększa wydajność całego zespołu.

Jaką rolę w tym podejściu pełni komunikacja?

Komunikacja jest bardzo ważna, ponieważ zespół musi dostawać informację zwrotną na temat tego, co wytworzył. Informacja ta może pochodzić od klientów, analityków albo z systemu monitoringu. Szybkie cykle dostarczania, uzyskane dzięki automatyzacji dają szybki feedback, a co za tym idzie szybkie poprawki/modyfikacje. Te poprawki dotyczą nie tylko samego produktu, ale też procesu jego wytwarzania, bo jeśli w środowisku produkcyjnym znalazł się błąd, to znaczy, że proces mnie przed tym nie ochronił, a powinien.

Zebranie kompetencji Dev i Ops w jednym zespole też bardzo poprawia komunikację. Dużo szybciej będzie przebiegać rozmowa pomiędzy członkami tego samego zespołu niż dwoma nieznającymi się osobami z kompletnie różnych działów.

Czy osoba zajmująca się kulturą DevOps musi posiadać szczególne umiejętności czy predyspozycje?

Bez wątpienia implementacja podejścia DevOps wymaga dobrej znajomości zagadnień z obu stron. Z jednej strony potrzebna jest wiedza o technologiach, w których wytwarzane są aplikacje, z drugiej znajomość środowisk wdrożeniowych i ich obsługi. Bardzo potrzebna jest także umiejętność rozwiązywania problemów oraz szybkiej nauki.

W jakich technologiach, przy pomocy jakich narzędzi prowadzone są działania DevOps? Jak ważne są w tym kontekście procesy CI/CD/CD?

Zaczynamy od wytwarzania oprogramowania, a więc musimy mieć język programowania, w którym napiszemy aplikację, oraz skrypty, które mogą ją zbudować i przetestować, oraz wydać wersję testową do wdrożenia. Aktualnie standardowym formatem wdrożeniowym jest Docker. Gdy już mamy gotowy obraz, znów potrzebujemy narzędzi/skryptów, które to zrobią. Może to być zwykły bash lub python, ale może być też np. Ansible. Trzeba też mieć środowisko, na które można wdrożyć aplikację. Może to być zwykła maszyna wirtualna albo klaster k8s. Kiedy wersja jest już wdrożona, trzeba ją przetestować. Jedną z popularnych technologii do testów restowego api jest jmeter. W czasie testów monitorujemy aplikację. Sprawdzamy, jak zachowuje się na realnym środowisku np. za pomocą Prometheusa i Grafany oraz sprawdzamy logi np. stack ELK/EFK.

Potrzebujemy też czegoś, co będzie silnikiem automatyzacji, czyli sprawi, że te kolejne kroki procesu będą się uruchamiać. Popularnymi rozwiązaniami są Jenkins, czy wbudowny w gitlab – gitlab-ci.

Cały opisany wyżej proces to właśnie CICD. To, czy mamy Continuous Integration (CI), Continuous Delivery (CD), czy Continuous Deployment (CD), jest w dużej mierze decyzją biznesową.

Jak ta filozofia wpasowuje się w podnoszenie jakości oprogramowania?

Jak już wspomniałem, zautomatyzowany proces wymusza ciągłe podnoszenie jakości. Gdy na straży stoi automat, który sprawdzi dokładnie każdy commit chcący wejść na mastera, nie ma innej drogi niż spełnienie wymaganych kryteriów.

DevOps to nie tylko technologia, ale także kultura pracy. Jak realizujecie, wdrażacie kulturę DevOps w Comarch?

Kulturę DevOps realizujemy poprzez zebranie kompetencji Dev i Ops w każdym z zespołów. W ten sposób zespół jest odpowiedzialny za swoją usługę od początku do końca. Nie ma wtedy niekończącego się przerzucania odpowiedzialności pomiędzy różnymi zespołami.

W takim razie inżynier DevOps to bardziej administrator czy programista?

Według mnie inżynier DevOps to bardziej programista. Chcemy, żeby wszystko było w kodzie: aplikacje, skrypty, procesy, infrastruktura. Umiejętność programowania jest nieodzowna.

Dużo mówimy o automatyzacji. Dlaczego ten temat jest aż tak istotny?

Automatyzacja jest istotna z kilku względów. Po pierwsze bez niej nie da się uzyskać porządnej szybkości i powtarzalności. Powtarzalne rzeczy maszyny robią niemal doskonale i niestrudzenie. Ludzie się do tego kompletnie nie nadają. Praktycznie każdą iterację jakiejś czynności zrobią trochę inaczej. Robią to wolniej niż automat, a także jest to dla nich nudne i męczące. Łatwo w takim przypadku o błąd ludzki. Po drugie, jeśli wszystko jest zautomatyzowane, zespół może się w pełni skupić na budowie produktu. Po trzecie zwiększa się też samopoczucie zespołu wynikające z tego, że pracuje efektywnie i nie traci niepotrzebnie czasu na powtarzalne i nudne zadania.

Często słychać głosy, że ma ona sens wyłącznie w dużych organizacjach?

Nie zgadzam się. Od kilku lat wdrażamy podejście DevOps w kilku-kilkunastoosobowych zespołach. Efekty są bezdyskusyjne. Przekornie mówiąc, w małych zespołach jest to nawet jeszcze lepsze. W tym przypadku czas każdej pojedynczej osoby jest na wagę złota.

W takim razie, jak obecnie wygląda rynek pracy dla specjalistów DevOps i w jakim kierunku filozofia DevOps będzie się rozwijała?

Wraz z upływem czasu, coraz więcej firm decyduje się na wdrożenie u siebie podejścia DevOps, ponieważ orientują się, że bez niego będą dużo mniej efektywne niż konkurencja, co w dłuższej perspektywie doprowadzi do ich zniknięcia z rynku. W związku z tym ofert pracy dla doświadczonych DevOps’ów nie brakuje.

Myślę, że filozofia DevOps będzie dążyła do dalszego mergowania kompetencji Dev i Ops w ramach jednego zespołu, a także QA, UX czy InfoSec. Pod kątem technologii nastąpi dalsza adopcja IaC i chmury, czy to prywatnej czy publicznej.

Na koniec powiedz o tym, z jakich źródeł mogą korzystać młodzi DevOpsi? Gdzie można się dowiedzieć więcej o DevOps?

Najlepiej od innych DevOps’ów.;) Nie ma lepszej możliwości do nauki niż praktyka. Także Internet jest olbrzymią bazą wiedzy, która tylko czeka, żeby z niej skorzystać. Jeśli ktoś nie do końca rozumie filozofię DevOps to polecam książkę „The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations”.

Dodaj komentarz

      adres e-mail nie zostanie opublikowany

            Najczęściej czytane w tej kategorii