Blue - green deployment

0

Witam,
czy ktoś stosuje lub bawił się "blue - green deployment" lub "canary deployment"? Pytanie mam czy istnieją jakieś gotowe narzędzia do tego celu?

Jak sobie np. myślę o blue-green, to chciałbym mieć taki mechanizm, że za nim odłączę starą wersję to chciałbym mieć pewność że tam nic się nie wykonuje. Chodzi o to, że np. pójdzie jakiś request i w tym czasie odłączy się stara wersja serwisu i klient nie dostanie response'a. Jeśli istnieją gotowe rozwiązania czy one sobie z tym radzą?

Zastanawiam się też nad napisaniem czegoś na własne potrzeby. Teraz pytanie czy istnieją jakieś gotowe LoadBalancer, w których można rozszerzać funkcjonalność lub tworzyć bardziej skomplikowaną logikę? Fajnie jakby było coś takiego możliwe w Javie lub node.js.

1

Robie takie rzeczy z dużymi klientami, BlueGreen/Canary jest prosty do wdrożenia w chmurze, w przypadku AWS masz standardowe ELB i weightbased policy na Route53.

Jak sobie np. myślę o blue-green, to chciałbym mieć taki mechanizm, że za nim odłączę starą wersję to chciałbym mieć pewność że tam nic się nie wykonuje. Chodzi o to, że np. pójdzie jakiś request i w tym czasie odłączy się stara wersja serwisu i klient nie dostanie response'a.

Nie do końca tak to dziala. Ogólnie w systemach rozproszonych dużej skali, gdzie Business Continuity wymaga prawdziwego HA, infrastruktura jest rozlokowana w n+1 strefach dostępności, które powinny być fizyczne odseparowane o co najmniej kilka kilometrów. Przez to, software cierpi na latency na łączach przy synchronizacji gdy masz relacyjne bazy danych. Przy NoSQLowych wynalazkach będzie Eventual Consistency wiec na danym nodzie nigdy nie wiadomo czy dany stan informacji jest najbardziej aktualny. Przez te ograniczenia load balancery i serwery aplikacyjne często działają ze sticky sessions przy http/https i z podobnymi mechanizmami przy innych protokołach. Kolejna sprawa, systemy enterprise to przeważnie mesh najróżniejszych rozwiązań od różnych dostawców, które są ze sobą zintegrowane przez ESB lub w przypadku nowszych systemów zaimplementowane jako mikroserwisy. Dzięki integracji "w backendzie" serwery aplikacyjne mogą być bezstanowe co ułatwia ich skalowanie i przełączanie blue/green, natomiast w ESB jest koncept Guaranteed Delivery, który odpowiada za to żeby transakcja (request) została dowieziona do danego podsystemu i przetworzona. Od strony frontu (web/mobile/etc) system projektuje się tak, aby zainicjował transakcje, dostał ID i nie czekał na zwrot, dzięki temu następne pytanie o status transakcji może byc obsłużone przez inny serwer aplikacyjny. rzadko robi się BlueGreen całej infrastruktury, a jeżeli trzeba zrobić major upgrade to ustala się okna serwisowe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1