Wdrożenie Blue Green i Drupal — ile tak naprawdę wiesz?

Opublikowany: 2019-07-23

Blue Green Deployment to jeden z filarów strategii wdrożeniowych, który pokonuje ograniczenia tradycyjnego podejścia do wdrażania aplikacji. Jak dużo wiesz o wdrożeniu Blue Green? Jak zaimplementowano Blue Green Deployment w Drupalu?

Tak, dobrze to przeczytałeś. Konieczność przełączenia aplikacji w tryb offline w celu aktualizacji lub podczas uruchamiania nowszej wersji jest trudnym zadaniem i prawdziwym bólem. Co prawda można to złagodzić planowymi przestojami, ale nie jest to coś, co uszczęśliwi klientów. Niektóre witryny tracą tysiące dolarów w każdej minucie ich awarii! Czy wdrożenie lub aktualizacja aplikacji powinno być prawdziwą przyczyną Twojej straty?

Dowiedz się, dlaczego wdrożenie niebiesko-zielone jest najlepszą strategią skracania przestojów i ograniczania innych zagrożeń związanych z wdrażaniem aplikacji. Dowiedz się więcej o wdrożeniu blue green i Drupalu.

Co to jest wdrożenie niebiesko-zielone?

Blue-Green Deployment to technika zwalniania aplikacji poprzez przesuwanie lub przenoszenie ruchu między dwoma identycznymi środowiskami, w których działają dwie różne wersje aplikacji.

W skrócie istnieje wersja aplikacji, nazwijmy ją „wersja niebieska” w produkcji. A potem jest router, który służy do kierowania ruchu do aplikacji. Teraz potrzebujesz innej wersji. „zielona wersja” z dodanymi dodatkowymi gadżetami do wdrożenia. Jednak chcesz również upewnić się, że podczas tego wdrożenia użytkownik nadal może przeglądać Twoją aplikację, naciskać przycisk lub robić, co chce, bez awarii aplikacji! Bardziej przypomina to potajemne wdrożenie „zielonej wersji”, podczas gdy „niebieska wersja” obsługuje cały ruch w międzyczasie, zanim ostatecznie zmieni połączenia.

blue_green_deployment

Przy prawie zerowych możliwościach wydawania i wycofywania przestojów, podstawową ideą wdrożenia niebiesko-zielonego jest przeniesienie ruchu między dwoma identycznymi środowiskami, w których działają dwie różne wersje aplikacji. Podczas gdy bieżąca wersja aplikacji jest reprezentowana przez środowisko niebieskie, zielone jest uruchamiane z inną wersją.

Dlaczego wdrożenie niebiesko-zielone?

Jednym z głównych wyzwań związanych z automatyzacją procesu wdrożenia jest samo przełączenie, czyli przeniesienie aplikacji z ostatniej fazy testów do fazy live. Trzeba się tym szybko zająć, aby zminimalizować przestoje. To jest dokładnie to, co robi niebiesko-zielone wdrożenie. Przy dwóch środowiskach produkcyjnych (jak najbardziej identycznych z natury), w dowolnym momencie, jedno z nich jest na żywo. A kiedy przygotowujesz się do nowej wersji, wszystkie testy wykonujesz w innym środowisku, które nie jest aktywne. Gdy będziesz gotowy do działania, wystarczy przełączyć router, aby cały ruch był kierowany do najnowszej wersji, a inne środowisko po prostu przeszło w stan bezczynności.

Ponadto wdrożenie Blue-Green zapewnia jedną z najważniejszych funkcji, szybkie przywracanie. Załóżmy, że jeśli coś pójdzie nie tak z najnowszą wersją, wystarczy przełączyć router z powrotem. Chociaż może nadal występować problem z utraconymi transakcjami, gdy wadliwe środowisko działało, można je również zaprojektować w taki sposób, aby oba środowiska były zasilane transakcjami, a jedno działało jako kopia zapasowa dla drugiego.

Jak wdrożenie niebiesko-zielone?

Teraz, gdy wiemy już o dwóch środowiskach Blue-Green Deployment, przyjrzyjmy się niektórym z najlepszych praktyk wdrażania tego samego.

  • Równoważenie obciążenia przez przełączanie DNS

Pamiętaj, że podczas zmiany środowiska spraw, aby Twoja domena ostatecznie wskazywała różne serwery. Zamiast przechodzić do rekordów DNS i wprowadzać zmiany w interfejsie zarządzania DNS, użyj równoważenia obciążenia.

Problem z wprowadzaniem zmian w rekordach DNS spowoduje po prostu długi ślad ruchu. Oznacza to, że chociaż niektórzy użytkownicy będą nadal obsługiwani przez stare środowisko, nie będziesz mieć nawet pełnej kontroli nad tym, dokąd kierowany jest ruch.

Jednak load balancery pozwolą Ci od razu skonfigurować nowe serwery i nie będziesz musiał polegać na mechanizmie DNS. W ten sposób będziesz mieć pełną kontrolę nad ruchem i będziesz mieć absolutną pewność, że cały ruch jest kierowany do nowego środowiska.

  • Krocząca aktualizacja

NIE zmieniaj wszystkich serwerów naraz. Zamiast tego wykonaj aktualizację kroczącą. Oznacza to, że zamiast za jednym razem przełączać się na zielone serwery z niebieskich, pracuj ze zintegrowanym środowiskiem. Dodaj jeden nowy serwer, wycofuj stary. Powtarzaj, aż każdy nowy serwer będzie na swoim miejscu. To znacznie skróci czas przestoju!

  • Monitorowanie środowiska

Chociaż monitorowanie środowiska na żywo jest oczywiste, nie chcesz zostać zaskoczony przez niemonitorowanie innego środowiska. Tak, monitorowanie innego środowiska jest mniej krytyczne. Ponieważ jednak to samo środowisko może działać jako oba stany, będziesz potrzebować łatwiejszego sposobu przełączania alertów między nimi. Skonfiguruj różne tokeny interfejsu API dla dwóch środowisk raportujących lub programowo zmień zasady alertów w środowisku, gdy jego rola zostanie zmieniona/przełączona.

  • Automatyzacja

Ręczny zestaw działań po prostu zwiększy twoją pracę. Zamiast tego skryptuj każdą akcję w procesie przełączania. Automatyzacja procesu przełączania spowoduje szybsze, łatwiejsze i bezpieczniejsze wdrożenie Blue-Green Deployment.

Wdrożenie Blue Green dla serwisów Drupal

Problemy

  • Podczas wdrożeń kodu Drupal musi uruchamiać aktualizacje bazy danych, aby działać i jest to poważny problem, ponieważ aktualizacje Drupala ustawiają witrynę w trybie konserwacji, a Twoi użytkownicy są witani pięknym białym ekranem.
Konserwacja Drupala
Źródło: drupal.org

Jeśli wdrożenie nie powiedzie się, wycofanie jest możliwe tylko przez przywrócenie bazy danych ze zrzutu, biorąc pod uwagę, że schemat bazy danych mógł zostać zmodyfikowany. To oznacza przestój!

Rozwiązanie: Niebieski Zielony Wdrożenie!

Przyjrzyjmy się niektórym przeglądom infrastruktury, aby wdrożyć Blue Green Deployment z Drupalem. Każdy rodzaj operacji w Drupalu wymaga Nginxa i serwera php (głównie do uruchamiania Drupala), potrzebujemy bazy danych, magazynu plików, trochę pamięci podręcznej, a stos jest zaprojektowany w taki sposób, aby był wysoce dostępny.

W przypadku Blue Green Deployment musisz wdrożyć nowy stos z nową bazą kodu i skopiować całą bazę danych oraz różne stany z poprzedniej bazy kodu, najlepiej za pomocą Drush.

przegląd infrastruktury
Źródło: Drupal Con Seattle 2019

Po skonfigurowaniu dwóch różnych stosów, stos pomostowy należy przetestować niezależnie od stosu produkcyjnego. Zasadniczo potrzebujesz użytkowników, aby przeszli do stosu (stosu produkcyjnego) i przetestowali wersję wdrożonej witryny. A kiedy druga wersja (stos pomostowy) jest gotowa, wystarczy odwrócić wersje. Teraz użytkownicy są kierowani do nowego stosu, a starsza wersja jest dostępna do testowania.

Wdrożenie Blue Green za pomocą platformy Docker

Wdrożenia w Drupalu nie są łatwe. Chociaż musisz upewnić się, że kod został wdrożony, zależności kompozytora są obsługiwane, aktualizacje schematu są aktualne i wszystkie pamięci podręczne są wyczyszczone, musisz również upewnić się, że „responsywna witryna internetowa” jest uruchomiona. A co się stanie, jeśli wystąpi problem i wdrożenie się nie powiedzie? Czy wycofujesz? Czy zatrzymać wdrożenie?

Fraza, której szukasz, to Blue Green Deployment

Podczas wdrażania Drupala Docker zapewnia łatwe przełączanie się między aplikacjami oraz ułatwia tworzenie i uruchamianie różnych wersji tego samego. Na instancji EC2 zawsze znajduje się zestaw podniesionych kontenerów dockera w kolorze niebieskim i zielonym, a nginx działa jako odwrotny serwer proxy. Niebiesko-zielone wdrożenie z Dockerem umożliwia użytkownikowi zbudowanie serwisu Drupal, który działa równolegle w dwóch różnych środowiskach.


Wdrożenie Blue Green z AWS

Chociaż w przeszłości wdrożenie niebiesko-zielone nie było pierwszym wyborem do wdrażania oprogramowania lokalnie ze względu na jego wysoki koszt i złożoność, kontenery na dobre zmieniły to postrzeganie.

Kontenery ułatwiają przyjęcie niebiesko-zielonego wdrożenia ze względu na ich łatwy pakiet i spójne zachowanie podczas przełączania się między środowiskami. Aby zmienić konfigurację kontenera, wystarczy zaktualizować jego plik docker i przebudować i ponownie wdrożyć kontener na miejscu, zamiast aktualizować oprogramowanie.

Amazon ECS wykonuje te aktualizacje kroczące, gdy aktualizujesz istniejącą usługę Amazon ECS. Krocząca aktualizacja wdrożenia ecs blue green polega na zastąpieniu istniejącej wersji kontenera najnowszą. Ta liczba kontenerów, które Amazon ECS dodaje lub usuwa podczas aktualizacji, jest kontrolowana przez dostosowanie maksymalnej i minimalnej liczby zdrowych zadań dozwolonych podczas wdrożeń usługi. Po aktualizacji definicja zadania usługi zostanie zaktualizowana o najnowszą wersję obrazu kontenera, Amazon ECS automatycznie rozpoczyna wymianę starej wersji kontenera na najnowszą.

Niebiesko-zielone wdrożenie AWS

Niebiesko-zielone wdrożenie z AWS ECS zapewni również korzyści z optymalizacji, ponieważ nie jesteś przywiązany do tego samego zestawu zasobów. Oznacza to, że gdy zakres wydajności aplikacji zmienia się z jednej wersji na drugą, po prostu uruchamiasz nowe środowisko ze zoptymalizowanymi zasobami (może być ich mniej lub zupełnie inny zestaw zasobów).

Niebiesko-zielone wdrożenie w AWS również dobrze pasuje do przepływów pracy ciągłej integracji i wdrażania, sprawdzając ich złożoność, umożliwiając automatyzację wdrażania uwzględniającą mniejszą liczbę zależności od istniejącego środowiska.

To rozwiązanie pozwala użytkownikom łatwo zarządzać wdrażaniem i skalowalnością platform internetowych bez marnowania czasu. To wdrożenie pomaga w konfiguracji środowiska o wysokiej dostępności, które bez problemu uruchomi serwis Drupal.