Przejdź do treści

Wdrożenie

To, w jaki sposób będzie przebiegać wdrożenie nowej funkcji, zależy od sposobu implementacji Feature Flag i od specyfiki naszego systemu.

Flagi zahardcodowane w aplikacji

Jeśli zdecydowaliśmy się na rozwiązanie, w którym stan flag zapisany jest w repozytorium kodu, to zmiana stanu takiej flagi musi odbywać się poprzez commit.

Uwaga

Zanim zdecydujemy się zmienić produkcyjną konfigurację flag, pamiętajmy o uruchomieniu testów automatycznych z uwzględnieniem tej flagi.

Flagi ustawiane przy uruchomieniu aplikacji

Czasami stan flag może być sterowany zmiennymi środowiskowymi podczas uruchomienia naszej aplikacji (lub kontenera).

W takim przypadku, żeby dokonać zmiany, należy zmienić wartość zmiennych środowiskowych i uruchomić ponownie usługę.

Często takie informacje zawarte są w repozytorium, wraz z konfiguracją całego środowiska produkcyjnego i modyfikacja sprowadza się do wysłania commita.

Flagi zapisane w storage aplikacji

Jeśli przechowujemy stan flag w jakimś storage'u, z którego korzysta nasza aplikacja, to zmianę stanu flagi możemy przeprowadzić bez konieczności zmian w repozytorium.

Wystarczy, że w dowolny dostępny nam sposób zmienimy zapisaną wcześniej wartość i aplikacja na tę zmianę zareaguje.

Jeśli nasz system przechowuje flagi dla każdego użytkownika z osobna, takie rozwiązanie pozwala nam na wykorzystanie Feature Flag do przeprowadzenia testów A/B lub wykonywania tzw. Canary Deployment.

Canary Deployment

Technika polegająca na tym, że nowe funkcje i zmiany otrzymuje tylko mała, wybrana grupa użytkowników. W przypadku niepowodzenia, tylko ta grupa zostanie dotknięta problemem, minimalizując skalę awarii. Gdy wszystko jest ok, wdrażamy zmianę wszystkim użytkownikom.

Technikę tę można też stosować, gdy chcemy zebrać feedback od wybranych użytkowników i ulepszyć usługe przed pełnowymiarowym wdrożeniem.

Flagi zarządzane z poziomu zewnętrznego mikroserwisu.

Gdy nasza aplikacja pobiera stan flag z zewnętrznej usługi, przełączenie flagi nie wymaga restartu usługi. Prawdopodobnie nie wymaga również pracy osób technicznych.

Samo zachowanie aplikacji możemy porównać do takiego, jak przy flagach zapisanych w zewnętrznym storage'u, jednak możliwość ustawiania flag per użytkownik, będzie zależała od konkretnej implementacji.

O dodatkowych możliwościach wdrożeniowych będzie też decydował interfejs serwisu, który pozwala nam zarządzać flagami.