DevOps: co to jest i dlaczego ma znaczenie

Opublikowany: 2022-03-11

Chociaż nie ma niezawodnych, „srebrnej kuli” metod poprawy wydajności IT, DevOps przyniósł wyniki, które trudno zignorować. Jak sama nazwa wskazuje, DevOps łączy zasady tworzenia oprogramowania i działania oprogramowania w celu pomocy organizacjom w opracowywaniu produktów z większą szybkością i wydajnością. TIAA-CREF, na przykład, odnotował znaczące ulepszenia swojej działalności o wartości 40 miliardów dolarów dzięki zastosowaniu zasad DevOps. Wywiad przeprowadzony przez TechBeacon z Chief Digital Officer TIAA, Scottem Blandfordem, wyjaśnia, w jaki sposób TIAA przeszła od niezgrabnego, starszego oprogramowania i systemów do „zwinnego podejścia DevOps”, które przyniosło czterokrotny wzrost produktywności. Aktualizacje są publikowane znacznie szybciej, a „informatyka odzyskała zaufanie, które podupadło przez lata, gdy zaczęło spełniać oczekiwania użytkowników”.

Wyniki raportu o stanie DevOps z 2017 r. sugerują uderzające różnice między organizacjami o wysokiej wydajności stosującymi zasady DevOps a organizacjami, które tego nie robią. Według raportu, organizacje o wysokiej wydajności mają znacznie wyższą częstotliwość wdrażania oprogramowania (46 razy częściej), znacznie krótszy czas wprowadzania zmian (440 razy szybszy) i znacznie niższy wskaźnik niepowodzeń zmian oprogramowania (pięć razy niższy) niż ich niższa wydajność odpowiedniki.

Pomimo tych znaczących korzyści, DevOps jest klasycznym przykładem ważnej, stosunkowo nowej koncepcji technicznej, która była zbyt często niewłaściwie wykorzystywana lub źle rozumiana. Dla wielu pomysł pozostaje niejasny i nawet podstawowa definicja DevOps może okazać się nieuchwytna.

Ten brak jasności może potencjalnie mieć negatywny wpływ na organizacje i zespoły próbujące wdrożyć zasady DevOps, powodując strategiczne zamieszanie i utrudniając szybkość i wydajność, które DevOps ma promować. Jak powiedział inżynier DevOps w IBM w artykule opublikowanym przez InfoWorld: „Musieliśmy odpowiedzieć na kilka podstawowych pytań i określić problemy, które próbowaliśmy rozwiązać… Jeśli nie wiesz, jak faktycznie wykonywana jest praca, nie wiesz jakie problemy warto rozwiązać.”

Ponieważ tworzenie oprogramowania i operacje stają się coraz ściślej powiązane, a firmy stają się coraz bardziej zależne od infrastruktury chmury, dyrektorzy i kierownicy projektów muszą rozwijać biegłość w DevOps, aby zachować konkurencyjność i zapewnić, że ich zespoły pracują z pełnym potencjałem.

DevOps nie powinno być traktowane jako kolejne niejasne hasło, ale raczej jako ważna koncepcja, która może radykalnie ulepszyć produkty i firmy. Ten artykuł, skierowany do stosunkowo nietechnicznych odbiorców, ma na celu przede wszystkim dokładne wyjaśnienie, czym jest DevOps. Korzystając z konkretnych przykładów, w tym artykule omówimy, jak wyglądają zasady DevOps, gdy są dobrze wykonane, i dlaczego DevOps jest ważny dla Ciebie i Twojej organizacji.

DevOps jako rodzaj inżyniera, kultury i praktyki

Co to jest DevOps? W poprzednim artykule opublikowanym przez Toptal, Demir Selmanovic pisze, że „DevOps to kultura, sposób myślenia i jest częścią IT jako (a) całości”. Pisze dalej, że DevOps to praktyka, która umożliwia organizacjom optymalizację szybkości i wydajności w ramach funkcji IT.

Amazon Web Services, który jest największym graczem w infrastrukturze chmury i w związku z tym rozwinął znaczną wiedzę specjalistyczną DevOps, stosuje podobną definicję, mówiąc, że „DevOps to połączenie filozofii, praktyk i narzędzi kulturowych, które zwiększają zdolność organizacji do dostarczania aplikacji i usług z dużą prędkością: rozwijanie i ulepszanie produktów w szybszym tempie niż organizacje korzystające z tradycyjnych procesów tworzenia oprogramowania i zarządzania infrastrukturą”.

„Ludzie DevOps to w zasadzie ci, którzy zainteresowali się zarówno administracją systemami, jak i tworzeniem oprogramowania, i postanowili połączyć swoje umiejętności, aby stworzyć ujednolicone, lepsze podejście do obu”.

Obie te definicje są przydatne dla odbiorców już dobrze obeznanych z pokrewnymi dziedzinami, ale mogą być zbyt abstrakcyjne dla kadry kierowniczej o mniej rozległym zapleczu technicznym. Rzeczywiście, być może część zamieszania wokół definicji DevOps wynika z faktu, że często przywołuje się ją jednocześnie jako rodzaj inżyniera, zestaw praktyk i kulturę. Chociaż DevOps obejmuje każdy z tych elementów, warto zacząć od osobnego ich rozważenia.

Zacznijmy od tego, jak wygląda inżynier DevOps, Martin Chikilian, programista wcześniej dla IBM i Hewlett Packard z ponad dziesięcioletnim doświadczeniem w stosowaniu zasad DevOps, ujmuje to w prosty, konkretny sposób: „Ludzie DevOps to w zasadzie ci, którzy znaleźli zainteresowanie zarówno w administrowaniu systemami, jak i tworzeniu oprogramowania i postanowili połączyć swoje umiejętności, aby stworzyć ujednolicone, lepsze podejście do obu.”

Są w stanie utrzymywać serwery, sieci i inne rodzaje systemów infrastruktury firmy, a także aktywnie iterować i ulepszać te systemy poprzez tworzenie oprogramowania. Jak powiedział Chikilian w inny sposób: „Osoba DevOps to ktoś, kto może wykorzystać podstawy tworzenia oprogramowania, aby pomóc sobie i firmom w tworzeniu lepszych narzędzi do obsługi infrastruktury”.

„Kombinacja filozofii kulturowych”, jak to ujął Amazon, odnosi się do kombinacji podejść stosowanych przez twórców oprogramowania oraz tych, które dysponują wiedzą ekspercką w zakresie infrastruktury lub operacji na oprogramowaniu. Przełamując tradycyjną barierę między tymi praktykami, kultura DevOps stara się umożliwić organizacjom czerpanie korzyści z wyraźnych mocnych stron, które deweloperzy i eksperci ds. infrastruktury wnoszą do stołu. Pomyślne wdrożenie zasad DevOps „wymaga zmiany kultury i sposobu myślenia” dla firm, które gromadzą różnego rodzaju inżynierów. Jak opisuje Emily Dowdle na szczycie Nordic API Platform w 2016 r., usuwanie barier pomaga również złagodzić naturalne tarcia, które mogą czasami występować między programistami a ekspertami ds. infrastruktury, oraz sprzyjają bardziej przyjaznemu, opartemu na współpracy środowisku pracy.

Mówiąc prościej, DevOps polega na przełożeniu złożonych procesów ręcznych obejmujących podatną na błędy interakcję między ludźmi na oprzyrządowane podejście, które można testować, mierzyć i łatwo skalować.

Uzbrojony w zrozumienie tego, jak wygląda praktyk i kultura DevOps, to, co oznacza DevOps jako praktyka, staje się bardziej widoczne. Mówiąc prościej, DevOps polega na przełożeniu złożonych procesów ręcznych obejmujących podatną na błędy interakcję między ludźmi na oprzyrządowane podejście, które można testować, mierzyć i łatwo skalować. Na przykład, jeśli programista chciałby stworzyć środowisko, które umożliwia użytkownikom biznesowym przekazywanie opinii, może zainicjować zautomatyzowany proces, w którym programista może wydać polecenie utworzone przez zespół DevOps (zamiast przekazywać fragment kodu zespołowi ds. infrastruktury), który w spójny i przetestowany sposób realizuje odpowiednie zadanie, szybko osiągając oczekiwane rezultaty i umożliwiając współpracę.

Kompleksowa definicja DevOps wymaga zrozumienia, co oznacza jako rodzaj inżyniera, kultury i praktyki. Po zbadaniu, co oznacza DevOps z tych perspektyw, teraz ważne jest, aby zagłębić się w to, jak wygląda DevOps po pomyślnym wdrożeniu.

Twój zestaw narzędzi DevOps

Oprócz wspomnianej zmiany kulturowej – przejście z firmy, która skupia twórców oprogramowania i ekspertów w dziedzinie infrastruktury na taką, która obejmuje ich współpracę – firmy muszą zrozumieć szereg konkretnych praktyk i narzędzi kluczowych dla DevOps. Poniżej znajdują się trzy najważniejsze (choć z pewnością nie jedyne) takie praktyki:

Automatyzacja: Zwiększona wydajność ma kluczowe znaczenie dla metodyki DevOps, co można w znacznym stopniu osiągnąć poprzez automatyzację szeregu stosunkowo powolnych, uciążliwych procesów związanych z tworzeniem oprogramowania i utrzymaniem infrastruktury. Jednym konkretnym przykładem, który przytacza Amazon, jest praktyka automatycznego wysyłania stosunkowo niewielkich, ale częstych aktualizacji oprogramowania. Ta praktyka zdejmuje ciężar z administratorów systemów, którzy w innym przypadku musieliby przeprowadzać te aktualizacje ręcznie. Jak zauważa Amazon, ta praktyka ma również tę zaletę, że zmniejsza ryzyko wdrażania oprogramowania poprzez umożliwienie administratorom łatwiejszego wychwytywania i naprawiania mogących się pojawić błędów. Automatyzacja jest podstawą DevOps i ma kluczowe znaczenie dla innych praktyk DevOps omówionych poniżej.

Ciągła integracja: na podstawowym poziomie DevOps polega na ścisłej współpracy między inżynierami, a co więcej, całymi zespołami. Ciągła integracja odnosi się do praktyki współdzielenia i łączenia kodu przez inżynierów w centralnej lokalizacji. Jak wyjaśnia Amazon: „W przeszłości programiści w zespole mogli pracować w izolacji przez dłuższy czas i próbować scalać swoje zmiany dopiero po zakończeniu pracy”. Dzięki ciągłej integracji inżynierowie mogą wydajniej współpracować i uniknąć wąskich gardeł związanych z opracowywaniem i integrowaniem kodu w bardziej fragmentaryczny sposób.

Ciągłe dostarczanie: Ciągłe dostarczanie odnosi się do praktyki automatycznego dostarczania i wdrażania zmian oprogramowania w miarę ich wprowadzania. Innymi słowy, Continuous Delivery jest możliwe dzięki Continuous Integration, ponieważ zmiany w kodzie mogą być skutecznie wprowadzane do całego systemu tylko wtedy, gdy kod jest już umieszczony w centralnym miejscu. Automatyzacja jest również kluczowa dla Continuous Delivery. Rzeczywiście, wyżej wymieniony przykład wysyłania małych, częstych aktualizacji systemu może być również traktowany jako przykład ciągłego dostarczania. Ciągłe dostarczanie umożliwia organizacjom szybkie wdrażanie zmian i ulepszeń, a inżynierom pozwala bardziej efektywnie skoncentrować swój czas na innych, złożonych zagadnieniach.

Zatrudnianie właściwych ludzi

Oczywiście firmy muszą zatrudnić odpowiednich inżynierów, aby powyższe praktyki zostały pomyślnie wdrożone. Inżynierowie DevOps muszą posiadać umiejętności, które łączą wiedzę z zakresu tworzenia oprogramowania i infrastruktury systemowej, a takie połączenie może być trudne do znalezienia.

„Ważne jest, aby byli w stanie wypełnić lukę między surowym kodem a wyzwaniami, z którymi firma musi stawiać czoła na co dzień – takimi jak zmniejszenie tarcia między pomysłami, dostarczaniem i konsumentami”.

Andrea Villa, były inżynier DevOps w firmie Atlassian i architekt systemów w CloudReach z 15-letnim doświadczeniem w administrowaniu systemami, bezpieczeństwie informacji i sieciach, uważa, że ​​inżynierowie DevOps potrzebują szerokiego zakresu doświadczenia i wiedzy, aby odnieść sukces.

„Aby być skutecznym, dzisiejszy inżynier DevOps musi mieć wykształcenie programistyczne i szeroką wiedzę z zakresu administrowania systemem i znajomości sieci” — powiedział Villa. „Ważne jest, aby byli w stanie wypełnić lukę między surowym kodem a wyzwaniami, z którymi firma musi stawiać czoła na co dzień – takimi jak zmniejszenie tarcia między pomysłami, dostarczaniem i konsumentami”.

Zakwalifikowanie się na silnego inżyniera DevOps jest wyraźnie łatwiejsze do powiedzenia niż do zrobienia, a znalezienie takich inżynierów może być podobnie trudne. Mimo to zrozumienie narzędzi leżących u podstaw praktyk DevOps może umożliwić Twojej organizacji dokładniejsze dostosowywanie praktyk zatrudniania w celu znalezienia odpowiedniego talentu i pomyślnego wdrożenia tych praktyk.

Dlaczego DevOps naprawdę ma znaczenie

Korzystanie z praktyk DevOps wiąże się z szeregiem korzyści, z których niektóre – w tym większa wydajność, bezpieczeństwo i współpraca organizacyjna – zostały już omówione. Raport State of DevOps 2017 określa ilościowo ten wzrost wydajności, informując, że organizacje o wysokiej wydajności, które stosują praktyki DevOps, spędzają o 21% mniej czasu na nieplanowaną pracę i przeróbki, ao 44% więcej czasu na nową pracę.

Mówiąc ogólniej, jednak pomyślne wdrożenie praktyk DevOps może mieć głęboki wpływ na Twoją firmę poprzez poprawę wydajności i wykonania w obszarach, które są zarówno niezbędne, jak i zdecydowanie nieefektowne.

Fredrik Haard, inżynier z ponad 12-letnim doświadczeniem w DevOps, który pracował jako starszy architekt chmury w McKinsey i Wondersign, pełniej to wyraża.

„Dobrzy inżynierowie DevOps muszą być mistrzem – i brać odpowiedzialność za – wszystkie obszary, które mogą nie być traktowane priorytetowo przez organizację, takie jak bezpieczeństwo danych, odzyskiwanie po awarii, łagodzenie skutków i audyty” – powiedział Haard. „Wybory, których dokonujesz w DevOps, mogą mieć długotrwałe efekty w firmie”.

Microsoft dostrzegł również te pozytywne efekty, wdrażając praktyki DevOps w swojej grupie inżynierskiej Cloud + Enterprise. Aby zapewnić najlepsze wyniki, wyjaśnia Microsoft, „potrzebowaliśmy inżynierii i operacji, aby ściśle ze sobą współpracować przez cały cykl rozwoju, od projektu do wdrożenia w środowisku produkcyjnym”. Dzięki przejściu na kulturę DevOps i zastosowaniu praktyk DevOps firma Microsoft była w stanie skalować i dostarczać swoim klientom usługi wysokiej jakości znacznie szybciej niż wcześniej.

Rozwiązanie tych problemów i poprawa wydajności są same w sobie świetne, ale ostatecznie są środkiem do bardziej fundamentalnego celu: wytwarzania niesamowitych produktów i przynoszenia większych zysków i zadowolenia klientów.

Inżynierowie DevOps mogą skutecznie działać jako wewnętrzny zespół komandosów firmy, pomagając w rozwiązywaniu różnorodnych problemów, które, choć być może nieatrakcyjne lub niewidoczne, są absolutnie kluczowe dla prawidłowego funkcjonowania firmy.

Rozwiązanie tych problemów i poprawa wydajności są same w sobie świetne, ale ostatecznie są środkiem do bardziej fundamentalnego celu: wytwarzania niesamowitych produktów i przynoszenia większych zysków i zadowolenia klientów. Być może najważniejszym powodem, dla którego DevOps naprawdę ma znaczenie, jest to, że umożliwia organizacjom maksymalizację każdego z tych wskaźników.

Wychodząc naprzeciw przyszłości z DevOps

W 2015 roku, partner Andreessen Horowitz, Scott Weiss, powiedział, że DevOps to „więcej niż tylko metodologia. To niezbędny zestaw umiejętności dla współczesnego programisty — i coraz częściej staje się osobnym działem”.

Okazało się to prawdą, ponieważ szereg firm technologicznych, w tym Amazon, Microsoft i Google, zbudowało zespoły DevOps i przeznaczyło znaczne zasoby na budowanie specjalistycznej wiedzy w kosmosie. Weiss i inni główni gracze technologiczni postrzegają DevOps nie tylko jako przemijającą modę, ale raczej jako kluczowy element przyszłości oprogramowania.

DevOps będzie nadal mieć szczególne znaczenie, ponieważ branże będą coraz bardziej uzależnione od infrastruktury chmurowej. W raporcie z 2017 r. Gartner Research przewidywał, że rynek usług w chmurze będzie rósł o ponad 15% rocznie do 2020 r. Aby ująć ten wzrost w dolarach, niedawny artykuł opublikowany przez Forbes wskazuje, że rynek przetwarzania w chmurze wzrośnie z około 260 miliardów dolarów w 2017 r. do około 411 miliardów dolarów w 2020 r. DevOps może mieć ogromny wpływ na szybkość, z jaką Twoja firma pomyślnie migruje systemy do chmury. W Toptal korzystamy z metodyki DevOps od samego początku — i jest to integralna część naszego sukcesu jako firmy zajmującej się chmurą hiperrozrostową.

Tak jak rynek Cloud Services rozwija się w szybkim tempie, tak samo rośnie znaczenie DevOps. Niezależnie od tego, czy zajmujesz się energetyką, opieką zdrowotną czy szkolnictwem wyższym, Twoja firma będzie musiała rozwinąć wiedzę fachową DevOps. Zrozumienie, czym jest DevOps, jak jest zaimplementowane i dlaczego jest tak ważne, stanowi niezbędny pierwszy krok, gdy myślisz o korzystaniu z tej kluczowej praktyki w przyszłości.