Przełącznik funkcji
Przełączanie funkcji w rozwoju oprogramowania stanowi alternatywę dla utrzymywania wielu gałęzi funkcji w kodzie źródłowym . Warunek w kodzie włącza lub wyłącza funkcję w czasie wykonywania . W ustawieniach zwinnych przełącznik jest używany w produkcji, aby włączyć funkcję na żądanie, dla niektórych lub wszystkich użytkowników. W ten sposób przełączniki funkcji ułatwiają zwalnianie . Zaawansowane strategie wdrażania, takie jak wdrażanie kanarkowe i testy A/B, są łatwiejsze w obsłudze. Niektóre godne uwagi usługi przełączania funkcji to AWS AppConfig , ConfigCat , Flagsmith i Split.io .
Nawet jeśli nowe wersje nie są wdrażane w środowisku produkcyjnym w sposób ciągły , ciągłe dostarczanie jest obsługiwane przez przełączanie funkcji. Funkcja jest integrowana z główną gałęzią przed jej ukończeniem. Wersja jest wdrażana w środowisku testowym raz, przełącznik pozwala włączyć tę funkcję i przetestować ją . Cykle integracji oprogramowania stają się krótsze, a wersja gotowa do wdrożenia produkcyjnego może zostać dostarczona.
Trzecim zastosowaniem tej techniki jest umożliwienie programistom wydania wersji produktu, który ma niedokończone funkcje. Te niedokończone funkcje są ukryte (przełączone), aby nie pojawiały się w interfejsie użytkownika . Łączenie funkcji z gałęzią produkcyjną wymaga mniej wysiłku , co pozwala na tworzenie wielu małych, przyrostowych wersji oprogramowania .
Przełącznik funkcji jest również nazywany przełącznikiem funkcji , flagą funkcji , bramką funkcji , przerzucaniem funkcji lub funkcją warunkową .
Realizacja
Przełączniki funkcji to zasadniczo zmienne używane w instrukcjach warunkowych . Dlatego bloki wewnątrz tych instrukcji warunkowych można włączać i wyłączać w zależności od wartości przełącznika funkcji. Pozwala to programistom kontrolować przepływ ich oprogramowania i omijać funkcje, które nie są gotowe do wdrożenia. Blok kodu za zmienną środowiska wykonawczego jest zwykle nadal obecny i można go wykonać warunkowo, czasami w ramach tego samego cyklu życia aplikacji; blok kodu za dyrektywą preprocesora lub z komentarzem nie byłby wykonywalny. Podejście oparte na flagach funkcji może wykorzystywać dowolną z tych metod do oddzielania ścieżek kodu w różnych fazach rozwoju.
Głównym zastosowaniem przełączania funkcji jest unikanie konfliktów, które mogą powstać podczas łączenia zmian w oprogramowaniu w ostatniej chwili przed wydaniem, chociaż może to prowadzić do przełączania długu . Dług przełączany powstaje z powodu martwego kodu obecnego w oprogramowaniu po tym, jak funkcja została włączona na stałe i generuje koszty ogólne. Ta część kodu musi być usunięta ostrożnie, aby nie zakłócić innych części kodu.
Istnieją dwa główne typy przełączania funkcji. Jednym z nich jest przełącznik wersji, który programista postanawia zachować lub usunąć przed wydaniem produktu, w zależności od jego działania. Drugi to przełącznik biznesowy, który jest utrzymywany, ponieważ spełnia inne zastosowanie w porównaniu ze starszym kodem.
Przełączniki funkcji mogą być używane w następujących scenariuszach:
- Dodanie nowej funkcji do aplikacji.
- Ulepszanie istniejącej funkcji w aplikacji.
- Ukrywanie lub wyłączanie funkcji.
- Rozszerzanie interfejsu.
Przełączniki funkcji można przechowywać jako:
- Wpisy wierszy w bazie danych.
- Właściwość w pliku konfiguracyjnym.
- Wpis w zewnętrznej usłudze flag funkcji.
Grupy funkcji
Grupy funkcji składają się z przełączników funkcji, które współpracują ze sobą. Dzięki temu programista może łatwo zarządzać zestawem powiązanych przełączników.
Wydanie kanarków
Wydanie kanarkowe (lub uruchomienie kanarkowe lub wdrożenie kanarkowe) umożliwia programistom stopniowe testowanie funkcji przez niewielką grupę użytkowników. Flagi funkcji zapewniają alternatywny sposób uruchamiania kanarków i umożliwiają kierowanie według lokalizacji geograficznych, a nawet atrybutów użytkownika. Jeśli wydajność funkcji nie jest zadowalająca, można ją wycofać bez żadnych negatywnych skutków.
Martin Fowler twierdzi, że przełącznik funkcji „powinien być twoim ostatnim wyborem, gdy masz do czynienia z wprowadzaniem funkcji do produkcji”. Zamiast tego najlepiej jest podzielić funkcję na mniejsze części, z których każda może zostać zaimplementowana i bezpiecznie wprowadzona do wypuszczonego produktu bez powodowania innych problemów.
Z przełączania funkcji korzysta wiele dużych witryn, w tym Flickr, Disqus, Etsy, Reddit, Gmail i Netflix, a także oprogramowanie, takie jak Google Chrome Canary .