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

Faza wdrażania oprogramowania odgrywa istotną rolę w dzisiejszym rozwoju oprogramowania, tym bardziej w środowisku chmurowym.

Mimo to jest to również jeden z najbardziej niedocenianych etapów dostawy. Firmy zwykle nie inwestują wystarczająco dużo czasu i energii, aby wdrożenie było szybkie, niezawodne, zautomatyzowane lub którekolwiek z tych rozwiązań.

Przez większość czasu nadal spotykam się z różnymi formami ręcznych procedur wdrażania. W lepszych przypadkach przynajmniej z odpowiednio udokumentowaną listą kontrolną kroków. W najgorszym przypadku tylko przypadkowe plany stworzone przez improwizację w ostatnich minutach.

Zautomatyzowana procedura wdrażania jest zawsze odległym celem i krótko- lub średnioterminowym elementem zastępczym mapy drogowej, ale rzeczywista droga do tego jest wyboista i nieprzewidywalna. Ale w pełni zautomatyzowana i niezawodna procedura wdrażania jest kluczem do znacznych oszczędności w czasie. Następnie możesz wyeliminować wysiłek, jaki większość zespołu programistów zwykle poświęca na wdrożenie każdej wersji produkcyjnej.

Strategie wdrażania Canary i Blue-Green wykorzystują wszystkie te zalety i dodają więcej, wysoką dostępność oraz szybkie procesy instalacji i wycofywania. Umożliwienie zespołowi wydawania jeszcze częściej i bez kolejnych nieprzespanych nocy. Przyjrzyjmy się, co wnoszą i czym się różnią.

Niebiesko-zielone wdrożenie: przegląd

Źródło: cncf.io

Wdrożenie Blue-Green ogranicza przestoje i ryzyko związane z nowymi wersjami oprogramowania, tworząc dwa identyczne środowiska: aktywne (niebieskie) i nieaktywne (zielone).

Środowisko aktywne to miejsce, w którym działa bieżąca wersja oprogramowania, a użytkownicy generują ruch produkcyjny. Środowisko nieaktywne to miejsce, w którym wdrażana i testowana jest nowa wersja oprogramowania.

Po przetestowaniu i przygotowaniu nowej wersji ruch jest przełączany ze środowiska aktywnego do środowiska nieaktywnego, co czyni je nowym środowiskiem aktywnym. W razie potrzeby możesz powtórzyć ten proces.

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

Kluczowe cechy i zalety

Oto specyficzne cechy procesu wdrażania Blue-Green:

  • Dwa identyczne środowiska są identyczne z punktu widzenia danych i procesów. Niebieskie (aktywne) środowisko to środowisko, w którym użytkownicy produkcyjni wykonują swoje codzienne procesy. Zielone (nieaktywne) środowisko to miejsce, w którym jest instalowane nowe wdrożenie i zawsze jest ono zsynchronizowane z niebieskim.
  • Przełączanie ruchu, które można wykonać ze środowiska aktywnego do środowiska nieaktywnego, czyniąc je nowym środowiskiem aktywnym. Przełącznik jest natychmiastowy. Wszystkie wdrożenia należą już do przeszłości. Nie ma okna przestoju. Użytkownicy nie muszą nic robić, aby przejść do nowego środowiska.
  • Konsekwencją jest szybkie wycofanie w przypadku problemów. Gwarantuje to minimalny czas przestoju, jeśli coś pójdzie nie tak z nową wersją oprogramowania, a aplikacja pozostaje wysoce dostępna.
  • Zautomatyzowane testowanie jest kluczowym aspektem wdrożenia Blue-Green. Daje pewność, że nowa wersja oprogramowania zostanie dokładnie przetestowana, zanim zostanie wdrożona w aktywnym środowisku.
  • To wdrożenie jest częścią potoku ciągłego dostarczania, co ostatecznie oznacza szybsze i częstsze wprowadzanie oprogramowania do produkcji. Ponieważ wdrożenie zostało już zakończone i wystarczy wykonać samo przełączenie ruchu, jest tak szybkie, że można to robić codziennie. Zakładając, że jesteś szybki w czynnościach testowych.

Wdrożenie Canary: przegląd

Źródło: cncf.io

Wdrożenie Canary polega na stopniowym wprowadzaniu nowych funkcji lub aktualizacji dla niewielkiej części użytkowników przed wdrożeniem ich dla całej bazy użytkowników.

Podejście to polega na utworzeniu nowej wersji oprogramowania i wdrożeniu jej w małej grupie, przy jednoczesnym utrzymaniu starej wersji działającej dla pozostałych użytkowników. Zespół programistów ściśle monitoruje nową wersję, aby upewnić się, że jest stabilna i działa zgodnie z oczekiwaniami.

Jeśli wszystko pójdzie dobrze, nowa wersja zostanie udostępniona większej liczbie użytkowników, aż w końcu trafi do całej bazy użytkowników. W ten sposób zespół projektowy minimalizuje ryzyko wprowadzenia błędów lub innych problemów, które mogłyby mieć wpływ na wszystkich użytkowników jednocześnie.

Celem jest zmniejszenie ryzyka wprowadzenia nowych funkcji do dużej bazy użytkowników. Przejście do nowej wersji odbywa się więc znacznie płynniej.

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

Kluczowe cechy i zalety

Oto specyficzne cechy procesu wdrażania Canary:

  • Najpierw wdróż nową wersję u niewielkiej grupy użytkowników, a następnie stopniowo udostępniaj ją większej liczbie użytkowników. Minimalizujesz ryzyko wprowadzenia błędów lub innych problemów, które mogą mieć wpływ na wszystkich użytkowników jednocześnie.
  • Uważnie monitoruj nową wersję, aby upewnić się, że jest stabilna i działa zgodnie z oczekiwaniami. Deweloperzy mogą szybciej otrzymywać informacje zwrotne na temat nowej wersji, co pozwala im na wprowadzanie niezbędnych poprawek przed wdrożeniem dla całej bazy użytkowników.
  • Jeśli pojawią się jakiekolwiek problemy, szybko i łatwo przywróć wdrożenie do poprzedniej wersji. Pomaga to zwiększyć zaufanie programistów i interesariuszy do procesu wdrażania, ponieważ zmniejsza ryzyko wprowadzenia problemów, które mogłyby wpłynąć na wrażenia użytkownika.
  • Zautomatyzuj proces wdrażania w jak największym stopniu, aby zmniejszyć ryzyko błędu ludzkiego.

Podsumowanie: Wdrożenie niebiesko-zielone a wdrożenie Kanaryjskie

Cecha Niebiesko-zielone wdrożenie Kanaryjskie wdrożenie Synchronizacja danych Stała synchronizacja danych między niebieskimi i zielonymi środowiskami. Podzbiór użytkowników lub serwerów otrzymuje nową wersję; reszta jest kontynuowana w bieżącej wersji.Proces aktywacjiPrzełączanie ze środowiska aktywnego do nieaktywnego, gdy nowa wersja jest gotowa.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 zwrotnychPriorytet wysokiej dostępności.Priorytet szybszej informacji zwrotnej i kontrolowanego wdrażania.Ograniczanie ryzykaOgraniczenie możliwości wystąpienia problemów poprzez stopniowe udostępnianie podzbiorowi użytkowników.Testowanie głównie w środowiskach nieaktywnych; testerzy mogą nie wychwycić wszystkich rzeczywistych problemów.Podejście testoweTestowanie głównie w środowiskach nieaktywnych; 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 używają Blue-Green. Netflix i Google używają Canary wraz z automatycznymi testami i stopniowe wdrażanie.

Wdrożenie niebiesko-zielone a wdrożenie kanaryjskie: funkcje

Zastosowanie

Wdrożenie Blue-Green oznacza dwa środowiska (niebieskie i zielone). Ale jednocześnie te dwa środowiska są stale zsynchronizowane pod względem danych. Zwiększa to zapotrzebowanie na procesy ciągłej synchronizacji danych między dwoma środowiskami.

Gdy nowa wersja zostanie przetestowana i uznana za gotową, ruch jest przełączany ze środowiska aktywnego do środowiska nieaktywnego, co czyni je nowym środowiskiem aktywnym.

Nie tracisz czasu na wdrażanie nowego kodu i nie ma przestojów w produkcji. Wszyscy użytkownicy produkcyjni cały czas pracują na aktualnie aktywnym środowisku i nawet nie zauważają zmiany.

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

Wdrożenie Canary obejmuje wdrożenie nowej wersji oprogramowania dla niewielkiej grupy użytkowników, podczas gdy większość użytkowników lub serwerów nadal korzysta z bieżącej wersji. Jest to stopniowe wdrażanie, a nie pełna zmiana. W tym przypadku testerzy są bezpośrednimi użytkownikami produkcyjnymi, chociaż stanowią tylko określony ich podzbiór. Ta grupa aktywnie testuje nową wersję z procesami produkcyjnymi, a kiedy wreszcie będzie stabilna, nowa wersja zostanie rozprzestrzeniona na resztę użytkowników.

Wdrożenie Blue-Green powinno być Twoim wyborem, jeśli priorytetem jest wysoka dostępność. Możesz preferować wdrożenie Canary, jeśli wolisz szybsze informacje zwrotne i bardziej kontrolowane (choć wolniejsze) wdrażanie.

Łagodzenie różnicy ryzyka

Wdrożenie Blue-Green zmniejsza ryzyko niepowodzenia wydania, szybko przełączając się na stabilną poprzednią wersję. Dla każdego użytkownika i natychmiast. Oczywiście nadal istnieje ryzyko, że nowe funkcje będą opóźnione dla użytkowników w przypadku wycofania, ale przynajmniej żaden z użytkowników nie zostanie zablokowany z powodu niektórych krytycznych problemów związanych z nową wersją.

Strategia ograniczania ryzyka wdrożeń na Wyspach Kanaryjskich polega na stopniowym ograniczaniu możliwości wystąpienia problemów. Ponieważ nowe funkcje są udostępniane podgrupie użytkowników produkcyjnych, używają oni już tej wersji oprogramowania na jakiś czas przed udostępnieniem tej wersji wszystkim użytkownikom. Prawdopodobieństwo, że ci pierwsi użytkownicy wkrótce wyłapią takie problemy, jest bardzo wysokie.

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

Wdrożenie Blue-Green pozostawia procesy testowania wyłącznie dla środowiska nieaktywnego. Tutaj programiści, testerzy i różni interesariusze mogą testować, co chcą. Zawsze możesz spodziewać się podobnego zachowania, jak gdyby testy były uruchamiane bezpośrednio w aktywnym środowisku produkcyjnym (ponieważ dane i konfiguracja są zawsze zsynchronizowane między dwoma środowiskami).

Więc twoi testerzy prowadzą pokaz testowy i nadal istnieje możliwość, że nie wykryją wszystkich problemów, które zrobiliby prawdziwi użytkownicy produkcyjni. Nie stanowi to jednak problemu, ponieważ przełączanie między nieaktywnym a aktywnym środowiskiem jest zawsze szybkie. Następnie możesz pozwolić programistom rozwiązać problem i ponownie dokonać zmiany.

Źródło: ibm.com

Wdrożenie Canary umożliwia wykorzystanie użytkowników produkcyjnych jako testerów. Tacy użytkownicy zwykle znajdują więcej problemów w krótszym czasie. Po prostu realizują codzienne procesy biznesowe w sposób kompleksowy.

Nie tylko dlatego, że skonstruowali takie testowe scenariusze i przypadki, ale dlatego, że i tak muszą to zrobić. Ryzykujesz, że członkowie grupy będą mieli przez jakiś czas poważne problemy. Nie ma to jednak wpływu na większość użytkowników, a zespół programistów może od razu skoncentrować się na najpoważniejszych rzeczywistych problemach.

Doświadczenie i przypadki użycia

Oto niektóre ze znanych przypadków użycia, w których takie wdrożenia już działają pomyślnie:

  • Netflix wykorzystuje wdrożenie Blue-Green do wdrażania nowych wersji swojej usługi przesyłania strumieniowego.
  • Amazon i Etsy wykorzystują wdrożenie Blue-Green do wdrażania nowych wersji swojej platformy e-commerce.
  • LinkedIn wykorzystuje wdrożenie Blue-Green do wdrażania nowych wersji swojej platformy społecznościowej.
  • IBM korzysta z wdrożenia Blue-Green do wdrażania nowych wersji swojej platformy chmurowej.
  • Netflix wykorzystuje również Canary Deployment do wprowadzania zmian w swojej usłudze przesyłania strumieniowego. Firma stosuje kombinację testów automatycznych, flag funkcji i testów A/B, aby powoli wprowadzać zmiany.
  • Google używa Canary Deployment do wprowadzania zmian w swoich usługach w chmurze. Podobnie firma wykorzystuje zalety zautomatyzowanego testowania, podziału ruchu i włączenia monitorowania, aby stopniowo wprowadzać zmiany u niewielkiej podgrupy użytkowników przed wdrożeniem ich u wszystkich użytkowników.

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

  • Tworzenie lub aktualizacja docelowych środowisk w zakresie usług, danych, użytkowników czy uprawnień.
  • Zautomatyzowane 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.
  • Zautomatyzowane wykonywanie testów bezpośrednio podczas działań wdrożeniowych.
  • Zautomatyzowane procesy wycofywania w przypadku niepowodzenia któregokolwiek z ważnych przypadków testowych.
  • Eliminacja wszelkich ręcznych kroków ingerencji do zera.

Gdy masz już takie potoki wdrażania, możesz podłączyć procesy Canary lub Blue-Green lub cokolwiek innego, co chcesz. To tylko dwa z przykładów, które już się sprawdziły. Ale to tylko filozoficzne ramy rozwiązywania większości problemów związanych z działaniami wdrożeniowymi. Nie jest nawet trudno przełączać się między nimi w czasie lub używać kombinacji obu.

Ostatnie słowa

Trzymanie się ręcznych procedur wdrażania to widok niedojrzałych procesów programistycznych, a nawet zespołów. Alternatywnie może ujawnić, jak nieelastyczna i monolityczna jest dana firma pod względem dostarczania oprogramowania. W obu przypadkach naprawa status quo oznacza dużo pracy. Spróbuj więc wdrożyć wspomniane powyżej strategie wdrażania dla swojego projektu.

Następnie sprawdź, jak wdrażać aplikacje w Kubernetes.