Flagi funkcji / Przełączniki funkcji
Feature Flagging to technika w tworzeniu oprogramowania polegająca na włączaniu i wyłączaniu funkcji lub cech oprogramowania będącego w trakcie rozwoju w czasie rzeczywistym.
Feature Flags to technika programistyczna, dzięki której Ty i Twój zespół możecie szybciej i bezpieczniej dostarczać oprogramowanie oraz integrować je między zespołami. Ponieważ niezależne czasowo wdrażanie aplikacji staje się coraz powszechniejszym wymaganiem, Feature Flags stanowią idealne rozwiązanie tego problemu. Dodatkowo pomagają one optymalizować przepływ pracy zespołów deweloperskich.
Synonimy używane dla Feature Flags i Feature Flagging:
- Feature Toggles / Feature Toggling
- Feature Switches
- Feature Flippers
- Feature Bits
- Conditional Features (w kontekście User Targeting)
Cele i zalety Feature Flags w szczegółach
Dzięki Feature Flags Ty i Twój zespół możecie:
- szybciej i stopniowo dostarczać oprogramowanie oraz wdrażać nowe funkcje dla klientów (Continuous Integration i Continuous Delivery stają się szybsze i prostsze)
- integrować nowe funkcje między zespołami
- testować nowe wymagania w środowisku produkcyjnym (bez wiedzy klientów)
- udostępniać gotowe funkcje tylko wybranym grupom użytkowników
- regularnym testowaniem stopniowo poprawiać funkcjonalność i UX
- utrzymywać stabilność aplikacji w działaniu poprzez wyłączanie wadliwych funkcji
- minimalizować czasochłonne wdrożenia poprawek błędów
- oddzielać wydania oprogramowania od jego wdrożeń
- unikać dużych i ryzykownych wdrożeń poprzez częstsze mergowanie do gałęzi głównej zamiast rzadkiego mergowania długich gałęzi funkcji
- elastycznie reagować na zmiany wymagań klientów bez dodatkowego wdrożenia
Kiedy i jak stosuje się Feature Flags?
W praktyce gotowe funkcje często czekają na wdrożenie, ponieważ nie mogą jeszcze trafić na środowisko produkcyjne. Odpowiednie gałęzie funkcji nie mogą być wtedy mergowane.
Dzięki Feature Toggles / Flags gotowy kod może zostać natychmiast połączony i wdrożony, dzięki czemu nowe funkcje są już obecne w tle, nie będąc widocznymi. Zapobiega to poważnym problemom przy późniejszym mergowaniu, gdy w międzyczasie pracowano nad innymi częściami oprogramowania.
Stosowanie Feature Flags jest szczególnie wartościowe w następujących przypadkach:
- Continuous Integration i Continuous Delivery (CI / CD)
- Kill-Switch
- Testy A/B z klientami w środowisku produkcyjnym
- Zarządzanie konfiguracją
- Kontrola uprawnień w aplikacji
- Procentowe wdrażanie funkcji
Istnieją 3 sposoby implementacji Feature Flags:
- Feature Toggles zaimplementowane bezpośrednio w kodzie
- Integracja przez plik konfiguracyjny (config)
- Integracja przez oprogramowanie do zarządzania Feature Flags
Wskazówki:
Aby utrzymać złożoność kodu na jak najniższym poziomie, Ty i Twój zespół powinniście:
- stosować Feature Flags tylko wtedy, gdy jest to naprawdę konieczne
- usuwać nieużywane flagi z cyklu życia oprogramowania
4 rodzaje Feature Flags
W zależności od tego, jak długo Feature Flags mają pozostawać w kodzie i jaką pełnią funkcję, można je podzielić na 4 kategorie:
Release Toggle
Release Toggles umożliwiają wdrożenie nieprzetestowanego i niekompletnego kodu w środowisku produkcyjnym bez jego aktywowania. W ten sposób np. menedżerowie produktu mogą udostępniać nowe funkcje według własnego uznania.
Experiment Toggle
Experiment Toggles pozwalają kontrolować zachowanie użytkowników w obrębie aplikacji. W tym celu użytkownicy są identyfikowani w systemie oprogramowania, a następnie precyzyjnie ukierunkowywani. Dzięki temu nowe funkcje mogą być szybko testowane na określonych grupach osób, a wnioski mogą być włączane do dalszego rozwoju.
Ops Toggle
Ops Toggles umożliwiają zespołom operacyjnym zarządzanie działaniem aplikacji za pomocą Feature Toggles. Pozwala to na szybkie wycofywanie funkcji i testowanie obciążenia systemu nowymi funkcjami na małych grupach. Dodatkowo Ops Toggles umożliwiają dezaktywację zbędnych funkcji w działaniu aplikacji ("Kill-Switches").
Permission Toggle
Permission Toggles pozwalają kontrolować zachowanie znanych użytkowników w obrębie aplikacji. Na przykład możesz za ich pomocą udostępniać funkcje klientom VIP lub Premium. Testy A/B stanowią kolejną możliwość ich zastosowania.
Podsumowanie Feature Toggles / Flags
Feature Toggles i Flags pomagają zespołom szybciej i łatwiej dostarczać, integrować i testować nowe funkcje.
Różne rodzaje toggles służą różnym celom, takim jak testowanie nowych funkcji na małych grupach, odblokowywanie określonych uprawnień czy sprawdzanie obciążenia systemu. Feature Flags i Toggles mogą ukrywać lub pokazywać całe obszary oprogramowania albo sterować tylko małymi blokami kodu. Ponieważ mogą być stosowane zarówno w backendzie, frontendzie, jak i w całej aplikacji, są bardzo elastyczne w użyciu.
Ważne: Gdy Feature Flags nie są już potrzebne w kodzie, Ty lub Twój zespół powinniście je usunąć. W ten sposób zapobiegacie nadmiernemu wzrostowi złożoności kodu.