DevOps to must have każdej firmy. Historia Pawła Kubicy

DevOps swoją nazwę zawdzięcza dwóm słowom: Development i Operations. Jest to kultura operacyjna, której zadaniem jest stworzenie współdziałania pomiędzy działami oprogramowania (Dev) oraz zarządzania systemami (Ops). W skrócie celem DevOps jest wdrożenie do firmy płynnej komunikacji pomiędzy działami technicznymi, odpowiedzialnymi za tworzenie produktu.

Dlaczego każda firma potrzebuje DevOps? Czy Agile jest jego nierozerwalnym elementem? Jak z perspektywy DevOpsa wygląda proces tworzenia? Odpowiedzi na te i wiele innych pytań udzielił Paweł Kubica – na co dzień pracujący, jako DevOps w Comarch.

Jak zostałeś DevOpsem?

Patrząc wstecz, chyba byłem nim jeszcze zanim ten termin zaczął funkcjonować. Od początku swojej przygody ze światem IT (czyli od początku studiów) wahałem się, w którą stronę skierować swoją ścieżkę zawodową: zostać programistą czy administratorem.

Ze względu na program realizowany na studiach, który większy nacisk kładł na programowanie, rozpocząłem tę przygodę od programowania próbując niezależnie rozwijać się w zakresie administrowania systemami. Bardzo dużo pomogły mi w tym zakresie niewielkie firmy, w których pracowałem podczas studiów oraz po ich zakończeniu, gdzie mogłem rozwijać się w obydwóch kierunkach. Obecnie będąc już formalnie DevOps’em staram się wykorzystać zdobyte już wcześniej doświadczenie oraz nadążyć za szybko zmieniającym się światem IT.

W jaki sposób definiujesz pojęcie DevOps?

Dla mnie DevOps jest podejściem, które zakłada efektywne wytwarzanie oraz wdrażanie oprogramowania. Dzięki połączeniu wiedzy z zakresu wytwarzania oprogramowania (Dev) oraz zarządzania systemami (Ops) dąży do usprawnienia procesów oraz zwiększenia jakości produktów dostarczanych do klienta. W efekcie ma na celu wyeliminowanie problemów, które często pojawiają się w firmach z wyraźnym podziałem na zespoły tworzące oprogramowanie i administratorów systemów, którzy nieraz z trudnościami wdrażają stworzone oprogramowanie, o którym niewiele wiedzą.

Jakie firmy szczególnie potrzebują DevOps i dlaczego?

Przykładem firmy, która z powodzeniem realizuje filozofię DevOps, jest Comarch. DevOps jest niezbędnym elementem każdej firmy (bez względu na jej wielkość), w której zachodzi potrzeba wdrażania częstych zmian. Dzięki odpowiedniej koordynacji prac zespołów oraz automatyzacji procesów CI/CD/CD (Continuous Integration/Continuous Delivery/Continuous Deployment) wdrażanie nowych wersji aplikacji jest szybkie i wiąże się z dużo mniejszym ryzykiem. Co więcej, dobrze opracowane procesy, które zdały egzamin w ramach jednego projektu, można z powodzeniem zastosować w kolejnych projektach, co przynosi wymierne korzyści na poziomie całej firmy, a nie tylko konkretnego projektu.

W jakich technologiach, przy pomocy jakich narzędzi prowadzone są działania DevOps?

Ciężko jest wymienić konkretne technologie oraz narzędzia wykorzystywane przez DevOps, ponieważ są one uzależnione w dużej mierze od potrzeb danej firmy. Na pewno jednym z głównych obszarów pracy DevOps jest aktualnie konfiguracja infrastruktury w zakresie rozwiązań chmurowych, która ma na celu dostarczanie oprogramowanie w jednym z popularnych modeli IaaS (Infrastructure as a Service), PaaS (Platform as a Service) lub SaaS (Software as a Service). Oczywiście wiele firm w tym zakresie korzysta z gotowej infrastruktury dostarczanej przez Google (Google Cloud), Amazon (AWS) czy Microsoft (Azure), ale ona też wymaga specjalistycznej wiedzy w celu efektywnego wdrożenia oprogramowania.

Drugim z ważnych obszarów jest już wspomniana wcześniej automatyzacja procesów CI/CD/CD (Continuous Integration/Continuous Delivery/Continuous Deployment). Dobrze zamodelowane procesy realizujące budowanie, testowanie i wdrażanie aplikacji znacznie skracają czas wytwarzania oprogramowania, oraz umożliwiają zachowanie jego wysokiej jakości.

Z perspektywy inżyniera DevOps, jak wygląda i na czym polega proces wdrożenia?

Proces ten jest zwykle podzielony na dwa obszary: konfiguracja środowiska, w którym będzie uruchomione oprogramowanie oraz konfiguracja narzędzi umożliwiających zbudowanie i wdrożenie aplikacji w przygotowanym środowisku. Oba obszary są realizowane równocześnie, a bardzo ważnym elementem tego procesu jest wytwarzanie oprogramowania z zachowaniem perspektywy wizji całości systemu. Dzięki możliwości monitorowania aplikacji od samego początku tworzenia produktu zespół może podejmować kluczowe decyzje, bazując na wiarygodnych danych oraz rozwiązywać napotkane problemy.

Jakie praktyki powinna stosować firma, która decyduje się na wdrożenie DevOps?

Przede wszystkim powinna patrzeć na wszystkie procesy ogólnie, a nie produktowo. Jeśli DevOps ma w czymś pomóc to wypracowane rozwiązania powinny być spójne wewnątrz całej firmy, gdyż jedynie to przyniesie wymierne korzyści w zakresie usprawnienia zarówno procesów, jak i jakości produktów. Kolejnym ważnym elementem jest przełamywanie barier pomiędzy zespołami odpowiedzialnymi za wytwarzanie oprogramowania oraz zarządzanie systemami, szkolenia pracowników oraz promowanie innowacyjności podczas całego procesu wytwarzania oprogramowania.

Czy AGILE jest nieodłącznym elementem DevOps?

Wydaje mi się, że tak. DevOps bardzo dobrze wpisuje się w model pracy, zgodny z założeniami Agile. Udostępnianie produktu i praca nim tak wcześniej, jak to tylko możliwe umożliwia szybkie zebranie informacji zwrotnych, naprawianie błędów na wczesnym etapie budowania aplikacji oraz podejmowanie decyzji o dalszym kierunku budowania aplikacji.

Jakie korzyści otrzymuje firma dzięki wdrożeniu DevOps?

Patrząc przez pryzmat pracy w Comarch, mogę wyróżnić wiele korzyści. Pierwsze to te, ściśle związane z wytwarzaniem i dostarczaniem oprogramowania, takie jak: poprawa jakości wdrożeń oprogramowania oraz kodu, możliwość bezpiecznego i szybkiego udostępnianie nowych wersji oprogramowania oraz lepszy wgląd w procesy i wymagania. Kolejne są natomiast blisko powiązane z biznesem, a są to m.in. łatwiejsze dostarczenie produktu na rynek, lepsze reagowanie na potrzeby biznesowe, zwiększenie produktywności pracowników czy zadowolenie klientów. Wszystko to finalnie powinno prowadzić do możliwości zyskania przewagi konkurencyjnej przez firmę.

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

W dużych organizacjach wdrażanie kultury DevOps odbywa się stopniowo ze względu na pewne wypracowane rozwiązania, których nie da się zastąpić z dnia na dzień. Mam tu na myśli zarówno zmianę organizacji pracy zespołów, jak i stosu technologicznego. Ważnym aspektem tych zmian jest standaryzacja rozwiązań na poziomie całej firmy w zakresie narzędzi oraz technologii wykorzystywanych do codziennej pracy.

W jaki sposób inżynier DevOps współpracuje z działami developmentu, operations i QA? Co to wnosi do procesu wytwarzania aplikacji?

Ważnym aspektem współpracy DevOps z zespołami wytwarzającymi oprogramowanie oraz zarządzającymi systemami jest nie tylko przepływ informacji, ale także wymiana wiedzy. Im lepiej każdy z zespołów zrozumie potrzeby i ograniczenia drugiego zespołu odnośnie wytwarzanego oprogramowania czy docelowej infrastruktury, tym łatwiej będzie przebiegał proces wdrażania wytworzonego oprogramowania.

Jak układa się twoja współpraca z developerami? Co robisz, żeby lepiej poznać proces wytwarzanego przez nich oprogramowania?

Ze względu na to, że kiedyś sam byłem developerem ta współpraca jest całkiem dobra. Dużo łatwiej mi zrozumieć wymagania stawiane przez wytwarzane oprogramowanie i przełożyć ją na infrastrukturę, w której ma zostać uruchomione. Bardzo dobrym sposobem na poznanie procesów związanych z wytwarzanym oprogramowaniem jest ich automatyzacja na jak najwcześniejszym etapie z wykorzystaniem narzędzi do CI/CD/CD (Continuous Integration/Continuous Delivery/Continuous Deployment).

Czy jako DevOps musisz być bardziej administratorem czy programistą?

Zdecydowanie administratorem. Obsługa projektu od strony DevOps wymaga wielu czynności, które głównie skupiają się w obszarach związanych z zarządzaniem systemami oraz konfiguracją narzędzi niezbędnych do pracy. Wiedza programistyczna oczywiście też się przydaje, ale w mniejszym stopniu i łatwiej jest ją na bieżąco uzupełniać.

Co robisz żeby zwiększyć bezpieczeństwo aplikacji, infrastruktury?

W tym zakresie bardzo dużo zależy od zespołów wytwarzających oprogramowanie oraz zarządzających systemami. Jako DevOps możemy ich oczywiście wspierać wykorzystując różne narzędzia w procesie CI (Continuous Integration) weryfikujące zarówno oprogramowanie w zakresie jakości kodu z wykorzystaniem CCQ (Continuous Code Quality), jak i infrastrukturę w zakresie znanych podatności oraz zagrożeń CVE (Common Vulnerabilities and Exposures).

Czy rozwiązania chmurowe ułatwiają Ci codzienną pracę? Czy chmura to przyszłość DevOps?

Rozwiązania chmurowe zdecydowanie ułatwiają mi codzienną pracę ze względu na możliwość szybkiego dostarczania gotowych środowisk dla nowych projektów oraz możliwość testowania nowych rozwiązań w gotowym rozproszonym środowisku. Można tutaj zaoszczędzić naprawdę sporo czasu, który jeszcze do niedawna trzeba było poświęcić na przygotowanie dedykowanego środowiska do realizacji tych celów. Biorąc pod uwagę obecne trendy i potrzeby rynkowe/biznesowe DevOps przez najbliższe lata na pewno będzie ściśle związany z rozwiązaniami chmurowymi.

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

Jak zwykle niezastąpionym źródłem informacji jest Internet. Mnogość artykułów i blogów związanych z tą tematyką jest ogromna ze względu bardzo szybki i dynamiczny rozwój DevOps. Bardzo cennym źródłem informacji są też wszelkie płatne i bezpłatne konferencje, spotkania oraz warsztaty organizowane w wielu miastach. Nie tylko dostarczają informacji o dobrych praktykach i trendach, ale przede wszystkim dają możliwość wymiany doświadczeń z innymi osobami.

Innym sposobem poznania przez studentów danej technologii bądź rozwiązania jest udział w stażach kierunkowych, takich jak wakacyjny staż oferowany przez Comarch. Można dzięki niemu zobaczyć, jak wygląda praca w praktyce, skonfrontować oczekiwania z rzeczywistością, nawiązać nowe znajomości czy rozpocząć pracę z rzeczywistym klientem. Studenci przez trzy miesiące mogą nabyć cennego doświadczenia nie tylko w sektorach programistycznym, inżynierii systemowej czy embedded, ale także UX oraz AI.


Paweł Kubica. DevOps w firmie Comarch S.A. Dołączył do Comarch w grudniu 2012 roku i w pierwszych latach pracy był odpowiedzialny za kierowanie zespołem tworzącym oprogramowanie dla branży medycznej, a następnie za jego wdrażanie i utrzymywanie. Obecnie jako DevOps stara się nadążyć za szybko zmieniającymi się trendami w świecie IT. Wolny czas poświęca na wszelkie rodzaje aktywności fizycznej.

Zdjęcie główne artykułu pochodzi z unsplash.com.

Patronujemy

 
 
Polecamy
Wartości pozostają te same. O historii Goyello i połączeniu z Aspire Systems