U podstaw kultury DevOps leży zwiększona przejrzystość, komunikacja i współpraca pomiędzy zespołami, które tradycyjnie pracowały w silosach.
Jednym z najbardziej fundamentalnych wyzwań, z którymi DevOps stara się walczyć jest silosowanie wiedzy, doświadczenia i pracy w różnych jednostkach organizacyjnych. Kiedy programiści, którzy piszą kod i administratorzy systemów, którzy go wdrażają i utrzymują, nie komunikują się ze sobą, prawdopodobnie dochodzi do nieefektywności.
Organizacje często od razu sięgają po narzędzia i technologie, aby rozwiązać wyzwania biznesowe. Jednak zmiana narzędzi i technologii bez zmiany kultury organizacyjnej często nazywana jest cargo-cult DevOps, ponieważ zmienia fasadę, nie zajmując się słabymi punktami tego co jest fundamentem.
Aby zbliżyć zespoły do siebie, konieczne są istotne zmiany kulturowe. A DevOps to taka zmiana kultury organizacyjnej, która kładzie nacisk na ciągłe uczenie się i ciągłe doskonalenie, szczególnie poprzez autonomię zespołu, szybką informację zwrotną, wysoki poziom empatii i zaufania oraz współpracę między zespołami.
Wdrożenie i pielęgnowanie kultury DevOps wymaga opracowania nowego podejścia do starych problemów. DevOps zakłada zmianę silosowego procesu, w którym programiści piszą kod aplikacji i przekazują go zespołowi operacji, który wdraża i obsługuje aplikację.
Podejście DevOps zakłada współpracę pomiędzy tymi dwoma działami przez cały cykl życia projektu. DevOps jest uniwersalną metodyką, z której koncepcji może korzystać każda organizacja, która chce być bardziej zwinna.
Analogicznie do DevOps, również ITIL jako zbiór najlepszych praktyk może być stosowany przez każdą organizację, której celem jest zwiększanie wartości. Więcej na ten temat przeczytasz w tekście porównującym DevOps vs ITIL.
99 proc. respondentów badania 2020 DevOps Trends Survey stwierdziło, że DevOps ma pozytywny wpływ na ich organizację. Zespoły, które w pełni wykorzystują praktyki DevOps, pracują mądrzej i szybciej, a także dostarczają swoim klientom lepszą jakość.
Zespoły praktykujące DevOps pracują efektywniej, poprawiają współpracę i komunikację między zespołami oraz szybciej reagują na incydenty. Większe wykorzystanie automatyzacji i współpracy pomiędzy różnymi rolami w organizacji zmniejsza złożoność i liczbę błędów, co z kolei poprawia średni czas przywracania produktu lub usługi do działania (Mean Time to Recovery, MTTR) w przypadku wystąpienia incydentów i przestojów.
Organizacje stosujące DevOps twierdzą, że dostarczają produkty wyższej jakości (61 proc.), z większą częstotliwością wdrażania i szybszym czasem wprowadzania na rynek (49 proc.). I nie tylko organizacje czerpią z tego korzyści. Praktycy twierdzą, że nauczyli się nowych umiejętności (78 proc.) i otrzymali podwyżkę (49 proc.). Praktykowanie kultury DevOps może być wyzwaniem, ale nagroda w postaci zwiększonej satysfakcji zarówno dla programistów, menedżerów jak i klientów z pewnością jest tego warta.
Najbardziej oczywistą i znaczącą korzyścią płynącą z przyjęcia kultury DevOps są usprawnione, częste i wysokiej jakości wydania oprogramowania. To nie tylko zwiększa wydajność firmy, ale także satysfakcję pracowników. Zespoły praktykujące DevOps wypuszczają produkty częściej, z wyższą jakością i stabilnością. Elitarne zespoły wdrażają produkty 208 razy częściej i 106 razy szybciej niż zespoły o niskich wynikach (raport DORA 2019 State of DevOps). Jeśli krytyczne problemy nie są rozwiązywane szybko, satysfakcja klienta spada.
Budowanie kultury współodpowiedzialności, przejrzystości i szybszego przekazywania informacji zwrotnych jest podstawą każdego sprawnie działającego zespołu DevOps. Współpraca i rozwiązywanie problemów zostały uznane za najważniejsze elementy udanej kultury DevOps (2020 DevOps Trends). Kultura DevOps sprzyja wysokiemu poziomowi zaufania i współpracy, skutkuje wyższą jakością podejmowania decyzji, a nawet wyższym poziomem satysfakcji z pracy.
Przyjęcie kultury DevOps jest kluczem do zbudowania bardzo wydajnej organizacji bez konieczności poświęcania zadowolenia pracowników. Jest to rozwiązanie korzystne dla obu stron. Dla inżynierów istotne jest, by efekty ich pracy były szybko i często widoczne na produkcji, co jednocześnie wpływa na zadowolenie użytkowników końcowych. Dla kadry zarządzającej oznacza to częstsze wydania produktu, czyli szybciej generowany przychód; produkt lepiej rozwiązujący problemy klientów, czyli większy przychód; i stabilniejszy produkt, czyli mniejsze koszty.
Powszechnie uważa się, że ciągła integracja i ciągłe dostarczanie są niezbędne dla kultury DevOps. Trzeci proces, to ciągłe wdrażanie. Oznacza to nieustanne wdrażanie nowych funkcji na środowisko produkcyjne, które wymaga dużego stopnia pewności, że nowy kod został dokładnie przetestowany i może być bezpiecznie wdrożony.
Autonomiczne zespoły to kolejny ważny aspekt DevOps. Aby zespoły programistów i operatorów mogły efektywnie współpracować, muszą podejmować decyzje i wdrażać zmiany bez uciążliwego i długotrwałego procesu zatwierdzania. Wiąże się to z przekazaniem zespołom zaufania i tworzeniem środowiska, w którym nie ma strachu przed porażką pod warunkiem, że jest ona bezpieczna dla biznesu. Zespoły powinny dysponować odpowiednimi procesami i narzędziami, aby podejmować decyzje szybciej i łatwiej, niezależnie od poziomu ryzyka dla klienta. Dzięki większemu zaangażowaniu zespołów operacyjnych w proces rozwoju, mogą one dodać wymagania dotyczące utrzymania i potrzeby klientów, aby uzyskać lepszy produkt.
Pełne przyjęcie kultury DevOps zazwyczaj wymaga od jednostek i zespołów wprowadzenia znaczących zmian w sposobie pracy. W rezultacie wymaga akceptacji na najwyższych szczeblach organizacji. Oddolne wysiłki mogą być, i często są ważnym punktem wyjścia do uzyskania poparcia kierownictwa i szczebla wykonawczego dla transformacji DevOps. Często najbardziej przekonującym argumentem przemawiającym za przyjęciem DevOps jest sytuacja, w której kilka osób lub małych zespołów przyjmuje podejście DevOps i widać jako odnosi sukces.
Wysoki poziom autonomii i zaufania, który jest typowy dla kultury DevOps, może być trudny do osiągnięcia, jeśli w przeszłości istniały konflikty pomiędzy zaangażowanymi osobami lub zespołami. Im bardziej zespoły były wyodrębnione przed podjęciem próby przyjęcia podejścia DevOps, tym trudniej będzie zbudować połączenia.
DevOps pociąga za sobą współdzielenie odpowiedzialności. Zarówno pracownicy działu rozwoju, jak i działu operacyjnego powinni być odpowiedzialni za sukces lub porażkę produktu. W swojej istocie, kultura DevOps zakłada ściślejszą współpracę i współodpowiedzialność pomiędzy działami rozwoju i operacji za produkty, które tworzą i utrzymują, ponieważ faktycznie tworzą oni jeden zespół. Takie podejście pomaga firmom w dostosowaniu zespołów, procesów i narzędzi w efektywniejszym skupieniu się na kliencie. Wiąże się to z budowaniem i rozwojem multidyscyplinarnych zespołów, które biorą odpowiedzialność za cały cykl życia produktu.
DevOps wprowadza iteracyjny model pracy zgodny z duchem Agile. Oznacza to wiele iteracji i udostępnianie działającego kodu tak wcześnie, jak to tylko możliwe. Jego elementem jest automatyzacja procesów, które dotąd wymagały pracy ręcznej. Oznacza to szereg iteracji i udostępnianie działającego kodu na możliwie wczesnym etapie.
Automatyzacja jest niezbędna dla kultury DevOps, ponieważ pozwala na doskonałą współpracę i uwalnia ludzi od powtarzalnych czynności, z którymi automaty radzą sobie lepiej. Automatyzacja i integracja procesów pomiędzy zespołami programistów i adminów pomaga im budować, testować i wydawać oprogramowanie szybciej i bardziej niezawodnie.
Kultura zespołu DevOps ceni szybką informację zwrotną, która może pomóc w ciągłym doskonaleniu zunifikowanego zespołu rozwoju i operacji. W środowisku, w którym zespoły programistów i operatorów działają w odizolowanych silosach, informacje zwrotne dotyczące wydajności i stabilności oprogramowania produkcyjnego często docierają do zespołu programistów powoli. Czasami nie docierają w ogóle. DevOps gwarantuje, że programiści otrzymują szybką informację zwrotną, której potrzebują, aby szybko iterować i ulepszać kod aplikacji poprzez konieczność współpracy między ludźmi z działu operacyjnego przy projektowaniu i wdrażaniu strategii monitorowania i raportowania aplikacji.
Dzięki ustalonym procesom i jasnemu określeniu priorytetów, zespoły ds. rozwoju i operacji mogą lepiej zarządzać nieplanowaną pracą, jednocześnie koncentrując się na pracy planowej.