Wyjaśniając komuś DevOps, zdarza się, że pojawia się pytanie:
W jaki sposób zarządzanie wersjami przy użyciu metodyki Agile różni się od Waterfall?
Jakiego rodzaju kryteriów możesz użyć, aby wyjaśnić te różnice takiej grupie odbiorców?
źródło
Wyjaśniając komuś DevOps, zdarza się, że pojawia się pytanie:
W jaki sposób zarządzanie wersjami przy użyciu metodyki Agile różni się od Waterfall?
Jakiego rodzaju kryteriów możesz użyć, aby wyjaśnić te różnice takiej grupie odbiorców?
IMO DevOps to kultura, podobnie jak Agile (bez wybierania zwinnej metodologii). Dlatego nie „robisz” DevOps.
„Robisz” metodologię zwaną Continuous Delivery jako część DevOps Culture. (pełne ujawnienie, nie sądzę, żebym kiedykolwiek wspominał o CD jako o metodologii wydania, ale w moim stanie odrzutowym myślę, że to działa)
Jeśli to kupisz, oto definicja Continuous Delivery od jednej z osób, które napisały książkę pod tym samym tytułem, Jez Humble .
Continuous Delivery to możliwość wprowadzania zmian wszelkiego rodzaju - w tym nowych funkcji, zmian konfiguracji, poprawek błędów i eksperymentów - do produkcji lub w ręce użytkowników, szybko i bezpiecznie w sposób zrównoważony.
Naszym celem jest, aby wdrożenia - na dużą skalę systemu rozproszonego, złożonego środowiska produkcyjnego, systemu osadzonego lub aplikacji - były przewidywalne, rutynowe, które można wykonywać na żądanie.
Osiągamy to wszystko, zapewniając, że nasz kod jest zawsze w stanie do wdrożenia, nawet w obliczu zespołów tysięcy programistów, którzy codziennie wprowadzają zmiany. W ten sposób całkowicie eliminujemy etapy integracji, testowania i hartowania, które tradycyjnie następowały po „dev complete”, a także zawieszanie się kodu.
Zatem możesz pracować w metodyce Agile, mając oprogramowanie, które możesz zademonstrować firmie, upewniając się, że wykonujesz odpowiednie automatyczne testy, dobrze reagujesz na zmiany i wszystkie rzeczy, które sprawiają, że jest lepszy niż wodospad. Zbyt często nie oznacza to, że można go wdrożyć do produkcji.
W efekcie powstaje coś takiego:
Więc oprogramowanie będzie (prawdopodobnie) lepsze, gdy skończysz, jeśli nie miałbyś jakiegoś iteracyjnego podejścia, ale tak naprawdę nie wiesz, ponieważ prawdziwi użytkownicy nigdy go nie widzieli.
To, czego naprawdę chcesz, to coś, co wygląda mniej więcej tak:
Z każdą iteracją coś zostaje wdrożone do produkcji. Oprogramowanie zostało więc wdrożone . Jeśli zdecydujesz się utworzyć pliki do pobrania, otwórz serwer WWW lub dostaniesz oprogramowanie w ręce użytkowników, które zostaną wydane .
Co ma z tym wspólnego DevOps?
Bardzo, bardzo trudno (zbliża się to niemożliwe), aby naprawdę mieć oprogramowanie w stanie, w którym można je wdrożyć w dowolnym momencie, chyba że zespół pracuje w kulturze DevOps. Kultura, w której administratorzy systemu, DBA, SRE, specjaliści od bezpieczeństwa, deweloperzy, kontrole jakości itp. Są częścią jednego zespołu, a nie uciszoną częścią organizacji z handoffami.
Uwaga :
O części komentarza opublikowanego do tej odpowiedzi, która wyglądała tak:
O twoim „... oprogramowaniu w stanie, w którym możesz go wdrożyć, kiedy chcesz ...”: przypomina mi to oprogramowanie „automatycznego pilota” (w samolocie) ... Moje ulubione pytanie na ten temat: „ Wyobraź sobie aktualizację jest zastosowane do takiego oprogramowania ... Jak byś się czuł tak robiąc inflight ... Gdy jesteś na pokładzie? ".
Uwielbiam to pytanie (pogrubione, w powyższym cytacie)! Pomysł „czy to naprawdę gotowe?” jest czymś, o czym ciągle gadam - blog . IMO jest ważne, abyś był pewny bezpieczeństwa, wydajności i innych zbyt często „wtórnych” testów, aby ćwiczyć CD. Funkcje są wykonywane, gdy są gotowe, ale hakerzy są zawsze na miejscu.
Nie jestem pewien, czy nie ma żadnych innych, ale takich kryteriów używam:
A jeśli naprawdę chcesz sam poczuć różnicę jako użytkownik jakiegoś oprogramowania, zastanów się nad użyciem jakiegoś oprogramowania (takiego jak dystrybucja Linuksa), w którym masz do wyboru jedną z tych wersji:
wydanie „
Rolling
” (==> Agile).wydanie „
Long Term Support
” (==> Wodospad).źródło