Wdrożenie niebiesko-zielone a wdrożenie kanaryjskie: kluczowe różnice

W dzisiejszym świecie tworzenia oprogramowania, a zwłaszcza w ekosystemie chmurowym, etap wdrożenia aplikacji odgrywa kluczową rolę.

Niestety, ten etap często bywa bagatelizowany. Firmy nie poświęcają wystarczająco dużo uwagi i zasobów, aby wdrożenia były szybkie, pewne, zautomatyzowane, lub chociażby spełniały którekolwiek z tych kryteriów.

Nierzadko spotykam się z ręcznymi procesami wdrażania. W najlepszych przypadkach, towarzyszy im szczegółowa lista kontrolna. W najgorszych, improwizowane plany, tworzone na ostatnią chwilę.

Automatyzacja procesu wdrożenia jest często odległym celem, umieszczanym na przyszłych etapach rozwoju. Droga do jego osiągnięcia bywa trudna i pełna niespodzianek. Niemniej jednak, w pełni zautomatyzowany i niezawodny proces wdrożenia to klucz do znacznych oszczędności czasu. Pozwala on na wyeliminowanie wysiłku, który zespół programistów zazwyczaj wkłada w każde wdrożenie produkcyjne.

Strategie wdrażania Canary i Blue-Green wykorzystują te zalety, a dodatkowo gwarantują wysoką dostępność i przyspieszają procesy instalacji oraz wycofywania. Umożliwiają one zespołom częstsze publikowanie aktualizacji bez konieczności nieprzespanych nocy. Przyjrzyjmy się bliżej, na czym polegają te strategie i czym się różnią.

Wdrożenie Niebiesko-Zielone: Omówienie

Źródło: cncf.io

Wdrożenie Niebiesko-Zielone minimalizuje przestoje i ryzyko związane z wprowadzaniem nowych wersji oprogramowania. Osiąga to poprzez utworzenie dwóch identycznych środowisk: aktywnego (niebieskiego) i nieaktywnego (zielonego).

Środowisko aktywne to miejsce, gdzie działa aktualna wersja oprogramowania, obsługująca ruch użytkowników. Środowisko nieaktywne służy do wdrażania i testowania nowej wersji.

Po zakończeniu testów i przygotowaniu nowej wersji, ruch jest przekierowywany ze środowiska aktywnego do nieaktywnego, które staje się nowym środowiskiem aktywnym. Proces ten można powtarzać w razie potrzeby.

Przeczytaj także: Wyjaśnienie wdrożenia niebiesko-zielonego i jego roli w DevOps

Kluczowe cechy i korzyści

Oto charakterystyczne cechy procesu wdrożenia Niebiesko-Zielonego:

  • Dwa identyczne środowiska, odzwierciedlające dane i procesy. Środowisko niebieskie (aktywne) to przestrzeń, gdzie użytkownicy realizują swoje codzienne zadania. Środowisko zielone (nieaktywne) służy do instalacji nowych wdrożeń i jest zawsze zsynchronizowane z niebieskim.
  • Przełączanie ruchu z aktywnego do nieaktywnego środowiska, które staje się nowym środowiskiem aktywnym. Przełączenie następuje natychmiast. Wszelkie problemy związane z wdrażaniem zostają zneutralizowane. Nie występuje okno przestoju. Użytkownicy nie muszą podejmować żadnych działań, aby przejść do nowego środowiska.
  • W przypadku problemów, szybkie wycofanie zmian. Zapewnia to minimalny czas przestoju, jeśli pojawią się problemy z nową wersją, a aplikacja pozostaje wysoce dostępna.
  • Automatyczne testowanie to kluczowy element wdrożenia Niebiesko-Zielonego. Gwarantuje to, że nowa wersja oprogramowania jest dokładnie sprawdzona, zanim zostanie wprowadzona do aktywnego środowiska.
  • Wdrożenie jest częścią potoku ciągłego dostarczania, co oznacza szybsze i częstsze wprowadzanie oprogramowania do produkcji. Ze względu na szybkość przełączania ruchu, można to robić nawet codziennie, pod warunkiem szybkiego wykonywania testów.

Wdrożenie Kanaryjskie: Omówienie

Źródło: cncf.io

Wdrożenie Kanaryjskie polega na stopniowym udostępnianiu nowych funkcjonalności lub aktualizacji wybranej grupie użytkowników, zanim zostaną one wprowadzone dla całej bazy.

Nowa wersja oprogramowania jest wdrażana dla niewielkiej grupy, podczas gdy reszta użytkowników korzysta ze starszej wersji. Zespół programistów monitoruje nową wersję, aby upewnić się, że działa stabilnie i zgodnie z oczekiwaniami.

Jeśli wszystko przebiegnie pomyślnie, nowa wersja zostaje udostępniona większej liczbie użytkowników, aż w końcu obejmie całą bazę. W ten sposób zespół minimalizuje ryzyko wprowadzenia błędów lub problemów, które mogłyby jednocześnie dotknąć wszystkich użytkowników.

Celem jest obniżenie ryzyka związanego z wdrażaniem nowych funkcji dla dużej bazy użytkowników, co pozwala na płynniejsze przejście na nową wersję.

Przeczytaj także: Wyjaśnienie wdrożenia kanaryjskiego i jego roli w DevOps

Kluczowe cechy i korzyści

Oto charakterystyczne cechy procesu wdrożenia Kanaryjskiego:

  • Nowa wersja jest wdrażana najpierw dla małej grupy, a następnie stopniowo udostępniana większej liczbie użytkowników. Minimalizuje to ryzyko wprowadzenia błędów lub problemów, które mogłyby dotknąć wszystkich jednocześnie.
  • Nowa wersja jest monitorowana, aby upewnić się, że jest stabilna i działa zgodnie z oczekiwaniami. Deweloperzy mogą szybciej otrzymywać informacje zwrotne, co pozwala im na wprowadzanie niezbędnych poprawek przed pełnym wdrożeniem.
  • W przypadku problemów, można szybko i łatwo przywrócić poprzednią wersję. Zwiększa to zaufanie do procesu wdrażania, minimalizując ryzyko problemów, które mogłyby negatywnie wpłynąć na użytkowników.
  • Proces wdrażania powinien być w jak największym stopniu zautomatyzowany, aby zmniejszyć ryzyko błędu ludzkiego.

Podsumowanie: Wdrożenie Niebiesko-Zielone a Wdrożenie Kanaryjskie

Cecha | Wdrożenie Niebiesko-Zielone | Wdrożenie Kanaryjskie
—|—|—
Synchronizacja danych | Ciągła synchronizacja danych między środowiskami niebieskim i zielonym. | Nowa wersja udostępniana podzbiorowi użytkowników lub serwerów, reszta korzysta z bieżącej wersji.
Proces aktywacji | Przełączenie z aktywnego do nieaktywnego środowiska po przygotowaniu nowej wersji. | Stopniowe udostępnianie zdefiniowanej grupie użytkowników, którzy aktywnie testują nowe wersje.
Środowisko użytkowników produkcyjnych | Brak przestojów w produkcji, płynne przełączanie między aktywnymi środowiskami. | Część użytkowników produkcyjnych aktywnie testuje nową wersję, potencjalne problemy dla tej grupy.
Wysoka dostępność a szybkość informacji zwrotnych | Priorytetem jest wysoka dostępność. | Priorytetem jest szybsza informacja zwrotna i kontrolowane wdrożenie.
Ograniczanie ryzyka | Ograniczenie możliwości wystąpienia problemów poprzez szybkie przełączenie na poprzednią wersję. | Ograniczenie możliwości wystąpienia problemów poprzez stopniowe udostępnianie podzbiorowi użytkowników.
Podejście testowe | Testowanie w środowisku nieaktywnym, testerzy mogą nie wychwycić wszystkich rzeczywistych problemów. | Użytkownicy produkcyjni pełnią rolę testerów, wcześnie wykrywając rzeczywiste problemy.
Godne uwagi przypadki użycia | Netflix, Amazon, Etsy, LinkedIn i IBM korzystają z wdrożenia Blue-Green. | Netflix i Google korzystają z wdrożenia Kanaryjskiego, w połączeniu z automatycznymi testami i stopniowym wdrożeniem.

Wdrożenie Niebiesko-Zielone a Wdrożenie Kanaryjskie: Funkcje

Zastosowanie

Wdrożenie Niebiesko-Zielone opiera się na dwóch środowiskach (niebieskim i zielonym), które są stale zsynchronizowane pod względem danych. Wymaga to ciągłej synchronizacji danych między tymi środowiskami.

Po przetestowaniu i uznaniu nowej wersji za gotową, ruch jest przełączany z aktywnego środowiska do nieaktywnego, które staje się nowym środowiskiem aktywnym.

Nie ma konieczności poświęcania czasu na wdrażanie nowego kodu i nie występują przestoje w produkcji. Użytkownicy produkcyjni cały czas pracują w aktywnym środowisku i nie zauważają zmiany.

Źródło: aws.amazon.com

Wdrożenie Kanaryjskie polega na udostępnianiu nowej wersji oprogramowania wybranej grupie użytkowników, podczas gdy większość nadal korzysta z bieżącej wersji. Jest to proces stopniowy, a nie pełna zmiana. W tym przypadku, testerami są bezpośredni użytkownicy produkcyjni, chociaż tylko wybrana ich grupa. Aktywnie testują nową wersję podczas codziennej pracy, a gdy okaże się stabilna, jest ona udostępniana reszcie użytkowników.

Wdrożenie Niebiesko-Zielone jest najlepszym wyborem, gdy priorytetem jest wysoka dostępność. Wdrożenie Kanaryjskie jest preferowane, gdy zależy nam na szybszej informacji zwrotnej i bardziej kontrolowanym, choć wolniejszym, wdrożeniu.

Łagodzenie różnicy ryzyka

Wdrożenie Niebiesko-Zielone redukuje ryzyko nieudanego wydania poprzez szybkie przełączenie na stabilną, poprzednią wersję. Obejmuje to wszystkich użytkowników i następuje natychmiast. Nowe funkcje mogą być opóźnione dla użytkowników w przypadku wycofania zmian, ale żaden z nich nie zostanie zablokowany z powodu poważnych problemów związanych z nową wersją.

Strategia ograniczania ryzyka wdrożenia Kanaryjskiego polega na stopniowym zmniejszaniu możliwości wystąpienia problemów. Ponieważ nowe funkcje są udostępniane podgrupie użytkowników, mają oni czas na przetestowanie ich przed wprowadzeniem do szerszego grona odbiorców. Prawdopodobieństwo wykrycia problemów przez tych użytkowników jest bardzo wysokie.

Różnica w podejściu do testów

Wdrożenie Niebiesko-Zielone ogranicza proces testowania do środowiska nieaktywnego. Programiści, testerzy i inni interesariusze mogą testować w tym środowisku. Można oczekiwać podobnego zachowania aplikacji jak w aktywnym środowisku produkcyjnym, ponieważ dane i konfiguracja są zawsze zsynchronizowane pomiędzy oboma środowiskami.

Testerzy przeprowadzają testy, ale nadal istnieje możliwość, że nie wykryją wszystkich problemów, które napotkaliby prawdziwi użytkownicy. Nie jest to jednak problem, ponieważ przełączanie między środowiskami jest szybkie. Zespół programistów może szybko naprawić problemy i ponownie wdrożyć aplikację.

Źródło: ibm.com

Wdrożenie Kanaryjskie umożliwia wykorzystanie użytkowników produkcyjnych jako testerów, którzy zazwyczaj znajdują więcej problemów w krótszym czasie. Realizują oni codzienne zadania, które są kompleksowe.

Nie tylko konstruują przypadki testowe, ale również muszą z nich korzystać. Istnieje ryzyko, że ta grupa będzie miała poważne problemy, ale nie wpłynie to na większość użytkowników. Zespół programistów może od razu skupić się na najpoważniejszych, rzeczywistych problemach.

Doświadczenie i przypadki użycia

Oto kilka przykładów firm, które z powodzeniem stosują te strategie wdrożeniowe:

  • Netflix używa wdrożenia Niebiesko-Zielonego do wdrażania nowych wersji swojej usługi strumieniowej.
  • Amazon i Etsy korzystają z wdrożenia Niebiesko-Zielonego do wdrażania nowych wersji swojej platformy e-commerce.
  • LinkedIn wykorzystuje wdrożenie Niebiesko-Zielone do wdrażania nowych wersji swojej platformy społecznościowej.
  • IBM stosuje wdrożenie Niebiesko-Zielone do wdrażania nowych wersji swojej platformy chmurowej.
  • Netflix używa także wdrożenia Kanaryjskiego do wprowadzania zmian w swojej usłudze strumieniowej. Firma stosuje kombinację automatycznych testów, flag funkcji i testów A/B, aby powoli wprowadzać zmiany.
  • Google używa wdrożenia Kanaryjskiego do wprowadzania zmian w swoich usługach w chmurze. Firma stosuje automatyczne testy, podział ruchu i monitoring, aby stopniowo wprowadzać zmiany u podgrupy użytkowników, przed wdrożeniem ich dla wszystkich.

Najlepsze praktyki i przyszłe trendy

Kluczem jest automatyzacja, a potoki DevOps to przyszłość procesów wdrożeniowych. Są to w pełni zautomatyzowane procesy, zawierające takie kroki jak:

  • Tworzenie lub aktualizacja środowisk docelowych, obejmujących usługi, dane, użytkowników i uprawnienia.
  • Automatyczne wdrażanie pełnych/delta wersji kodów źródłowych bezpośrednio z repozytorium kodu.
  • Aktualizacja schematu bazy danych i odświeżenie danych.
  • Automatyczne wykonywanie testów podczas wdrożenia.
  • Automatyczne procesy wycofywania zmian w przypadku niepowodzenia któregokolwiek z testów.
  • Eliminacja wszelkich ręcznych kroków.

Po wdrożeniu takich potoków, można dołączyć do nich procesy Kanaryjskie, Niebiesko-Zielone lub inne. To tylko przykłady, które już się sprawdziły. Są to filozoficzne ramy, które pomagają rozwiązać większość problemów związanych z wdrażaniem. Można je również łączyć, w zależności od potrzeb.

Ostatnie słowa

Stosowanie ręcznych procedur wdrażania to oznaka niedojrzałości procesów programistycznych. Może również wskazywać na brak elastyczności firmy w zakresie dostarczania oprogramowania. W obu przypadkach naprawa obecnego stanu to duże wyzwanie. Warto spróbować wdrożyć wspomniane strategie dla swojego projektu.

Następnie, warto sprawdzić, jak wdrażać aplikacje w Kubernetes.


newsblog.pl