Zarządzanie funkcjami — omówienie

Tradycyjnie dostarczanie nowej funkcji aplikacji wymaga pełnego ponownego wdrożenia samej aplikacji. Testowanie funkcji często wymaga wielu wdrożeń aplikacji. Każde wdrożenie może zmienić tę funkcję lub uwidocznić tę funkcję różnym klientom na potrzeby testowania.

Zarządzanie funkcjami to nowoczesna praktyka tworzenia oprogramowania, która rozdziela wydanie funkcji z wdrożenia kodu i umożliwia szybkie zmiany dostępności funkcji na żądanie. Używa techniki nazywanej flagami funkcji (nazywanymi również przełącznikami funkcji i przełącznikami funkcji) w celu dynamicznego administrowania cyklem życia funkcji.

Zarządzanie funkcjami ułatwia deweloperom rozwiązywanie następujących problemów:

  • Zarządzanie gałęzią kodu: użyj flag funkcji, aby opakowywać nowe funkcje aplikacji obecnie opracowywane. Takie funkcje są domyślnie "ukryte". Możesz bezpiecznie wysłać tę funkcję, mimo że jest ona niedokończona i pozostanie uśpiona w środowisku produkcyjnym. Korzystając z tego podejścia, nazywanego ciemnym wdrożeniem, można zwolnić cały kod na końcu każdego cyklu programowania. Nie trzeba już obsługiwać gałęzi kodu w wielu cyklach programowania, ponieważ dana funkcja wymaga ukończenia więcej niż jednego cyklu.
  • Testowanie w środowisku produkcyjnym: użyj flag funkcji, aby udzielić wczesnego dostępu do nowych funkcji w środowisku produkcyjnym. Na przykład możesz ograniczyć dostęp do członków zespołu lub do wewnętrznych testerów wersji beta. Ci użytkownicy będą doświadczyć środowiska produkcyjnego o pełnej wierności zamiast symulowanego lub częściowego środowiska w środowisku testowym.
  • Flighting: używaj flag funkcji, aby przyrostowo wdrażać nowe funkcje dla użytkowników końcowych. Możesz najpierw wybrać niewielki procent populacji użytkowników i stopniowo zwiększać ten procent.
  • Przełącznik natychmiastowego zabijania: flagi funkcji zapewniają nieodłączną siatkę bezpieczeństwa do wydawania nowych funkcji. Funkcje aplikacji można włączać i wyłączać bez ponownego wdrażania kodu. W razie potrzeby możesz szybko wyłączyć funkcję bez ponownego kompilowania i ponownego wdrażania aplikacji.
  • Aktywacja selektywna: użyj flag funkcji, aby podzielić użytkowników na segmenty i dostarczyć określony zestaw funkcji do każdej grupy. Może istnieć funkcja, która działa tylko w określonej przeglądarce internetowej. Możesz zdefiniować flagę funkcji, aby tylko użytkownicy tej przeglądarki mogli wyświetlać i używać tej funkcji. Korzystając z tego podejścia, można łatwo rozwinąć listę obsługiwanych przeglądarek później bez konieczności wprowadzania jakichkolwiek zmian w kodzie.

Podstawowe pojęcia

Oto kilka nowych terminów związanych z zarządzaniem funkcjami:

  • Flaga funkcji: flaga funkcji jest zmienną ze stanem binarnym włączonym lub wyłączonym. Flaga funkcji ma również skojarzony blok kodu. Stan flagi funkcji wyzwala, czy blok kodu jest uruchamiany.
  • Menedżer funkcji: Menedżer funkcji to pakiet aplikacji, który obsługuje cykl życia wszystkich flag funkcji w aplikacji. Menedżer funkcji udostępnia również dodatkowe funkcje, w tym flagi funkcji buforowania i aktualizowanie ich stanów.
  • Filtr: filtr jest regułą oceniania stanu flagi funkcji. Potencjalne filtry obejmują grupy użytkowników, typy urządzeń lub przeglądarek, lokalizacje geograficzne i okna czasowe.

Efektywna implementacja zarządzania funkcjami składa się z co najmniej dwóch składników działających w koncercie:

  • Aplikacja, która korzysta z flag funkcji.
  • Oddzielne repozytorium, które przechowuje flagi funkcji i ich bieżące stany.

Używanie flag funkcji w kodzie

Podstawowy wzorzec implementowania flag funkcji w aplikacji jest prosty. Flaga funkcji to zmienna stanu warunkowego kontrolująca instrukcję warunkową w kodzie:

if (featureFlag) {
    // Run the following code
}

Wartość można ustawić featureFlag statycznie:

bool featureFlag = true;

Stan flagi można ocenić na podstawie określonych reguł:

bool featureFlag = isBetaUser();

Można rozszerzyć warunek, aby ustawić zachowanie aplikacji dla jednego ze stanów:

if (featureFlag) {
    // This following code will run if the featureFlag value is true
} else {
    // This following code will run if the featureFlag value is false
}

Repozytorium flag funkcji

Aby efektywnie korzystać z flag funkcji, należy zewnętrznie wykorzystać wszystkie flagi funkcji używane w aplikacji. Za pomocą tej metody można zmieniać stany flag funkcji bez modyfikowania i ponownego wdrażania samej aplikacji.

aplikacja systemu Azure Configuration udostępnia scentralizowane repozytorium flag funkcji. Można jej użyć do definiowania różnych rodzajów flag funkcji i szybkiego i pewnie manipulowania ich stanami. Następnie możesz użyć bibliotek konfiguracji aplikacji dla różnych struktur języka programowania, aby łatwo uzyskać dostęp do tych flag funkcji z poziomu aplikacji.

Flagi funkcji w aplikacji ASP.NET Core pokazują, jak dostawca platformy .NET usługi App Configuration i biblioteki zarządzania funkcjami są używane razem do implementowania flag funkcji dla aplikacji internetowej ASP.NET. Aby uzyskać więcej informacji na temat flag funkcji w aplikacja systemu Azure Configuration, zobacz następujące artykuły:

Następne kroki