W moim rozumieniu wydanie kanarka jest takie, że jest to częściowe wydanie do podzbioru węzłów produkcyjnych z włączonymi sesjami lepkimi. W ten sposób możesz kontrolować i minimalizować liczbę użytkowników / klientów, na których wpłynie, jeśli w końcu opublikujesz zły błąd.
Moje rozumienie wydania niebiesko-zielonego jest takie, że masz 2 lustrzane środowiska produkcyjne („niebieskie” i „zielone”) i wypychasz zmiany jednocześnie do wszystkich węzłów niebieskiego lub zielonego, a następnie używasz magii sieci do sterowania do którego środowiska są kierowani użytkownicy przez DNS.
Tak więc, zanim zacznę, jeśli cokolwiek, co powiedziałem do tej pory, jest niepoprawne, zacznij od poprawienia mnie!
Zakładając, że jestem mniej więcej na dobrej drodze, kilka pytań dotyczących tych dwóch strategii:
- Czy istnieją scenariusze, w których kanarek jest preferowany niż niebieski / zielony i odwrotnie?
- Czy istnieją scenariusze, w których model wdrażania może zaimplementować obie strategie w tym samym czasie?
źródło
Odpowiedzi:
Uwalnianie niebiesko-zielone jest prostsze i szybsze.
Państwo może zrobić niebiesko-zielony uwalnianie jeśli Przetestowałem nowej wersji w środowisku testowym i są bardzo pewne, że nowa wersja będzie działać poprawnie w produkcji. Ciągłe używanie przełączników funkcji to dobry sposób na zwiększenie zaufania do nowej wersji, ponieważ nowa wersja działa dokładnie tak samo, jak stara, dopóki ktoś nie zmieni przełącznika funkcji. Dzielenie aplikacji na małe, niezależnie wydawane usługi to inna sprawa, ponieważ jest mniej do przetestowania, a mniej do zepsucia.
Ty musisz zrobić kanarek uwalnianie jeśli nie jesteś całkowicie pewien, że nowa wersja będzie działać poprawnie w produkcji. Nawet jeśli jesteś dokładnym testerem, Internet jest obszernym i złożonym miejscem, w którym zawsze pojawiają się nieoczekiwane wyzwania. Nawet jeśli używasz przełączników funkcji, jeden z nich może być nieprawidłowo zaimplementowany.
Automatyzacja wdrażania wymaga wysiłku, dlatego większość organizacji planuje za każdym razem korzystać z jednej lub drugiej strategii.
Zrób więc wdrażanie niebiesko-zielone, jeśli jesteś zaangażowany w praktyki, które pozwalają ci mieć pewność, że to robisz. W przeciwnym razie wyślij kanarka.
Istotą niebiesko-zielonego jest wdrażanie wszystkich naraz, a istotą wdrażania kanarków jest wdrażanie stopniowe, więc biorąc pod uwagę jedną pulę użytkowników, nie mogę wymyślić procesu, który opisałbym jako wykonujący oba jednocześnie. Gdybyś miał wiele niezależnych pul użytkowników, np. Korzystających z różnych regionalnych centrów danych, mógłbyś zrobić niebiesko-zielony w każdym centrum danych i kanarek w centrach danych. Chociaż gdybyś nie potrzebował wdrożenia Canary w centrum danych, prawdopodobnie nie byłbyś potrzebny w centrach danych.
źródło
Napisałem szczegółowy esej na ten temat tutaj: http://blog.itaysk.com/2017/11/20/deployment-strategies-defined
Moim zdaniem różnica polega na tym, czy nowa „zielona” wersja jest widoczna dla prawdziwych użytkowników. Jeśli tak, to nazwałbym to Canary. Powszechnym sposobem implementacji Canary jest zwykły niebieski / zielony z dodatkiem inteligentnego routingu określonych użytkowników do nowej wersji. Przeczytaj post, aby uzyskać szczegółowe porównanie
Niebieski zielony:
Kanarek:
źródło
Chociaż oba te terminy wyglądają dość blisko siebie, mają subtelne różnice. Jedna z nich pokłada zaufanie w wydaniu funkcjonalności, a druga w sposób, w jaki ją udostępniasz.
Kanarek
Wersja kanarek to technika zmniejszania ryzyka wprowadzenia nowej wersji oprogramowania do produkcji poprzez powolne wdrażanie zmiany na niewielkiej grupie użytkowników przed wdrożeniem jej w całej infrastrukturze.
Zaraz się zorientujesz, jak będzie działać nowa wersja (integracja z innymi aplikacjami, procesorem, pamięcią, wykorzystaniem dysku itp.).
Niebieski zielony:
źródło
Oto kilka definicji wbudowanych -
Wdrożenie niebiesko-zielone - podczas wdrażania nowej wersji aplikacji tworzone jest drugie środowisko. Po przetestowaniu nowego środowiska przejmuje ono starszą wersję. Następnie można wyłączyć stare środowisko.
źródło
Dobry początek definicji. Myślę, że przy podejmowaniu decyzji dotyczącej strategii pomocne będzie również podzielenie definicji „wydania” na „wdrożenie” i „wydanie (funkcjonalność)”.
Wdrażanie (pliki binarne)
Akcja binarnego wdrożenia produktu w systemie (produkcyjnym).
Wersja (funkcjonalność)
Akcja zarządzania dostępnością funkcjonalności dla (grup) użytkowników.
Czemu? Zwykle masz (wiele) dwa problemy podczas "wypuszczania": 1) Błędy / kompatybilność wsteczna / etc 2) Weryfikacja poprawności / użyteczności nowych funkcji
Następnie zadaj sobie pytanie, zanim wybierzesz strategię Canary lub Blue / Green lub inną szarą / mieszaną strategię: Jakie obawy mamy podczas wydawania / wdrażania nowej wersji? I tylko wtedy, jeśli znasz swoje obawy, wybierz swoją strategię.
Ponadto możliwe jest stosowanie bardziej złożonych strategii Wdrażanie / Wydawanie. Np. W niektórych chmurach / infra możliwe jest posiadanie wielu serwerów produkcyjnych i przekazywanie obciążenia w różnych proporcjach do różnych serwerów i wersji produktu oraz monitorowanie poprawności przed skalowaniem wydania / wdrożenia do wszystkich użytkowników.
Zgłaszanie funkcji
Czynność polegająca na „konfigurowaniu” (na zimno lub nawet gorąco) funkcji (niedostępnych) dla których (grupy) użytkowników
Jeśli również zrobisz coś takiego jak "flagowanie funkcji", możesz wdrożyć najpierw, zmierzyć poprawność wydania w perspektywie kompatybilności wstecznej / błędów i stopniowo udostępniać nową funkcjonalność różnym użytkownikom lub odwrotnie (skalowanie w dół lub nawet wycofywanie funkcjonalności i / lub plików binarnych ). Oznaczanie funkcji umożliwia oddzielenie dostępności funkcji od wdrażania plików binarnych i zapewnia znacznie bardziej precyzyjne podejmowanie decyzji niż tylko „wdrażanie / wycofywanie”
źródło