DevOps

DevOps umożliwia współpracę między programistami a administratorami, aby zoptymalizować jakość i dostarczanie.

DevOps — o co chodzi?


DevOps to zestaw obejmujący praktyki, narzędzia i filozofię kulturową, które automatyzują i integrują procesy między zespołami programistycznymi a operacyjnymi. Kładzie on nacisk na pozycję zespołu, komunikację międzyzespołową i współpracę oraz automatyzację technologiczną.

Ruch DevOps rozpoczął się około 2007 roku, kiedy rozwój społeczności programistyczne i operacyjne zaczęły zgłaszać obawy dotyczące tradycyjnego modelu tworzenia oprogramowania, gdzie programiści piszący kod pracowali niezależnie od pracowników operacyjnych, którzy go wdrażali i wspierali. Termin DevOps, połączenie słów „development” i „operations”, odzwierciedla połączenie tych dyscyplin w jeden, ciągły proces.

Jak działa DevOps?


Zespół DevOps zakłada współpracę pracowników programistycznych i operacyjnych w całym cyklu życia produktu w celu zwiększenia szybkości i poprawy jakości wdrażania oprogramowania. To nowy sposób pracy, zmiana kulturowa, która ma znaczący wpływ na zespoły i organizacje, dla których pracują.

W modelu DevOps zespoły programistyczne i operacyjne nie są już od siebie oddzielone. Czasami te dwa zespoły łączą się w jeden zespół, w którym inżynierowie pracują w całym cyklu życia aplikacji — od opracowywania i testowania po wdrożenie i operacje — i dysponują szerokim wachlarzem multidyscyplinarnych umiejętności.

Zespoły DevOps używają narzędzi do automatyzacji i przyspieszania procesów, co przyczynia się do zwiększenia niezawodności. Łańcuch narzędzi DevOps pomaga zespołom realizować podstawowe założenia DevOps, takie jak ciągła integracja, ciągłe dostarczanie, automatyzacja i współpraca.

Wartości DevOps są czasami stosowane do zespołów innych niż programistyczne. Gdy zespoły ds. bezpieczeństwa stosują podejście DevOps, zabezpieczenia stają się aktywną i zintegrowaną częścią procesu programowania. Taki model nosi nazwę DevSeCops.

Cykl życia DevOps


Ze względu na ciągły charakter DevOps, praktycy używają symbolu nieskończoności, aby pokazać relacje między fazami cyklu życia DevOps. Choć pozornie jest to przepływ sekwencyjny, pętla symbolizuje potrzebę ciągłej współpracy i iteracyjnej poprawy w całym cyklu życia.

Koło nieskończoności DevOps

Cykl życia DevOps składa się z sześciu faz reprezentujących procesy, możliwości i narzędzia potrzebne do prac programistycznych (po lewej stronie pętli) i operacyjnych (po prawej stronie pętli). Na każdym etapie zespoły współpracują ze sobą i komunikują się, aby zachować synchronizację, prędkość i jakość.

Ikona ołówka na papierze

Planowanie

Zespoły DevOps powinny stosować praktyki Agile w celu poprawy szybkości i jakości. Agile to iteracyjne podejście do zarządzania projektami i tworzenia oprogramowania, które pomaga zespołom podzielić pracę na mniejsze części i dostarczać wartość przyrostowo.

Kompiluj

Git jest darmowym i otwartym systemem kontroli wersji. Oferuje doskonałe wsparcie dla tworzenia gałęzi, scalania i przepisywania historii repozytorium, czego efektem jest powstawanie wielu innowacyjnych i zaawansowanych przepływów pracy i narzędzi na potrzeby tworzenia oprogramowania.

Ciągła integracja i dostarczanie

CI/CD umożliwia zespołom częste i przewidywalne wydawanie produktów o wysokiej jakości, od repozytorium kodu źródłowego do produkcji, przy użyciu zautomatyzowanych przepływów pracy. Zespoły mogą często scalać zmiany w kodzie, wdrażać flagi funkcji i stosować kompleksowe testy.

Ikona oka

Monitorowanie i powiadamianie

Szybko identyfikuj i rozwiązuj problemy, które wpływają na czas gotowości, szybkość i funkcjonalność produktu. Automatycznie powiadamiaj zespół o zmianach, działaniach wysokiego ryzyka lub awariach, dzięki czemu możesz zapewnić dostępność usług.

Obsługa

Zarządzaj kompleksowym dostarczaniem usług informatycznych dla klientów. Obejmuje to praktyki związane z projektowaniem, implementacją, konfiguracją, wdrażaniem i konserwacją całej infrastruktury informatycznej, która obsługuje projekty usługowe organizacji.

Informacje zwrotne DevOps

Ciągłe informacje zwrotne

Zespoły DevOps powinny oceniać każdą wersję i generować raporty w celu ulepszenia przyszłych wersji Gromadząc ciągłe informacje zwrotne, zespoły mogą usprawniać swoje procesy i uwzględniać opinie klientów w celu ulepszenia kolejnego wydania.

Narzędzia DevOps


Koło nieskończoności DevOps

Narzędzia DevOps odnoszą się do kluczowych etapów cyklu życia DevOps. Stanowią one podstawę dla praktyk DevOps, pomagając usprawnić współpracę, ograniczyć zmiany kontekstu, wprowadzić automatyzację oraz umożliwić obserwację i monitorowanie.

Łańcuchy narzędzi DevOps zwykle stosują dwa podejścia: kompleksowy lub otwarty łańcuch narzędzi. Kompleksowy łańcuch narzędzi oferuje kompletne rozwiązanie, które zwykle nie integruje się z narzędziami innych firm, podczas gdy otwarty łańcuch narzędzi pozwala na dostosowanie różnych narzędzi. Oba podejścia mają swoje wady i zalety.

Przykładem otwartego łańcucha narzędzi DevOps jest rozwiązanie Open DevOps firmy Atlassian, które wykorzystuje Jirę jako fundament i integruje się z wiodącymi dostawcami i aplikacjami na rynku.

Jakie są zalety DevOps?


W ankiecie nt. trendów dotyczących DevOps Atlassian 2020 99 procent badanych stwierdziło, że DevOps ma pozytywny wpływ na ich organizację. Do zalet DevOps należą szybsze i łatwiejsze wersje, wydajność zespołu, zwiększone bezpieczeństwo, produkty wyższej jakości, a tym samym większe zadowolenie zespołów i klientów.

Prędkościomierz

Szybkość

Zespoły, które działają według zasad DevOps, udostępniają produkty częściej, przy czym ich jakość jest wyższa, a stabilność większa. W raporcie DORA 2019 State of DevOps czytamy, że elitarne zespoły wdrażają produkty 208 razy częściej i 106 razy szybciej niż zespoły o niskim poziomie wydajności. Ciągłe dostarczanie umożliwia zespołom tworzenie, testowanie i dostarczanie oprogramowania za pomocą zautomatyzowanych narzędzi.

Połączenie wideo

Lepsza współpraca

Podstawą DevOps jest kultura współpracy między programistami i zespołami operacyjnymi, które dzielą obowiązki i łączą pracę. Dzięki temu zespoły są bardziej wydajne i oszczędzają czas związany z przekazywaniem pracy i tworzeniem kodu zaprojektowanego dla środowiska, w którym działa.

Rakieta symbolizująca wydanie kodu

Szybkie wdrażanie

Zwiększając częstotliwość i tempo wydawania, zespoły DevOps szybko ulepszają produkty. Szybkie udostępnianie nowych funkcji i naprawianie błędów pozwala uzyskać przewagę konkurencyjną.

Pipeline kodu

Jakość i niezawodność

Praktyki takie jak ciągła integracja i ciągłe dostarczanie zapewniają funkcjonalność i bezpieczeństwo zmian, co poprawia jakość oprogramowania. Monitorowanie pomaga zespołom otrzymywać informacje o wydajności w czasie rzeczywistym.

Tarcza bezpieczeństwa

Bezpieczeństwo

Dzięki połączeniu zabezpieczeń z ciągłą integracja, ciągłym dostarczaniem i wdrażaniem DevseCops jest aktywną, zintegrowaną częścią procesu programowania. Zabezpieczenia są wbudowane w produkt poprzez integrację aktywnych audytów zabezpieczeń i testów zabezpieczeń z przepływami programistycznymi i DevOps zgodnymi z metodyką Agile.

Jakie są wyzwania związane z wdrażaniem DevOps?


Trudno jest zmieniać nawyki. Zespoły nawykłe do pracy w „silosach” mogą mieć trudności z unowocześnieniem struktur zespołu w celu wdrożenia praktyk DevOps, lub nawet być temu niechętne. Niektóre zespoły mogą mieć błędne przekonanie, że nowe narzędzia są wystarczające do wdrożenia DevOps, tymczasem DevOps to połączenie ludzi, narzędzi i kultury. Wszyscy członkowie zespołu DevOps muszą znać cały strumień wartości — od koncepcji, przez programowanie po środowisko użytkownika końcowego. Wymaga to rozbicia silosów w celu płynnej współpracy w całym cyklu życia produktu.

Cudzysłów

DevOps to nie zadanie dla jednej osoby. To zadanie dla wszystkich.

Robert Krohn

Kierownik ds. inżynierii, DevOps w Atlassian

Przejście od starszej infrastruktury do korzystania z modelu infrastruktury jako kodu (IaC) i mikrousług może pozwolić na szybszy rozwój i innowacje, jednak wyzwaniem może być większe obciążenie operacyjne. Najlepiej jest zbudować solidne podstawy składające się z automatyzacji, zarządzania konfiguracją i ciągłego dostarczania, aby zmniejszyć to obciążenie.

Nadmierne poleganie na narzędziach może odwracać uwagę zespołów od niezbędnych podstaw DevOps: struktur zespołów i organizacji. Po określeniu struktury należy ustalić procesy i zespół, a dopiero potem zadbać o narzędzia.

Jak wdrożyć DevOps


Wdrożenie DevOps wymaga najpierw podjęcia się oceny i ewentualnej zmiany lub usunięcia zespołów, narzędzi lub procesów, z których korzysta obecnie organizacja. Oznacza to zbudowanie niezbędnej infrastruktury, aby zapewnić zespołom autonomię w zakresie tworzenia, wdrażania i zarządzania produktami bez konieczności nadmiernego polegania na zewnętrznych zespołach.

Kultura DevOps

Kultura DevOps zakłada wykorzystanie przez zespoły nowych sposobów pracy, które wymagają lepszej współpracy i komunikacji. Polega ona na większym ukierunkowaniu ludzi, procesów i narzędzi na klientów. Multidyscyplinarne zespoły biorą odpowiedzialność za cały cykl życia produktu.

Ciągła nauka

Organizacje prawidłowo stosujące DevOps są miejscami, w których zachęca się do eksperymentów i pewnego stopnia ryzyka. Tam nieszablonowe myślenie jest normą, a porażka jest rozumiana jako naturalna element procesu uczenia się i doskonalenia.

Agile

Metodologie Agile są niezwykle popularne w branży oprogramowania, ponieważ pozwalają zespołom na bycie elastycznymi, dobrze zorganizowanymi i zdolnymi do reagowania na zmiany. DevOps to zmiana kulturowa, która sprzyja współpracy między tymi, którzy tworzą i utrzymują oprogramowanie. Połączenie Agile i DevOps zapewnia wysoką wydajność i niezawodność.

Praktyki DevOps


Ciągła integracja

Ciągła integracja to praktyka automatyzacji integracji zmian kodu w projekcie tworzenia oprogramowania. Pozwala ona programistom często scalać zmiany kodu w centralnym repozytorium, gdzie wykonywane są kompilacje i testy. Pomaga to zespołom DevOps szybciej usuwać błędy, poprawiać jakość oprogramowania i skrócić czas potrzebny do sprawdzania poprawności i wydawania nowych aktualizacji oprogramowania.

Ciągłe dostarczanie

Ciągłe dostarczanie stanowi rozszerzenie ciągłej integracji i oznacza automatyczne wdrażanie zmian kodu w środowisku testowania/produkcyjnym. Odbywa się ono zgodnie z pipelinem ciągłego dostarczania, w ramach którego zautomatyzowane kompilacje, testy i wdrożenia są zorganizowane jako jeden przepływ pracy w wydaniu.

Świadomość sytuacyjna

Ważne jest, aby każdy członek organizacji miał dostęp do danych, których potrzebuje, aby wykonywać swoją pracę tak skutecznie i szybko, jak to możliwe. Członkowie zespołu muszą być powiadamiani o niepowodzeniach w pipelinie wdrażania — niezależnie od tego, czy są to błędy systemowe lub nieudane testy — oraz otrzymywać bieżące aktualizacje dotyczące kondycji i wydajności aplikacji uruchomionych w produkcji. Wskaźniki, dzienniki, ślady, monitorowanie i alerty są niezbędnymi źródłami informacji zwrotnych, których zespoły potrzebują w swojej pracy.

Automatyzacja

Automatyzacja jest jedną z najważniejszych praktyk DevOps, ponieważ umożliwia zespołom szybsze poruszanie się w procesie opracowywania i wdrażania wysokiej jakości oprogramowania. Dzięki automatyzacji prosta czynność przenoszenia zmian kodu do repozytorium kodu źródłowego może wyzwalać proces kompilacji, testowania i wdrażania, co znacznie skraca czas wykonania tych kroków.

Infrastruktura jako kod

Niezależnie od tego, czy Twoja organizacja ma lokalne centrum danych, czy jest ono całkowicie umieszczone w chmurze, możliwość szybkiej i spójnej aprowizacji, konfigurowania i zarządzania infrastrukturą stanowi klucz do pomyślnego wdrożenia DevOps. Infrastruktura jako kod (IaC) wykracza poza konfigurację infrastruktury skryptowej i oznacza traktowanie definicji infrastruktury jako rzeczywistego kodu: za pomocą kontroli źródła, przeglądów kodu, testów itp.

Mikrousługi

Mikrousługi to technika architektoniczna, w ramach której aplikacja jest budowana jako zbiór mniejszych usług, które mogą być wdrażane i obsługiwane niezależnie od siebie. Każda usługa ma swoje własne procesy i komunikuje się z innymi usługami za pośrednictwem interfejsu. To oddzielenie problemów i niezależne funkcje pozwalają na stosowanie praktyk DevOps, takich jak ciągłe dostarczanie i ciągła integracja.

Oko

Monitorowanie

Zespoły DevOps monitorują cały cykl tworzenia oprogramowania — od planowania, przez programowanie, integrację i testowanie, po wdrażanie i operacje. Pozwala im to szybko i automatycznie reagować na wszelkie pogorszenia jakości obsługi klienta. Co jeszcze ważniejsze, pozwala zespołom przejść do wcześniejszych etapów prac i zminimalizować wadliwe zmiany produkcyjne.

Rozpocznij pracę z DevOps

Najprostszym sposobem rozpoczęcia pracy z DevOps jest zidentyfikowanie niewielkiego strumienia wartości (na przykład małej aplikacji lub usługi pomocniczej) i rozpoczęcie eksperymentowania z kilkoma praktykami DevOps. Podobnie jak w przypadku tworzenia oprogramowania, o wiele łatwiej jest przekształcić pojedynczy strumień powiązany z małą grupą interesariuszy niż próbować przenieść całą organizację do nowych metod pracy.

Atlassian oferuje rozwiązanie Open DevOps, które zapewnia kompleksowe procesy DevOps wykorzystujące narzędzia Atlassian i innych firm. Dzięki fundamentowi w postaci oprogramowaniu Jira zespoły mogą korzystać z produktów Atlassian lub wprowadzać swoje ulubione produkty do otwartego łańcucha narzędzi. Ekosystem Atlassian oferuje szeroki wachlarz integracji i dodatków, umożliwiając zespołom dostosowanie łańcucha narzędzi do ich potrzeb.

Koniecznie zapoznaj się naszymi samouczkami DevOps dotyczącymi automatyzacji, testowania, bezpieczeństwa, wglądu, oznaczania funkcji i ciągłego dostarczania.

Ilustracja warsztatu DevOps