DevOps
DevOps umożliwia współpracę między programistami a administratorami, aby zoptymalizować jakość i dostarczanie.
Artykuły
Samouczki
Interaktywne przewodniki
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.
Cykl życia DevOps składa się z ośmiu 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ść.
Odkrywanie
Tworzenie oprogramowania to sport zespołowy. W ramach przygotowań do nadchodzącego sprintu, zespoły muszą prowadzić warsztaty, aby odkrywać, organizować i ustalać priorytety pomysłów. Pomysły muszą być zgodne z celami strategicznymi i zapewniać wpływ na klienta. Agile może pomóc w kierowaniu zespołami DevOps.
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.
Kompilowanie
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.
Testowanie
Ciągła integracja (CI) umożliwia wielu programistom wnoszenie wkładu do jednego wspólnego repozytorium. Kiedy zmiany w kodzie są łączone, uruchamiane są automatyczne testy, aby zapewnić poprawność przed integracją. Łączenie i testowanie kodu często pomaga zespołom programistów uzyskać pewność co do jakości i przewidywalności kodu po jego wdrożeniu.
Wdrażanie
Ciągłe wdrażanie (CD) pozwala zespołom na częste wydawanie funkcji do produkcji w sposób zautomatyzowany. Zespoły mają również możliwość wdrażania z flagami funkcji, dostarczając użytkownikom nowy kod stopniowo i metodycznie, a nie cały na raz. To podejście poprawia prędkość, produktywność i zrównoważony rozwój zespołów programistycznych.
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.
Obserwacja
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.
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
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.
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.
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.
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ą.
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.
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.
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.
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.
Zapisz się do newslettera DevOps
Thank you for signing up