DevOps to termin powstały ze złączenie dwóch słów development oraz operations. Jest połączeniem kulturowych filozofii, praktyk i narzędzi, które zwiększają zdolność organizacji do dostarczania aplikacji i usług z dużą prędkością: ewolucja i ulepszanie produktów w szybszym tempie niż organizacje korzystające z tradycyjnych procesów rozwoju oprogramowania i zarządzania infrastrukturą. Szybkość ta pozwala organizacjom lepiej służyć swoim klientom i skuteczniej konkurować na rynku.
Spis treści
Jak działa DevOps
W modelu DevOps, zespoły rozwojowe i operacyjne nie są już “silosowane”. Czasami te dwa zespoły są łączone w jeden zespół, w którym inżynierowie pracują przez cały cykl życia aplikacji, od rozwoju i testowania, poprzez wdrożenie, aż po operacje, i rozwijają szereg umiejętności, nie ograniczając się do jednej funkcji.
W niektórych modelach DevOps, zespoły ds. zapewnienia jakości i bezpieczeństwa mogą również stać się bardziej zintegrowane z rozwojem i operacjami oraz w całym cyklu życia aplikacji. Kiedy bezpieczeństwo jest w centrum zainteresowania każdego z zespołów DevOps, jest ono czasami określane jako DevSecOps.
Zespoły te wykorzystują praktyki do automatyzacji procesów, które w przeszłości były wykonywane ręcznie i powoli. Używają szeregu technologii i narzędzi, które pomagają im szybko i niezawodnie obsługiwać i rozwijać aplikacje. Narzędzia te pomagają również inżynierom samodzielnie wykonywać zadania (np. wdrażanie kodu lub infrastruktury zaopatrzenia), które normalnie wymagałyby pomocy innych zespołów, a to dodatkowo zwiększa prędkość pracy zespołu.
Korzyści z DevOps
Szybkość
Działają z dużą prędkością, dzięki czemu można szybciej wprowadzać innowacje dla klientów, lepiej dostosowywać się do zmieniających się rynków i rozwijać się bardziej efektywnie w napędzaniu wyników biznesowych. Model DevOps umożliwia programistom i zespołom operacyjnym osiągnięcie tych wyników. Na przykład, mikrousługi i ciągła dostawa pozwala zespołom przejąć kontrolę nad usługami, a następnie szybciej udostępniać aktualizacje do nich.
Szybka dostawa
Zwiększenie częstotliwości i tempa wydań, abyś mógł szybciej wprowadzać innowacje i ulepszać swój produkt. Im szybciej możesz wypuszczać nowe funkcje i naprawiać błędy, tym szybciej możesz reagować na potrzeby swoich klientów i budować przewagę konkurencyjną. Ciągła integracja i ciągłe dostarczanie to praktyki, które automatyzują proces wydawania oprogramowania, od budowy do wdrożenia.
Niezawodność
Zapewnia jakość aktualizacji aplikacji i zmian w infrastrukturze, aby można niezawodnie dostarczać je w szybszym tempie, zachowując jednocześnie pozytywne doświadczenia dla użytkowników końcowych. Stosowanie praktyk takich jak ciągła integracja i ciągłe dostarczanie, aby sprawdzić, czy każda zmiana jest funkcjonalna i bezpieczna. Praktyki monitorowania i rejestrowania pomagają na bieżąco informować o wydajności w czasie rzeczywistym.
Skala
Obsługa i zarządzanie infrastrukturą oraz procesami rozwojowymi w skali. Automatyzacja i spójność pomagają zarządzać złożonymi lub zmieniającymi się systemami w sposób efektywny i przy ograniczonym ryzyku. Na przykład, infrastruktura jako kod pomaga w zarządzaniu środowiskiem programistycznym, testowym i produkcyjnym w sposób powtarzalny i bardziej efektywny.
Lepsza współpraca
Budowanie bardziej efektywnych zespołów w ramach modelu organizacyjnego DevOps, który kładzie nacisk na takie wartości jak własność i odpowiedzialność. Zespoły rozwojowe i operacyjne ściśle ze sobą współpracują, dzielą się wieloma obowiązkami i łączą swoje procesy robocze. Zmniejsza to nieefektywność i oszczędza czas (np. skrócenie okresów przekazywania zadań między programistami i zespołami), pisanie kodu uwzględniającego środowisko, w którym jest on prowadzony.
Ochrona
Prędkość poruszania się przy zachowaniu kontroli i zachowaniu zgodności. Można zaadoptować model DevOps bez utraty bezpieczeństwa, stosując zautomatyzowane zasady zgodności, drobiazgowe kontrole i techniki zarządzania konfiguracją. Na przykład, używając infrastruktury jako kodu, a polityki jako zasad, można zdefiniować, a następnie śledzić zgodność w skali.
Dlaczego DevOps jest ważny?
Oprogramowanie i Internet zmieniły świat i jego przemysł, od zakupów przez rozrywkę po bankowość. Oprogramowanie nie wspiera już tylko biznesu, ale staje się integralną częścią każdej jego części. Firmy komunikują się z klientami za pomocą oprogramowania dostarczanego jako usługi online lub aplikacje i na wszelkiego rodzaju urządzeniach. Wykorzystują one również oprogramowanie w celu zwiększenia wydajności operacyjnej poprzez przekształcenie każdego elementu łańcucha wartości, takiego jak logistyka, komunikacja i operacje. W podobny sposób, w jaki firmy produkujące towary fizyczne zmieniały sposób projektowania, budowania i dostarczania produktów przy użyciu automatyki przemysłowej w XX wieku, firmy w dzisiejszym świecie muszą zmienić sposób budowania i dostarczania oprogramowania.
Filozofia Kulturalna DevOps
Przejście do DevOps wymaga zmiany kultury i sposobu myślenia. W swoim najprostszym wydaniu DevOps polega na usunięciu barier pomiędzy dwoma tradycyjnie zamkniętymi zespołami, rozwojem i operacjami. W niektórych organizacjach mogą nie istnieć nawet oddzielne zespoły rozwojowe i operacyjne; inżynierowie mogą robić obie te rzeczy. Z DevOps, oba zespoły pracują razem, aby zoptymalizować zarówno wydajność programistów, jak i niezawodność operacji. Starają się one często komunikować, zwiększać wydajność i poprawiać jakość usług świadczonych klientom. Biorą na siebie pełną odpowiedzialność za swoje usługi, często poza obszarem, w którym ich role lub tytuły zostały tradycyjnie określone, myśląc o potrzebach klienta końcowego i o tym, jak mogą się one przyczynić do ich rozwiązania. Zespoły ds. zapewnienia jakości i bezpieczeństwa mogą również zostać ściśle zintegrowane z tymi zespołami. Organizacje używające modelu DevOps, niezależnie od ich struktury organizacyjnej, mają zespoły, które postrzegają cały cykl rozwoju i życia infrastruktury jako część swoich obowiązków.
Tłumaczenie praktyk DevOps
Istnieje kilka kluczowych praktyk, które pomagają organizacjom szybciej wprowadzać innowacje poprzez automatyzację i usprawnienie procesów rozwoju oprogramowania i zarządzania infrastrukturą. Większość z tych praktyk jest realizowana przy użyciu odpowiednich narzędzi.
Jedną z podstawowych praktyk jest dokonywanie bardzo częstych, ale niewielkich aktualizacji. W ten sposób organizacje szybciej wprowadzają innowacje dla swoich klientów. Aktualizacje te mają zazwyczaj bardziej przyrostowy charakter niż okazjonalne aktualizacje wykonywane w ramach tradycyjnych praktyk wydawniczych. Częste, ale małe aktualizacje sprawiają, że każde wdrożenie jest mniej ryzykowne. Pomagają one zespołom szybciej zająć się błędami, ponieważ zespoły mogą zidentyfikować ostatnie wdrożenie, które spowodowało błąd. Chociaż kadencja i rozmiar aktualizacji będą się różnić, organizacje korzystające z modelu DevOps wdrażają aktualizacje znacznie częściej niż organizacje korzystające z tradycyjnych praktyk wytwarzania oprogramowania.
Organizacje mogą również korzystać z architektury mikrousług, aby uczynić swoje aplikacje bardziej elastycznymi i umożliwić szybsze wprowadzanie innowacji. Architektura mikrousług umożliwia rozdzielenie dużych, złożonych systemów w proste, niezależne projekty. Aplikacje są podzielone na wiele pojedynczych komponentów (usług), a każda z nich ma jeden cel lub funkcję i działa niezależnie od swoich usług równorzędnych i aplikacji jako całości. Taka architektura zmniejsza koszty koordynacji aktualizacji aplikacji, a gdy każda usługa jest połączona z małymi, zwinnymi zespołami, które przejmują odpowiedzialność za każdą usługę, organizacje mogą działać szybciej.
Jednak połączenie mikrousług i zwiększonej częstotliwości ich udostępniania prowadzi do znacznie większej liczby wdrożeń, które mogą stanowić wyzwanie operacyjne. Dlatego praktyki DevOps, takie jak ciągła integracja i ciągła dostawa, rozwiązują te problemy i pozwalają organizacjom na szybkie dostarczanie usług w bezpieczny i niezawodny sposób. Praktyki automatyzacji infrastruktury, takie jak zarządzanie infrastrukturą i konfiguracją oprogramowania, pomagają zachować elastyczność zasobów obliczeniowych i reagować na częste zmiany. Ponadto, stosowanie monitorowania i rejestrowania pomaga inżynierom śledzić wydajność aplikacji i infrastruktury, dzięki czemu mogą oni szybko reagować na problemy.
Razem, praktyki te pomagają organizacjom dostarczać klientom szybsze i bardziej wiarygodne aktualizacje. Poniżej znajduje się przegląd ważnych praktyk DevOps.
Praktyki DevOps
Ciągła integracja
Integracja ciągła to praktyka tworzenia oprogramowania, w której programiści regularnie łączą zmiany w kodzie w centralnym repozytorium, po czym uruchamiane są automatyczne kompilacje i testy. Kluczowymi celami ciągłej integracji są: szybsze wyszukiwanie i usuwanie błędów, poprawa jakości oprogramowania oraz skrócenie czasu potrzebnego na walidację i wydanie nowych aktualizacji oprogramowania.
Nieprzerwana dostawa
Dostawa ciągła jest praktyką wytwarzania oprogramowania, w której zmiany kodu są automatycznie budowane, testowane i przygotowywane do wydania do produkcji. Rozszerza się ona o ciągłą integrację poprzez wdrożenie wszystkich zmian w kodzie do środowiska testowego i produkcyjnego po zakończeniu etapu tworzenia. Gdy ciągła dostawa jest wdrażana prawidłowo, programiści zawsze będą mieli gotową do wdrożenia architekturę kodu, która przeszła przez ustandaryzowany proces testowania.
Microusługi
Architektura mikrousług to podejście projektowe do budowania pojedynczej aplikacji jako zestawu małych usług. Każda usługa działa w swoim własnym procesie i komunikuje się z innymi usługami za pomocą dobrze zdefiniowanego interfejsu z wykorzystaniem lekkiego mechanizmu, zazwyczaj interfejsu programowania aplikacji (API) opartego na HTTP. Mikrousługi są budowane na podstawie możliwości biznesowe; każda usługa jest przeznaczona do jednego celu. Do pisania mikrousług i wdrażania ich niezależnie od siebie, jako pojedynczej usługi lub grupy usług, można używać różnych szkieletów lub języków programowania.
Infrastruktura jako kod
Infrastruktura jako kod jest praktyką, w której infrastruktura jest dostarczana i zarządzana przy użyciu technik rozwoju kodu i oprogramowania, takich jak kontrola wersji i ciągła integracja. Model oparty na API w chmurze umożliwia programistom i administratorom systemów interakcję z infrastrukturą w sposób programowy i skalowalny, zamiast konieczności ręcznego konfigurowania i dostosowywania zasobów. Dzięki temu inżynierowie mogą współdziałać z infrastrukturą za pomocą narzędzi opartych na kodzie i traktować infrastrukturę w sposób podobny do tego, jak traktują kod aplikacji. Ponieważ są one zdefiniowane przez kod, infrastruktura i serwery mogą być szybko instalowane przy użyciu ustandaryzowanych wzorców, aktualizowane przy użyciu najnowszych łatek i wersji, lub powielane w powtarzalny sposób.
Zarządzanie konfiguracją
Programiści i administratorzy systemów używają klucza do automatyzacji konfiguracji systemu operacyjnego i hosta, zadań operacyjnych i innych. Wykorzystanie takiego kodu zapewnia powtarzalność i standaryzację zmian konfiguracyjnych. Uwalnia on programistów i administratorów systemów od ręcznego konfigurowania systemów operacyjnych, aplikacji systemowych lub oprogramowania serwerowego.
Polityka jako zasada
Dzięki infrastrukturze i jej konfiguracji skodyfikowanej w chmurze organizacje mogą monitorować i egzekwować zgodność dynamicznie i na dużą skalę. Dzięki temu infrastruktura opisana kodem może być śledzona, weryfikowana i rekonfigurowana w sposób zautomatyzowany. Ułatwia to organizacjom zarządzanie zmianami w zasobach i zapewnia, że środki bezpieczeństwa są właściwie egzekwowane w sposób rozproszony (np. bezpieczeństwo informacji lub zgodność z PCI-DSS, lub HIPAA). Dzięki temu zespoły w organizacji mogą poruszać się z większą prędkością, ponieważ zasoby niezgodne z wymogami mogą być automatycznie oznaczane w celu dalszego zbadania, a nawet automatycznie przywracane do stanu zgodności.
Monitoring i logowanie
Organizacje monitorują metryki i rejestry, aby zobaczyć, jak wydajność aplikacji i infrastruktury wpływa na doświadczenie użytkownika końcowego ich produktu. Przechwytując, kategoryzując, a następnie analizując dane i rejestry generowane przez aplikacje i infrastrukturę, organizacje rozumieją, w jaki sposób zmiany lub aktualizacje wpływają na użytkowników, pozbywając się wglądu w podstawowe przyczyny problemów lub nieoczekiwanych zmian. Aktywne monitorowanie staje się coraz ważniejsze, ponieważ usługi muszą być dostępne 24 godziny na dobę przez 7 dni w tygodniu oraz w miarę wzrostu częstotliwości aktualizacji aplikacji i infrastruktury. Tworzenie alarmów lub przeprowadzanie analizy tych danych w czasie rzeczywistym również pomaga organizacjom w bardziej proaktywnym monitorowaniu ich usług.
Komunikacja i współpraca
Zwiększona komunikacja i współpraca w organizacji jest jednym z kluczowych aspektów kulturalnych DevOps. Wykorzystanie narzędzi DevOps i automatyzacja procesu dostarczania oprogramowania ustanawia współpracę poprzez fizyczne połączenie przepływów pracy i odpowiedzialności za rozwój i operacje. Ponadto, zespoły te ustanawiają silne normy kulturowe w zakresie wymiany informacji i ułatwiania komunikacji poprzez wykorzystanie aplikacji czatów, systemów śledzenia wydań lub projektów oraz serwisów internetowych. Pomaga to przyspieszyć komunikację pomiędzy programistami, operacjami, a nawet innymi zespołami, takimi jak dział marketingu czy sprzedaży, co pozwala wszystkim częściom organizacji na ściślejsze dopasowanie się do celów i projektów.
Narzędzia DevOps
Model DevOps opiera się na skutecznych narzędziach, które pomagają zespołom szybko i niezawodnie wdrażać i wprowadzać innowacje dla swoich klientów. Narzędzia te automatyzują ręczne zadania, pomagają zespołom zarządzać złożonymi środowiskami w skali i utrzymują inżynierów pod kontrolą wysokiej prędkości, która jest możliwa dzięki DevOps. AWS dostarcza usługi, które są zaprojektowane dla DevOps i które są budowane jako pierwsze do użytku z chmurą AWS. Usługi te pomagają korzystać z praktyk DevOps opisanych powyżej.