Jaka może być poprawna definicja DevOps, aby przedstawić ją nowicjuszowi?

16

Zrobiłem / stworzyłem wiele prezentacji związanych z SCM, a teraz próbuję „uaktualnić” do następcy DevOps.

To, co zawsze staram się robić w moich prezentacjach, to wymyślić slajd wprowadzający, który w jakiś sposób zawiera przesłanie, które chcę przekazać (i które następnie rozwijam w dalszej części mojej prezentacji). Robiąc to, staram się odpowiedzieć na moje pytanie w stylu „Jakie byłyby od 1 do 3 wyrażeń, których chciałbym użyć, gdybym otrzymał od 10 do 20 sekund (tylko!), Aby wyjaśnić to komuś nowemu? * „.

Myślałem, że wiem, co właściwie oznacza DevOps i o co chodzi. Ale widziałem dziwne zastosowania / konteksty DevOps (nawet na DevOps.SE ...). Zastanawiam się, czy może to, co moim zdaniem jest DevOps, jest całkowicie błędne.

Więc co ogólnie uznaje się za definicję DevOps?

Pierre.Vriens
źródło
Historia komentarzy została przeniesiona na czat, aby zapisać, w jaki sposób można poprawić pytanie.
Tensibai,
1
Najważniejsze, czego nauczyłem się podczas rozmowy z wieloma ludźmi, to brak uzgodnionej definicji.
Bojkot SE dla Moniki Cellio
merci @XiongChiamiov ... brzmi to tak, jakbyś zdawał sobie sprawę z jednej z innych definicji ... Dlaczego nie spróbować opublikować ich jako dodatkową odpowiedź?
Pierre.Vriens

Odpowiedzi:

11

DevOps w pigułce

Z Wikipedii :

Devops (a obcięte związek z „ oprogramowania DEV elopment ” i „ technologia informacyjna OP chłodnika S ”) to termin używany w odniesieniu do zbioru praktyk, które podkreślają współpracę i komunikację zarówno twórców oprogramowania i technologii informatycznych (IT) specjalistów podczas automatyzowania proces dostarczania oprogramowania i zmiany infrastruktury.

Ma na celu stworzenie kultury i środowiska, w którym tworzenie , testowanie i wydawanie oprogramowania może się odbywać szybko, często i bardziej niezawodnie.

Z przeglądu :

wprowadź opis zdjęcia tutaj

Schemat Venna przedstawiający DevOps jako skrzyżowanie rozwoju (inżynierii oprogramowania), operacji i zapewnienia jakości (QA)

Chociaż nie ma jednego „narzędzia” dla DevOps, a raczej zestaw narzędzi, znany również jako łańcuch narzędzi DevOps :

wprowadź opis zdjęcia tutaj

Ilustracja przedstawiająca etapy w zestawie narzędzi DevOps

Ilustracje DevOps

Poniżej znajduje się kilka cytatów z niektórych pytań na DevOps.SE , które wydają się w jakiś sposób pasować / potwierdzać część powyższego opisu DevOps:

DevOps NIE jest rolą

Poniżej znajduje się kilka cytatów z niektórych pytań na DevOps.SE , które wydają się ilustrować, że DevOps NIE jest rolą:

Pierre.Vriens
źródło
10

Od prawie pięciu lat praktykuję i doradzam w DevOps jako konsultant z różnymi klientami, zanim do mojej obecnej pozycji zajmowałem stanowiska w tworzeniu oprogramowania, operacjach sieciowych i administracji systemami. Z mojego osobistego doświadczenia DevOps występuje w wielu smakach.

Wzorce organizacyjne

DevOps Antipatterns:

  • NoOps i NoDevs - nie ściśle DevOps w najściślejszym sensie, jednak zespoły te zarówno budują, jak i obsługują oprogramowanie, nie dzieląc linii między Programowaniem a Operacjami. Wyzwania związane z tymi zespołami sprowadzają się do dojrzałości, zespoły programistów mogą być ekspertami w dziedzinie tworzenia oprogramowania, ale nowymi operatorami i odwrotnie.

  • DevOps Bridge - tutaj jeden lub więcej zespołów ponosi odpowiedzialność za przejęcie pracy od zespołów programistycznych i „ wyprodukowanie ” go, aby działał . Wyzwanie sprowadza się do tego, że obecnie występują dwa hand-offy, tj. Rozwój → DevOps i DevOps → Operacje.

  • Zespół DevOps - może to prawdopodobnie działać, jeśli zespół jest odpowiedzialny za budowanie narzędzi wspierających Model operacyjny z włączonym DevOps, jednak prawdopodobnie powinien być nazywany „zespołem narzędzi” lub „zespołem platform”.

Wzory DevOps:

  • Wbudowane DevOps - częściej określane jako Inżynieria Platformy, w ramach której w zespole jest ktoś, kto jest odpowiedzialny, ale nie jest odpowiedzialny za zapewnienie automatyzacji, narzędzi i infrastruktury do dostarczania i wdrażania rozwiązania, czasami także za obsługę oprogramowania - w mojej opinii , to ten ostatni jest faktycznie reprezentatywny dla DevOps.

  • Zinstytucjonalizowane DevOps - gdzie zespół projektowy jest odpowiedzialny zarówno za rozwój, jak i działanie pakietu oprogramowania budującego wspólną własność i pozytywne pętle zwrotne.

Praktyki

Rzeczywista praktyka DevOps opiera się na kilku innych praktykach, a mianowicie:

Każda z powyższych praktyk opiera się na drugiej, można nie stosować się do niej, oznacza to jednak brak ważnego cyklu informacji zwrotnej, który może wskazywać na „utraconą okazję”. Kluczowym rozróżnieniem pomiędzy stosowaniem innych praktyk a DevOps jest działanie oprogramowania w produkcji .

DevOps Practices

Trzy sposoby

W The Phoenix Project Gene Kim i jego współautorzy opisują trzy sposoby DevOps :

Systemy myślenia

Systemy myślenia

Pierwszy sposób kładzie nacisk na wydajność całego systemu, w przeciwieństwie do wydajności konkretnego silosu pracy lub działu - może to być tak duży dział (np. Dział rozwoju lub IT) lub tak mały jak indywidualny współpracownik (np. , programista, administrator systemu).

Z mojego doświadczenia wynika, że ​​programiści biorą pod uwagę obawy operacyjne i wymagania niefunkcjonalne osiągają ten cel. To bardzo część kulturowych aspektów DevOps.

Wzmocnienie pętli sprzężenia zwrotnego

Wzmocnienie pętli sprzężenia zwrotnego

Drugi sposób polega na tworzeniu pętli sprzężenia zwrotnego od prawej do lewej. Prawie każda inicjatywa doskonalenia procesu ma na celu skrócenie i wzmocnienie pętli sprzężenia zwrotnego, aby można było ciągle wprowadzać niezbędne poprawki.

Zasadniczo osiągam to poprzez ciągłą integrację / dostarczanie / wdrażanie oraz wspólne monitorowanie i alarmowanie, co bardzo dobrze pasuje do komponentu narzędziowego DevOps.

Kultura ciągłego eksperymentowania i uczenia się

Kultura ciągłego eksperymentowania i uczenia się

Trzecia droga polega na tworzeniu kultury, która wspiera dwie rzeczy: ciągłe eksperymentowanie, podejmowanie ryzyka i uczenie się na porażce; oraz zrozumienie, że powtarzanie i praktyka są warunkiem opanowania.

To bardzo pasuje do przestrzeni kultury , choć w dużym stopniu zależy od narzędzi i procesu umożliwiającego wzrost kultury.

Richard Slater
źródło
Doskonała odpowiedź! chociaż natknąłem się na porównania różnych praktyk na tym wykresie ... szczególnie jeśli chodzi o zwinność. Myślę, że określenie to jest zbyt szerokie. Testy są wykluczone, chociaż niektóre zwinne metodyki stawiają testowanie w centrum ich praktyk. Kiedyś można argumentować, że DevOps jest (lub może zależeć od tego, jak jest implementowany) bardzo zwinny. Zwinny manifest przedstawia bardziej filozofię niż dobrze powiązane zasady praktyki. Chyba bardziej niż narzekanie, to naprawdę fajna odpowiedź!
Newtopian
Nie mogę w pełni uwierzyć w ten schemat, został narysowany przez wielu konsultantów przede mną na wielu tablicach na całym świecie. Wydaje mi się, że opisuje praktykę zwinności, w której zespoły koncentrowały się na tworzeniu potencjalnie użytecznych produktów w krótkich iteracjach, CI podążyło za praktyką, która zautomatyzowała niektóre z tych prac, C. Dostawa zautomatyzowana w zakresie przygotowania kompilacji do wdrożenia, C. Wdrożenie faktycznie wdrożono tę wersję, a DevOps obsługuje oprogramowanie w produkcji.
Richard Slater
4

Słyszałem wiele, wiele różnych definicji DevOps. Zawierają:

  • Deweloperzy obsługujący zadania operacyjne
  • Jedna osoba wykonuje dwa razy więcej pracy (w tym samym czasie)
  • Programiści i zespoły operacyjne współpracują ze sobą
  • Operacje działają na rzecz narzędzi programistycznych (w stylu „Web Ops”)
  • Tytuł pracy dla kogoś, kto tworzy i utrzymuje narzędzia programistyczne
  • Zastosowanie automatyzacji w operacjach
  • Wykorzystanie chmur publicznych w operacjach
  • Praca, która łączy aspekty działania, rozwoju i zapewnienia jakości
  • Praca, która wymaga współpracy zespołów programistów i operacyjnych
  • Filozofia przełamywania barier między zespołami
  • Traktowanie infrastruktury jako kodu
  • Co zyskujesz, gdy byli inżynierowie oprogramowania rozpoczynają działalność
  • Zupełnie nic nie znaczące modne hasło

Nie ma publicznego konsensusu co do tego, czym właściwie jest DevOps . Kilka lat temu mieliśmy podobne problemy z „Agile” i to ma pisemną definicję .

Przedstawiając swoje koncepcje nowicjuszowi, skoncentruję się na przedstawieniu tych koncepcji, zamiast na umieszczaniu etykiety, bo inaczej usłyszą sprzeczne definicje i będą mylone. Na przykład, jeśli próbujesz mówić o infrastrukturze jako kodzie , powiedz im, że mówisz o infrastrukturze jako kodzie. Im bardziej konkretny jesteś, tym lepiej, ponieważ nawet przy ustalonych definicjach większość firm koncentruje się bardziej na określonych częściach filozofii.

Bojkot SE dla Moniki Cellio
źródło
2

Definicja, której zawsze używam w tej sytuacji, jest następująca:

„Kultura tworzenia oprogramowania, która kładzie nacisk na komunikację i współpracę między zespołami zajmującymi się tworzeniem oprogramowania i operacjami, jednocześnie automatyzując proces dostarczania oprogramowania i zmiany infrastruktury. Celem DevOps jest uczynienie procesu tworzenia, testowania i wdrażania oprogramowania tak częstym, szybkim i jak to możliwe. ”

Jednak wraz z definicją ważne jest, aby rozumieli, DLACZEGO potrzebujemy DevOps. Pamiętaj, aby powiedzieć im, że DevOps szybciej łagodzi defekty oprogramowania, pozwala na lepsze zarządzanie zasobami, mniej błędów ludzkich, lepszą kontrolę wersji, stabilne środowisko operacyjne itp.

DevOps Jedi
źródło
1

W poniższym artykule z badań naukowych, aby dokładnie zbadać to pytanie „Czym jest DevOps”, proponowana pochodna definicja DevOps to:

DevOps jest metodologią programistyczną mającą na celu wypełnienie luki między programowaniem (programistą) a operacjami (operacjami operacyjnymi), kładąc nacisk na komunikację i współpracę, ciągłą integrację, zapewnienie jakości i dostarczanie z automatycznym wdrażaniem z wykorzystaniem zestawu praktyk programistycznych.

[Jabbari i wsp.] „Co to jest DevOps ?: Systematyczne badanie mapowania definicji i praktyk” (2016)

Peter Muryshkin
źródło
-2

Devops to praktyka opracowywania aplikacji, których domeną biznesową jest działalność. Tam, gdzie większość opracowywania aplikacji koncentruje się na tworzeniu aplikacji finansujących lub zajmujących się opieką zdrowotną, logistyką lub filmami dla kotów, deweloperzy koncentrują się na aplikacjach, które umożliwiają budowanie, wdrażanie, monitorowanie i gromadzenie danych.

Celem nadrzędnym powinno zawsze być umożliwienie decydentom stać decydentów . Wyobraź sobie aplikację mobilną swojego banku. Gdy poprosisz o przeniesienie, dzieje się to po naciśnięciu przycisku. Ty wykonane decyzji, a następnie wziął decyzję. To samo dotyczy twoich operacji. Gdy odpowiednia osoba zdecyduje, że część pracy jest gotowa do wdrożenia na produkcję, powinna być w stanie nacisnąć przycisk i „Właściwe rzeczy się zdarzą”. Podobnie powinni mieć wszystkie niezbędne informacje potrzebne do podejmowania prawidłowych decyzji biznesowych.

Nie chodzi o zapewnienie ludziom biznesu dostępu do serwerów - to mylący cel z implementacją. Chodzi o dostarczenie właściwych pokręteł i dźwigni odpowiednich informacji i właściwych barier ochronnych właściwym osobom, tak aby decydenci byli decydentami.

Rob Kinyon
źródło
1
whose business domain is operations: Można to rozwinąć lub podać kilka przykładów?
Dawny33
Nie zgadzam się, devops to model organizacyjny do wspierania rozwoju oprogramowania, a nie praktyka programistyczna sama w sobie, możesz wykonywać ekstremalne programowanie w modelu devops (na przykład mixin dev, ops, klienci i testerzy) (pozostałe odpowiedzi mają dobre punkty btw )
Tensibai,
Podstawowa definicja „Devops to praktyka programistyczna polegająca na pisaniu aplikacji, których domeną biznesową jest działalność”, nie jest taką, jakiej widziałem jeszcze nikt inny. Pisanie aplikacji, bez względu na domenę lub cel, jest programowaniem, a nie DevOps.
Adrian