Dziś mamy do wyboru wiele strategii wdrożeń i z czasem będzie ich tylko więcej. Dwie z najczęściej stosowanych, używane przez największe firmy na świecie, to strategie Canary i Blue-Green.
Porównując wdrożenie Blue-Green z Canary, nie chodzi tylko o szybkość czy prostotę. Jednym z najważniejszych czynników, które należy wziąć pod uwagę przy wyborze między tymi strategiami, jest przestój podczas wdrożenia.
Aby zminimalizować przestój podczas wdrożenia i zapewnić płynne przejście przy publikowaniu aktualizacji lub modyfikacji, kluczowe jest wybranie odpowiedniej opcji spośród Canary i Blue-Green.
Przyjrzyjmy się więc, co oferuje każda z tych strategii, w tym bezpośredniemu porównaniu Blue-Green vs. Canary oraz naszym własnym doświadczeniom z oboma podejściami.
Czym jest wdrożenie Blue-Green i co oferuje?
W strategii Blue-Green nowa wersja aplikacji może zostać wdrożona natychmiast po przetestowaniu i zatwierdzeniu. Możliwe jest to dzięki dwóm identycznym środowiskom: blue i green, od których pochodzi nazwa tej strategii.
Mechanizm działa tak, że jedno z tych środowisk jest aktywne, a drugie nieaktywne. Nową wersję aplikacji wdraża się w środowisku nieaktywnym (powiedzmy green). Ponieważ oba środowiska są w pełni identyczne pod względem zasobów, infrastruktury i konfiguracji, wszelkie problemy z aktualizacją można rozwiązać przed jej pełnym wdrożeniem.
Po przetestowaniu aktualizacji i upewnieniu się przez deweloperów, że działa poprawnie, ruch na żywo zostaje przełączony do środowiska nieaktywnego. W ten sposób środowisko nieaktywne (green) staje się aktywnym, a wcześniej aktywne (blue) przechodzi w stan nieaktywny.
Nieaktywne środowisko blue staje się teraz środowiskiem rezerwowym i może być wykorzystywane do testowania kolejnych aktualizacji, podczas gdy środowisko green jest aktywne i obsługuje nowo wdrożoną wersję. Dzięki temu przestój jest praktycznie zerowy, ponieważ ruch jest natychmiast przełączany do nieaktywnego środowiska.
Co więcej, jeśli aktualizacja okaże się wadliwa, funkcja rollbacku umożliwia powrót do starszej wersji aplikacji. Trzeba jednak pamiętać, że jeśli problemy pojawią się po tym, jak deweloperzy rozpoczęli już pracę nad nową aktualizacją w nieaktywnym środowisku, przywrócenie tej wersji przestaje być możliwe, ponieważ starsza wersja nie jest już w tym środowisku dostępna.
Wiele firm i organizacji stosuje tę strategię. Dobrym przykładem jest Spotify. Ponieważ usługi Spotify muszą być dostępne przez całą dobę, firma zawsze utrzymuje gotowe zapasowe, nieaktywne środowisko na czas publikowania nowych aktualizacji.
Czym jest wdrożenie Canary i co oferuje?
Główna różnica między wdrożeniem Canary a Blue-Green polega na tym, że zamiast dwóch środowisk, w których aktualizacje trafiają jednocześnie do wszystkich użytkowników, w strategii Canary aktualizacja jest najpierw udostępniana niewielkiej grupie użytkowników.
Jeśli aktualizacja zawiera błędy, napotka je tylko niewielka część użytkowników, która może przekazać opinię. Po rozwiązaniu problemów aktualizacja trafia do większej grupy, która z kolei zgłasza programistom wszelkie napotkane problemy.
Cykl ten powtarza się dla coraz większych grup użytkowników, aż wszystkie problemy zostaną rozwiązane i aktualizacja dotrze do 100% użytkowników. Na przykład: najpierw aktualizacja trafia do 2% użytkowników, potem do 25%, następnie do 75%, a na końcu do 100%.
Takie stopniowe wdrażanie w strategii Canary, w przeciwieństwie do Blue-Green, zapewnia bardziej kontrolowany i elastyczny rollout. Programiści mogą testować funkcje i aktualizacje w kontrolowanym środowisku, gdzie tylko niewielka część użytkowników może natknąć się na potencjalne problemy.
Canary oferuje też podobną funkcję wycofywania zmian. Ponieważ jednak wdrożenie przebiega stopniowo, etap po etapie, rollback również odbywa się stopniowo i etapami, aż do przywrócenia stabilnej wersji.
Dobrze znany przykład tej strategii to podejście Netflixa, który używa Canary w połączeniu z narzędziem Chaos Monkey. Chaos Monkey celowo wprowadza awarie do systemu. Jeśli awaria dotknie środowisko canary, zespół Netflixa może przeanalizować reakcję systemu i odpowiednio zareagować. Dzięki temu Netflix może sprawdzić, czy aktualizacja pozostaje stabilna i odporna nawet w niesprzyjających warunkach.
Blue-Green vs. Canary
Obie strategie mają swoje unikalne zalety, ale też ograniczenia. Dlatego przed podjęciem decyzji warto dokładnie rozważyć wady i zalety Blue-Green i Canary.
Jeśli po tej sekcji nadal nie wiesz, którą opcję wybrać, na końcu artykułu podzieliłem się naszymi doświadczeniami z obiema strategiami i tym, czego się przy tym nauczyliśmy.
Zmniejszanie Przestojów
Jednym z głównych tematów tego artykułu jest ograniczenie przestojów podczas wdrożenia Blue-Green w porównaniu z Canary. Mocną stroną Blue-Green jest szybkość: aktualizacja lub nowa funkcja aplikacji jest wdrażana natychmiast dzięki dwóm oddzielnym środowiskom.
Z kolei stopniowe podejście Canary pozwala na minimalizację przestojów. Po pierwsze, problemy napotyka tylko niewielka część użytkowników. Po drugie, ponieważ informacje zwrotne są zbierane na każdym etapie, rozwiązywanie problemów przebiega znacznie szybciej i bez żadnych przestojów.
Obie strategie oferują funkcje wycofywania zmian, ale rollback w Blue-Green jest natychmiastowy, co daje programistom pewną siatkę bezpieczeństwa w razie poważnych problemów. Należy jednak pamiętać, że wersja zapasowa nie będzie dostępna, jeśli w nieaktywnym środowisku trwają prace nad nowszą wersją.
Rollback w Canary, podobnie jak sam proces wdrożenia, może odbywać się wyłącznie stopniowo. Jest jednak zawsze dostępny, ponieważ starsza, stabilna wersja nie jest powiązana ze środowiskiem, w którym testowane i rozwijane są nowe aktualizacje.
Jeśli chodzi o ograniczanie przestojów, Canary wypada lepiej od Blue-Green pod względem kontroli ryzyka i granularności. Jeśli jednak zależy nam wyłącznie na minimalizacji przestojów, Blue-Green jest lepszym wyborem, ponieważ przełączenie ruchu odbywa się natychmiast.
Przy porównywaniu Blue-Green i Canary warto jednak wziąć pod uwagę czynniki inne niż sama minimalizacja przestojów.
Typ Aplikacji
Aplikacje można ogólnie podzielić na transakcyjne i contentowe. W przypadku aplikacji transakcyjnych Blue-Green jest zdecydowanie lepszym wyborem, ponieważ priorytetem jest tu wysoka dostępność i minimalne przestoje. Dlatego natychmiastowe przełączenie i natychmiastowy rollback w Blue-Green dają mu przewagę nad Canary.
Aplikacje contentowe nie zależą natomiast od transakcji w czasie rzeczywistym. Ponieważ są to zazwyczaj platformy społecznościowe i serwisy nastawione na zaangażowanie użytkowników, Canary jest tu znacznie lepszą strategią: pozwala stopniowo wdrażać aktualizacje i zbierać opinie na każdym etapie.
Koszty Infrastruktury
Kolejnym istotnym czynnikiem przy wyborze między Blue-Green a Canary są koszty. W Blue-Green są one naturalnie wyższe, ponieważ trzeba utrzymywać dwa oddzielne środowiska.
Dlatego pojedyncze środowisko produkcyjne w Canary jest znacznie bardziej ekonomicznym rozwiązaniem, odpowiednim dla mniejszych zespołów lub aplikacji o mniejszych wymaganiach zasobowych.
Skalowalność i długoterminowe utrzymanie
Wdrożenia Blue-Green można skalować, ale utrzymywanie dwóch pełnych środowisk dla dużych aplikacji bywa zasobochłonne i skomplikowane. Z czasem zarządzanie zdublowaną infrastrukturą może generować znaczny narzut, szczególnie w przypadku aplikacji o złożonych wymaganiach infrastrukturalnych.
Pod względem skalowalności i łatwości utrzymania Canary ma więc wyraźną przewagę nad Blue-Green. Skalowanie w Canary jest prostsze i bardziej ekonomiczne, bo nie wymaga duplikowania środowisk.
Zamiast tego skupia się na stopniowym rozszerzaniu grupy użytkowników mających dostęp do nowych zmian w ramach głównego środowiska. Takie podejście jest znacznie łatwiejsze w zarządzaniu na dłuższą metę, ponieważ redukuje złożoność infrastruktury i upraszcza jej utrzymanie.
Doświadczenia Cloudzy z wdrożeniem Blue-Green vs. Canary
Świadcząc klientom usługi DevOps, wiemy, że zadowolenie użytkowników, wysoka dostępność i minimalne przestoje są kluczowe dla powodzenia ich biznesu. W jednym konkretnym przypadku klient zgłosił się do nas z prośbą o pomoc przy dużej aktualizacji infrastruktury. Nasz zespół stanął przed wyborem: Blue-Green czy Canary.
Po dokładnym rozważeniu zdecydowaliśmy się najpierw wypróbować Blue-Green ze względu na praktycznie zerowy czas przestoju. Przygotowaliśmy identyczne środowisko green i byliśmy gotowi do wdrożenia aktualizacji. Presja była spora, bo jedno kliknięcie miało przekierować cały ruch do nowego środowiska. A jak każdy programista wie, bez względu na to, ile się testuje, zawsze jest w tym trochę loterii.
Na szczęście wszystko poszło gładko. Przejście było bez zarzutu i mieliśmy naprawdę mało problemów. Z czasem, gdy usługi i baza użytkowników naszego klienta rosły, musieliśmy wdrażać nowe funkcje i dyskusja między Blue-Green a Canary odżyła.
Tym razem jednak nie było o czym dyskutować. Chodziło o stosunkowo niewielkie funkcje, zdecydowanie nie na skalę tamtej aktualizacji infrastruktury. Naturalnym wyborem okazało się więc Canary: pozwoliło nam wdrażać funkcje stopniowo dla kolejnych części bazy użytkowników klienta i na bieżąco rozwiązywać problemy na podstawie ich opinii.
To była słuszna decyzja, bo choć nie napotkaliśmy żadnych poważnych problemów, zaczęły pojawiać się mniejsze, zgłaszane przez 5% użytkowników klientów, którym wdrożono tę funkcję.
W Cloudzy wierzymy w moc rozwiązań dopasowanych do potrzeb. Niezależnie od tego, czy Twoja firma potrzebuje stabilności wdrożenia Blue-Green, czy elastyczności wdrożenia Canary, nasz zespół DevOps ma doświadczenie i wiedzę, by wdrożyć strategię najlepiej pasującą do Twojej infrastruktury. Skontaktuj się z nami tutaj już dziś, by dowiedzieć się, jak możemy zoptymalizować Twój proces wdrażania i zapewnić ciągłość działania.
Jeśli chodzi o VPS, oferujemy jedne z najniższych stawek w branży VPS. W pakiecie otrzymujesz ponad 12 lokalizacji na całym świecie, dedykowane łącza internetowe do 10 Gbps, korporacyjną pamięć masową NVMe SSD, wydajne procesory AMD EPYC z turbo zegarem 3,23 GHz oraz gwarantowany uptime na poziomie 99,95%. Sprawdź naszą ofertę Ceny VPS aby dowiedzieć się więcej.
Ostateczne Przemyślenia
Ostatecznie nie można jednoznacznie stwierdzić, że jedno podejście jest lepsze od drugiego, gdy porównuje się wdrożenie Canary z wdrożeniem Blue-Green. Wszystko sprowadza się do przypadków użycia i tego, co najlepiej odpowiada Twoim konkretnym potrzebom.
Często Zadawane Pytania
Jaka jest główna różnica między wdrożeniem Blue-Green a Canary?
Główna różnica między strategiami wdrożenia Blue-Green i Canary dotyczy sposobu publikowania aktualizacji. Wdrożenie Blue-Green korzysta z dwóch identycznych środowisk: aktualizacja jest stosowana na nieaktywnym, co pozwala na natychmiastowe przełączenie praktycznie bez przestoju. Wdrożenie Canary działa inaczej: aktualizacje są stopniowo udostępniane najpierw małej grupie użytkowników, a po weryfikacji braku problemów są sukcesywnie rozszerzane na całą bazę użytkowników.
Które wdrożenie lepiej redukuje przestój: Blue-Green czy Canary?
Wdrożenie Blue-Green zazwyczaj lepiej sprawdza się przy minimalizowaniu przestojów, ponieważ pozwala na natychmiastowe przełączenie między środowiskami, ograniczając ryzyko zakłóceń do minimum. Wdrożenie Canary również dąży do ograniczenia przestojów, ale robi to przez stopniowe wdrażanie, które może wiązać się z drobnymi, lokalnymi problemami dotykającymi jedynie małą część użytkowników.
Jakie są koszty wdrożenia Blue-Green w porównaniu z Canary?
Wdrożenia Blue-Green są zwykle droższe, bo wymagają utrzymania dwóch kompletnych środowisk. Wdrożenia Canary są bardziej opłacalne: nie potrzebują zduplikowanej infrastruktury, a aktualizacje są wdrażane w ramach głównego środowiska. To czyni je lepszym wyborem dla mniejszych zespołów lub aplikacji o niższych wymaganiach zasobowych.