Model ciągłego dostarczania/wdrażania
Wiesz już o wielu wadach "epickiego wdrożenia" jako modelu dostarczania oprogramowania, ale wiedza, co nie działa dobrze, to tylko połowa bitwy. W tej lekcji poznasz alternatywę dla tej metody monolitycznej i dowiesz się, jak może ona dalej dążyć do zwiększenia niezawodności.
Co to jest ciągłe dostarczanie?
Ciągłe dostarczanie to metoda, za pomocą której możesz udostępnić zmiany wprowadzone w oprogramowaniu szybciej, spokojniej, mniej ryzykownie i w bardziej powtarzalny sposób. Zamiast zamieniania każdego wdrożenia lub każdej aktualizacji oprogramowania w znaczące wydarzenie, ciągłe dostarczanie dąży do przekształcenia tych zdarzeń w szybkie, rutynowe, przewidywalne akcje wykonywane na żądanie.
Częstotliwość wdrażania: w przypadku modelu ciągłego dostarczania często odbywają się wdrożenia. Często może to być co miesiąc, co tydzień, codziennie, nawet co godzinę. Kluczową zasadą jest wdrażanie mniejszych, bardziej skoncentrowanych zmian z większą częstotliwością.
Zainicjowane przez zatwierdzenie kodu: Zamiast planować z dużym wyprzedzeniem wdrożenia odbywają się w miarę zatwierdzania kodu. Ten kod może być oprogramowaniem, infrastrukturą lub nawet elementami takimi jak konfiguracje oprogramowania.
Testowanie automatyczne: można używać zintegrowanego testowania automatycznego nie tylko do testowania kodu, ale także do szybkiego przekazywania opinii na temat wyników tych testów. Jest to ta szybka opinia, która umożliwia szybkie iterowanie i odzyskiwanie po nieudanych testach.
Po przetestowaniu kodu możesz przetestować zakończenie wdrożenia w szeregu środowisk etapowych, takich jak test, qa itd. Wdrażanie stopniowe w ramach tych środowisk staje się zintegrowaną częścią środowiska wdrażania.
Rekordy historyczne: Nie tylko chcesz mieć historyczny rekord działań wdrażania, ale także chcesz mieć możliwość uzgodnienia środowiska produkcyjnego w danym momencie. Chcesz dowiedzieć się, które wdrożenie utworzyło bieżące środowisko produkcyjne. Dzięki tej wiedzy można śledzić takie elementy jak konfiguracje, wyniki testów i sam kod aż do pojedynczego żądania ściągnięcia, które wyzwoliło wdrożenie.
Cele wdrożenia
Teraz, gdy wiesz już, jak działa ciągłe dostarczanie, zastanów się nad celami, które możesz osiągnąć przy użyciu rozwiązań metodyki DevOps, takich jak te dotyczące wdrażania rozwiązań programowych.
Cel 1. Zmniejszenie obciążenia związanego z wdrażaniem usług przy jednoczesnym zwiększeniu niezawodności tych usług
Jest to wygrana; nie tylko zwiększasz zadowolenie z pracy, zmniejszając stres związany z wdrażaniem oprogramowania i infrastruktury, zwiększasz również zadowolenie zarówno z pracy, jak i zadowolenia użytkowników końcowych, zwiększając niezawodność systemów. Biorąc pod uwagę ten pozytywny wpływ na środowisko klienta, technicznie jest to win-win-win.
Cel 2. Skrócenie czasu między tym, kiedy wiadomo, że zmiana jest wymagana, a kiedy ta zmiana zostanie wdrożona w środowisku produkcyjnym
Załóżmy na przykład, że zidentyfikowano wadę kodu wpływającą na przychody. Dokładnie wiesz, co jest problemem i jak napisać kod poprawki. Jak długo zabierze Ci umieszczenie tego kodu w środowisku produkcyjnym? Ile ciągów należy ściągnąć? Jak wykonasz testy? Dzięki rozwiązaniom metodyki DevOps możesz zatwierdzić kod, pójść na obiad i odebrać powiadomienie o rozwiązaniu problemu przed powrotem do biurka.
Cel 3. Skrócenie czasu między pomysłem a dostarczaniem oprogramowania do użycia
Jest to bardzo podobne do poprzedniego celu, ale zamiast wdrażać zmiany, mówimy o czystych innowacjach. Jak długo zabiera Ci zajęcie się innowacją? Dzięki temu modelowi wdrażania można zintegrować nową koncepcję z systemem produkcyjnym i mieć pewność, że dodane innowacje nie będą w żaden sposób zakłócać bieżącego systemu. Ta pewność pozwala Ci szybko dostarczyć nową funkcję.
Wyniki wdrożenia
Cele omówione w tej lekcji nie są tylko aspiracjami teoretycznymi, są osiągalne. Poniżej znajdują się dane statystyczne z raportu 2019 Accelerate State of DevOps Report (Przyspieszenie — stan metodyki DevOps, 2019 r.) autorstwa grup DevOps Research and Assessment (DORA) i Google Cloud DevOps & SRE. W nim odkryli, że "wysokiej wydajności" firmy DevOps:
- Liczba wdrożeń to 208 razy.
- Szybkość zatwierdzania do wdrożenia jest 106 razy szybsza.
- Mają 7-krotny niższy współczynnik niepowodzeń zmian.
- 2604 razy szybszy czas odzyskiwania zdarzeń.
To wszystko prowadzi do zwiększenia przychodów i szybszego czasu na rynek.
Te liczby stanowią dowód twierdzenia, że rozwiązania dotyczące wdrażania mają znaczenie.