Co to są wzorce wdrażania?

Ukończone

Wzorzec wdrażania to zautomatyzowany sposób bezproblemowego wdrażania nowych funkcji aplikacji dla użytkowników. Odpowiedni wzorzec wdrażania pomaga zminimalizować przestoje. Niektóre wzorce umożliwiają również stopniowe wdrażanie nowych funkcji. Dzięki temu możesz zweryfikować nowe funkcje przy użyciu wybranych użytkowników, zanim udostępnisz te funkcje wszystkim.

W tej sekcji poznasz niektóre typowe wzorce wdrażania. Dowiesz się również, jak usługa aplikacja systemu Azure pomoże zaimplementować wzorzec wybrany przez zespół Tailspin.

Poranne spotkanie

Zespół Tailspin czuje się dobrze. Ich potok przyspieszył proces. Zespół ma środowisko programistyczne, w którym może zintegrować aplikację internetową z bazą danych. Zarówno Tim, jak i Amita chętnie mają zautomatyzowane testy, które upraszczają pracę. Ogólnie rzecz biorąc, widzą mniej opóźnień i mniej błędów.

Ale jest, jak zawsze, problem. Zajmijmy się na spotkaniu zespołu, gdzie Tim rozmawia.

Tim: Trudno jest zachować wszystkich szczęśliwych. Irwin uważa, że wydanie nowych funkcji trwa zbyt długo. Nie mogę nic zrobić, dopóki zarządzanie nie zatwierdzi wydania i, w tej chwili, nie ma płynnego sposobu na wdrożenie funkcji po podaniu ok. Proces jest nie tylko długi, ale niechlujny. Jest to ręczne i występuje przestój. Cały proces może potrwać pięć dni. Wiem, że to za długo, ale co mam zrobić? Może jeśli po prostu piję więcej kawy rozwiązanie przyjdzie do mnie.

Andy: Kawa jest niezbędna do skutecznego rozwiązywania problemów, bez wątpienia.

Myślę, że potrzebne rozwiązanie jest dobrym wzorcem wdrażania. Wzorzec wdrażania to zautomatyzowany sposób wykonywania migracji jednorazowej. W ten sposób przenosimy oprogramowanie z końcowego etapu przedprodukcyjnego do produkcji na żywo.

Wybór odpowiedniego wzorca zdecydowanie pomoże Ci zminimalizować przestoje. Kolejną zaletą wzorca wdrażania jest to, że daje nam możliwość uruchamiania testów, które powinny naprawdę wystąpić w środowisku produkcyjnym.

Andy zaczyna pisać na tablicy.

Poniżej przedstawiono możliwości, które należy wziąć pod uwagę:

  • Wdrożenie niebiesko-zielone
  • Wersje kanary
  • Przełączanie funkcji
  • Ciemne uruchomienia
  • Testowanie A/B:
  • Wdrażanie progresywnego narażenia

Krótko omówimy każdy wzorzec.

Wdrożenia niebiesko-zielone

Wdrożenie niebiesko-zielone zmniejsza ryzyko i przestój dzięki uruchomieniu dwóch identycznych środowisk. Te środowiska są nazywane niebieskim i zielonym. W dowolnym momencie tylko jedno ze środowisk jest aktywne. Wdrożenie niebiesko-zielone zwykle obejmuje router lub moduł równoważenia obciążenia, który pomaga kontrolować przepływ ruchu.

Diagram of a load balancer distributing traffic in a blue-green deployment.

Załóżmy, że niebieski jest żywy. Przygotowujemy nową wersję, przeprowadzamy końcowe testy w środowisku zielonym. Gdy oprogramowanie działa w środowisku zielonym, wystarczy przełączyć router, aby wszystkie żądania przychodzące przechodziły do środowiska zielonego.

Wdrożenie niebiesko-zielone daje również szybki sposób na wycofanie. Jeśli coś pójdzie źle w zielonym środowisku, po prostu przełączymy router z powrotem do niebieskiego środowiska.

Wersje kanary

Wydanie kanaarne to sposób wczesnego identyfikowania potencjalnych problemów bez ujawniania wszystkich użytkowników problemu. Chodzi o to, że udostępniamy nową funkcję tylko małym podzbiorom użytkowników, zanim udostępnimy ją wszystkim.

Diagram of a load balancer sending traffic to a canary version.

W wydaniu kanarowym monitorujemy, co się stanie po wydaniu funkcji. Jeśli wersja ma problemy, zastosujemy poprawkę. Po wydaniu kanarowym wiadomo, że jest stabilna, przenosimy ją do rzeczywistego środowiska produkcyjnego.

Przełączanie funkcji

Użyj przełączników funkcji, aby "przerzucić przełącznik" w czasie wykonywania. Możemy wdrożyć nowe oprogramowanie bez uwidaczniania innych nowych lub zmienionych funkcji dla naszych użytkowników.

W tym wzorcu wdrażania mara i ja kompiluję nowe funkcje za przełącznikiem. Po wydaniu funkcja jest "wyłączona", aby nie wpływała na oprogramowanie produkcyjne. W zależności od sposobu konfigurowania przełącznika możemy przerzucić przełącznik na "włączony" i uwidocznić funkcję w jaki sposób chcemy.

Diagram of a coded if statement for an on-off feature.

Na przykład możemy udostępnić funkcję najpierw kilku użytkownikom, aby zobaczyć, jak reagują. Ta losowa próbka użytkowników widzi tę funkcję. Możemy też po prostu pozwolić, aby funkcja żyła dla wszystkich.

Jednak ten wzorzec wdrażania może przynieść korzyści Mara i mi więcej niż ktokolwiek inny. Wielką zaletą wzorca przełączania funkcji jest to, że pomaga nam uniknąć zbyt dużej ilości rozgałęziania. Scalanie gałęzi może być bolesne.

Ciemne uruchomienia

Ciemne uruchamianie jest podobne do wersji kanaarnej lub przełączania przełącznika funkcji. Zamiast uwidaczniać nową funkcję wszystkim, w ciemnym uruchomieniu udostępniamy tę funkcję małym zestawom użytkowników.

Diagram of a load balancer sending traffic to the new feature.

Ci użytkownicy nie wiedzą, że testują dla nas tę funkcję. Nie wyróżniamy nawet nowej funkcji. Dlatego nazywa się to ciemnym uruchomieniem. Oprogramowanie jest stopniowo lub niestrudnie wydawane użytkownikom, dzięki czemu możemy uzyskać opinie i przetestować wydajność.

Testowanie A/B:

Testowanie A/B porównuje dwie wersje strony internetowej lub aplikacji, aby określić, która z nich działa lepiej. Testowanie A/B jest jak klasyczny eksperyment.

Diagram of two apps and their analytics.

W testach A/B losowo pokazujemy użytkownikom co najmniej dwie odmiany strony. Następnie użyjemy analizy statystycznej, aby zdecydować, które odmiany działają lepiej dla naszych celów.

Wdrażanie progresywnego narażenia

Wdrażanie progresywne ekspozycji jest czasami nazywane wdrożeniem opartym na pierścieniu. Innym sposobem jest ograniczenie wpływu zmian na użytkowników przy jednoczesnym upewnieniu się, że te zmiany są prawidłowe w środowisku produkcyjnym.

Pierścienie są w zasadzie przedłużeniem etapu kanarowego. Sama kanarka uwalnia się do etapu w celu mierzenia efektu. Dodanie innego pierścienia jest zasadniczo tym samym pomysłem.

Diagram of a progression of larger groups.

W ramach wdrożenia opartego na pierścieniu wdrażamy najpierw zmiany w klientach odpornych na ryzyko. Następnie stopniowo wprowadzamy do większego zestawu klientów.

Implementowanie wdrożenia niebieski-zielony

Andy patrzy na Tima.

Andy: To dużo, wiem. Czy chcesz trochę czasu na to pomyśleć? Albo ty i mogłem ...

Tim: Niebieski-zielony.

Wszyscy w pokoju śmieją się.

Mara: Czy to kawa mówi?

Tim: Przełączanie funkcji wiąże się ze zmianą sposobu pracy i Andy'ego. Zróbmy jedną rzecz naraz. Metody, które stopniowo uwidaczniają funkcję, wymagają przełączenia analizy statystycznej lub funkcji.

Wdrożenie niebiesko-zielone to coś, co mogę kontrolować. Przełączanie routera jest proste. Jest to łatwe i bezpieczne. Natomiast we wdrożeniu niebieskim zielonym zarządzanie ma środowisko do oceny. Gdy dają ok, możemy łatwo się przełączać. Zacznijmy tam.

Więc pytanie brzmi: jak wdrożyć wdrożenie niebiesko-zielone w naszym potoku?

Co to są miejsca wdrożenia?

Andy: Ponieważ używamy usługi aplikacja systemu Azure, możemy skorzystać z miejsc wdrożenia. Miejsca wdrożenia uruchamiają aplikacje, które mają własne nazwy hostów.

Wiem, że nie jesteśmy jeszcze gotowi do wdrożenia witryny internetowej Space Game do produkcji w ramach zautomatyzowanego potoku. Jednak jako test możemy dodać miejsce wdrożenia do naszego środowiska przejściowego .

Zamiast konfigurować moduł równoważenia obciążenia lub router, możemy dodać drugie miejsce do wystąpienia usługi App Service, które jest używane w naszym istniejącym środowisku przejściowym . Możemy wywołać gniazdo podstawowe niebieskie i pomocnicze miejsce na zielono.

Diagram of applications swapping IP addresses.

W ten sposób można wdrażać nowe funkcje bez przestojów. Zamieniamy aplikację i jej konfigurację między dwoma miejscami wdrożenia. Zasadniczo zamieniamy adresy IP dwóch miejsc.

Tim: Podoba mi się to! Możesz wywołać tę odmianę wdrożenia niebiesko-zielonym wdrożeniem bez przestoju.

Andy: Świetnie! Tim i będę pracować nad wdrożeniem tego wzorca wdrażania. Wszyscy możemy spotkać się później, aby zobaczyć wyniki.

Rekomendacje do używania flag funkcji

Flagi funkcji były jedną z metod wydawania, które zespół rozważył. Zespół zdecydował się nie używać flag funkcji, ale wiele osób znalazło je przydatne. Ta sekcja zawiera więcej informacji na temat flag funkcji.

Flagi funkcji, nazywane czasami przełączaniem funkcji, umożliwiają zmianę sposobu działania systemu bez zmiany kodu. Te flagi umożliwiają wypchnięcie nowego kodu do centralnej gałęzi programowania i wdrożenie kodu, ale niekoniecznie funkcjonalne. Flagi są często implementowane jako wartość zmiennych kontrolujących logikę warunkową.

Wyobraź sobie, że Twój zespół pracuje w centralnej gałęzi rozwoju aplikacji bankowej. Zdecydowano się wykonać całą pracę w gałęzi głównej, aby uniknąć niechlujnych operacji scalania później. Ale napotykasz problem. Znacząco zmieniasz obliczenia odsetek, a ludzie zależą od tego kodu każdego dnia. Co gorsza, zmiany potrwają kilka tygodni. Nie można pozostawić głównego kodu uszkodzonego przez tak długi czas.

W tym scenariuszu flaga funkcji może być dobrym rozwiązaniem. Możesz zmienić kod, aby użytkownicy, którzy nie mają ustawionej flagi funkcji, mogli nadal używać oryginalnego kodu obliczania odsetek. W międzyczasie twój zespół ma ustawiony flagę funkcji, dzięki czemu może zobaczyć kod, który zmienia.

Innym typem flagi funkcji jest flaga wydania. Wyobraź sobie, że po zakończeniu pracy nad kodem obliczenia odsetek chcesz wypróbować go przed opublikowaniem go publicznie. Masz grupę użytkowników, którzy są dobrze pozycjonowani, aby poradzić sobie z nowym kodem i wszelkimi możliwymi problemami. Pozwolisz im najpierw wypróbować tę funkcję. Możesz zmienić konfigurację, aby mieć również ustawioną flagę funkcji i przetestować nowy kod. Jeśli wystąpią problemy, możesz szybko wyłączyć flagę.

Sprawdź swoją wiedzę

1.

Zespół ds. marketingu poprosił Cię o dodanie baneru do witryny internetowej twojej firmy. Mają dwie wersje tego baneru. Chcą wiedzieć, która wersja generuje więcej kliknięć. Którego wzorca wdrażania można użyć, aby pomóc zespołowi ds. marketingu zidentyfikować lepszą wersję?

2.

Masz nową funkcję dla witryny internetowej i możesz ją wdrożyć. Jednak ta funkcja jest ryzykowna, ponieważ zmienia sposób interakcji użytkowników z witryną. Których wzorców wdrażania można użyć do wydania małej grupy wczesnych użytkowników, którzy zarejestrowali się w celu wyświetlenia nowych funkcji?

3.

Nie masz pewności, jak użytkownicy będą reagować na nową funkcję. Chcesz zwolnić funkcję do małej, losowej próbki użytkowników, aby zobaczyć, jak reagują. Którego wzorca wdrażania można użyć?