Szybsze wydawanie przy użyciu ciągłego dostarczania z mniejszymi kosztami i ryzykiem

Ukończone

Ciągłe dostarczanie to jedna z ośmiu funkcji taksonomii DevOps.

Dowiedz się, dlaczego ciągłe dostarczanie jest niezbędne

W 2012 r. błąd wdrażania oprogramowania spowodował utratę 460 mln USD dla Knight Capital Group, największego przedsiębiorcy w amerykańskich akcjach w tym czasie.

Straty rozpoczęły się, gdy rynek został otwarty. W kodzie nie było żadnych usterek — problem został spowodowany przez błąd, który został wykonany podczas ręcznego wdrażania tylko do jednego z ośmiu serwerów produkcyjnych.

Kiedy próbowali go naprawić, wszystkie osiem serwerów zakończyło się błędnie skonfigurowanym - więc stracili jeszcze więcej pieniędzy. Ponieważ wszystkie wdrożenia były ręczne, nie miały możliwości automatycznego wycofywania zmian.

Po próbie rozwiązania problemu przez 45 minut w końcu zamkną cały system. W tym czasie stracili 460 milionów dolarów.

To jest prawdziwa historia. Jaki będzie wpływ na Twoją organizację? Czy przeprowadzasz wdrażanie ręczne?

Być może najważniejsze pytanie, które należy zadać, aby ułatwić zrozumienie wydajności dostarczania w organizacji:

Ważne

Jak duży jest problem z wdrożeniem w środowisku produkcyjnym?

Strach i niepokój, jaki czują inżynierowie i pracownicy techniczni, gdy wypychają kod do produkcji, mogą nam wiele powiedzieć o wydajności dostarczania oprogramowania przez zespół.

Co to jest ciągłe dostarczanie?

Ważne

Ciągłe dostarczanie to podejście inżynieryjne oprogramowania, w którym zespoły tworzą oprogramowanie w krótkich cyklach, zapewniając, że oprogramowanie może być następujące:

  • Niezawodne wydawanie w dowolnym momencie
  • Wydano ręcznie

Celem ciągłego dostarczania jest:

  • Tworzenie, testowanie i wydawanie oprogramowania z większą szybkością i częstotliwością
  • Zmniejszanie kosztów, czasu i ryzyka dostarczania zmian przez umożliwienie większej liczby aktualizacji przyrostowych aplikacji w środowisku produkcyjnym

Ciągłe dostarczanie odbywa się w przypadku:

  • Oprogramowanie można wdrażać w całym cyklu życia
  • Ciągła integracja, a także rozbudowana automatyzacja są dostępne we wszystkich możliwych częściach procesu dostarczania, zwykle przy użyciu potoku wdrażania
  • Istnieje możliwość wykonania wdrożeń przycisków wypychanych dowolnej wersji oprogramowania do dowolnego środowiska na żądanie

Diagram shows the difference between continuous delivery and continuous deployment. The stages are the same in both cases: code done - unit tests - integrate - acceptance test - deploy to production. For continuous delivery, deployment to production happens manually. For continuous deployment, it's automatic.

Duże wdrożenia ręczne tworzą wysoki poziom ryzyka, znacząco zwiększając złożoność wydawanego oprogramowania, wprowadzając prawdopodobieństwo błędu ludzkiego i utrudniając identyfikowanie i naprawianie błędów wdrażania. Częstotliwość wdrażania jest niska, czas realizacji zmian jest wysoki, średni czas odzyskiwania jest długi i masz wysoki współczynnik niepowodzeń zmian.

Wyznaczony zespół operacyjny wykonuje ręczne wdrażanie poza godzinami pracy. Potrzebują ręcznego dokumentu i czasu, aby ręcznie przetestować udokumentowane kroki. Wykonywanie dużych wdrożeń trwa dłużej, jest trudniejsze do wycofania w przypadku niepowodzenia i obejmują większy zakres testowania po wdrożeniu. Liczba zmian na wdrożenie jest większa, a wdrożenie opinii zajmuje więcej czasu.

Automatyzując proces i umożliwiając wydawanie do środowiska produkcyjnego w dowolnym momencie, korzyści wynikające z ciągłego dostarczania są znaczące i liczne:

Diagram shows the circle of Continuous Delivery. The cycle goes from planning and tracking to development, building and testing, deployment, operation, monitoring and learning, and back to planning.

Zgodnie z raportem o stanie devops w 2019 r. organizacje devOps o wysokiej wydajności w porównaniu z niskimi wynikami osiągają:

  • Więcej niż 200 razy częściej wdrożeń
  • Ponad 100 razy krótszy czas realizacji zmian
  • Ponad 2600 razy szybszy średni czas odzyskiwania
  • Siedem razy niższy współczynnik niepowodzeń zmian

Ponadto, według globalnego badania przeprowadzonego przez CA Technologies, organizacje zdają sobie sprawę z nawet 20% poprawy czasu na rynku i zwiększenia przychodów.

Diagram shows the advantages of high-performing DevOps organizations using Continuous Delivery over low performers.

Uwaga

Ciągłe dostarczanie jest czasami mylone z ciągłym wdrażaniem. Ciągłe wdrażanie oznacza, że każda zmiana przechodzi przez potok i automatycznie zostaje umieszczona w środowisku produkcyjnym, co powoduje codzienne wdrażanie wielu wdrożeń produkcyjnych. Ciągłe dostarczanie oznacza tylko, że można często wykonywać wdrożenia, ale może nie wybrać, zwykle ze względu na firmy preferujące wolniejsze tempo wdrażania. Musisz wykonywać ciągłe dostarczanie, aby wykonać ciągłe wdrażanie.

Ciągła integracja jest wymaganiem wstępnym dla ciągłego dostarczania. Praktyki w miejscu umożliwiają kompilowanie i (niezawodne) wdrażanie aplikacji w dowolnym momencie i z wysoką jakością z kontroli źródła.

Diagram shows the relationship between Continuous Integration, Continuous Delivery and Continuous Integration