8 najlepszych praktyk dotyczących flag funkcji, które warto znać

Discover how to lead product teams and build better products. Create a Free Account

Flagi funkcji można wykorzystywać do obsługi złożonych wydań, dostosowywania produktów lub tworzenia eksperymentów. Zastosuj te najlepsze praktyki dotyczące flag funkcji, aby osiągnąć maksymalną elastyczność i łatwość użycia.

8 feature flag best practices you should know standard editorial post 40241

Flagi funkcji to przełomowe rozwiązanie dla menedżerów produktu. Pozwalają wydawać nowe funkcje bez związanych z tym problemów — bez zmian w kodzie, bez pełnych wdrożeń i bez żadnego ryzyka.

Pomyśl o nich jak o przełączniku, który możesz przełączyć, aby dostosować swój produkt lub przeprowadzać eksperymenty na bieżąco. Niezależnie od tego, czy przyspieszasz cykle wydawnicze, czy testujesz nowe pomysły, flagi funkcji dają Ci pełną kontrolę.

W tym artykule podzielę się najlepszymi praktykami zarządzania flagami funkcji i pokażę, jak wykorzystałem te techniki w Guardian Soulmates, platformie randkowej The Guardian, aby uprościć dużą zmianę projektu.

Key Takeaways

Definicja: Flagi funkcji usprawniają cykle wydań, umożliwiając bezpieczne i elastyczne wdrażanie funkcji bez zmian w kodzie.

Dlaczego są przydatne: Jasne konwencje nazewnictwa flag funkcji pomagają zespołom łatwo zrozumieć ich przeznaczenie i uniknąć nieporozumień.

Skuteczne wykorzystanie: Skutecznie zarządzaj flagami, usuwając te, które stały się nieaktualne, i upewniając się, że można je łatwo włączać i wyłączać.

Zacznij od małej skali: Wykorzystuj flagi funkcji do testowania, zaczynając od małych grup odbiorców i zwiększając ich zasięg na podstawie opinii, aby zminimalizować ryzyko.

Najlepsze praktyki zarządzania flagami funkcji

Aby skutecznie zarządzać flagami funkcji i zapewnić sprawne wydawanie produktów, należy stosować najlepsze praktyki sprzyjające przejrzystości i wydajności. Oto kilka kluczowych zasad, o których warto pamiętać:

  • Używaj spójnego systemu: Niezależnie od tego, czy korzystasz z narzędzia do zarządzania, czy pliku konfiguracyjnego, upewnij się, że system jest łatwy do zrozumienia i dostępny dla wszystkich członków zespołu.
  • Ustal jasne zasady nazewnictwa: Każdy typ flagi (np. wydania, uprawnień, wyłączenia) powinien mieć unikalną i opisową nazwę, zapewniającą przejrzystość dla wszystkich, nawet po wielu latach.
  • Ułatwiaj przełączanie flag: Flagi powinny dać się łatwo włączać i wyłączać bez konieczności wprowadzania zmian w kodzie lub angażowania programisty.
  • Usuwaj nieaktualne flagi: Usuwaj flagi, które nie są już potrzebne, aby uniknąć bałaganu i ograniczyć dług techniczny w systemie.

1. Używaj spójnego systemu zarządzania flagami funkcji

Nie ma znaczenia, czy używasz narzędzia do zarządzania flagami funkcji (na przykład LaunchDarkly), pliku konfiguracyjnego czy tabeli w bazie danych. Niezależnie od wybranego rozwiązania system powinien być łatwy do zrozumienia i uwzględniać dobre zasady nazewnictwa, tak aby każdy inżynier oprogramowania rozumiał działanie danej flagi.

Poświęć trochę czasu przy pierwszym wprowadzaniu flag funkcji na omówienie najlepszego rozwiązania dla Ciebie, ponieważ chcesz korzystać z tego systemu w długiej perspektywie. 

2. Ustal zasady nazewnictwa dla różnych typów flag funkcji

Flagi funkcji można wdrożyć, aby osiągnąć wiele różnych celów:

  • Flagi wydania: ułatwiają wdrożenie kodu produkcyjnego, zanim funkcja będzie gotowa do publicznego udostępnienia.
  • Flagi eksperymentu: podczas tworzenia testu A/B flaga kontroluje, która grupa użytkowników otrzyma dane doświadczenie.
  • Flagi uprawnień: umożliwiają kontrolowanie dostępu różnych klientów do określonych funkcji 
  • Flagi wyłączenia: umożliwiają kontrolowane ograniczenie działania produktu w przypadku problemów z wydajnością lub przeciążeniem. 

Jasne zasady nazewnictwa dla każdego typu flagi sprawiają, że wszyscy wiedzą, co robi każda flaga, nawet po wielu latach. 

Get Free Access to the Product Vault
We’ve collected the goods — AI prompts, exclusive deals, and a library of resources for product leaders. Unlock your account for access.
Get Free Access

Have an account? Log In

3. Ułatw przełączanie flagi

Zaletą flag funkcji jest możliwość ich łatwego włączania i wyłączania. Najlepiej byłoby, gdyby można było ustawić flagę bez wprowadzania zmian w kodzie i bez interwencji programisty. Ponieważ flagi mogą być szeroko wykorzystywane, wiele zespołów może chcieć nimi zarządzać, na przykład:

  • QA w celu rozwiązywania problemów lub odtworzenia konkretnej sytuacji klienta.
  • Obsługa klienta w celu włączenia lub wyłączenia funkcji dla klienta.
  • Zespół DevOps w celu kontrolowanego wyłączenia (części) produktu w przypadku przeciążenia lub innych problemów. 

Jeśli masz ekran online do ustawiania flag, wszystkie te działania można wykonać bez angażowania zespołu inżynieryjnego. 

4. Zapewnij widoczność ustawień flag funkcji

Informacja o tym, jaka kombinacja ustawień flag funkcji obowiązuje dla konkretnego użytkownika, powinna być łatwo dostępna. Należy ją przechowywać wraz z profilem użytkownika zarówno w bazie danych użytkowników, jak i w systemie analitycznym.

Może to być bardzo przydatne dla obsługi klienta podczas rozwiązywania zgłoszonych problemów. Może również mieć dużą wartość przy analizowaniu różnych zachowań użytkowników przy różnych ustawieniach. Jest to niezbędne podczas analizowania wyników testu A/B.

5. Usuwaj nieaktualne flagi

Flagi wydania i flagi eksperymentu są z definicji potrzebne tylko tymczasowo. Po pełnym wydaniu nowej funkcji kontrolowanej przez flagę lub zakończeniu eksperymentu zaplanuj czas na usunięcie flagi jako ostatni krok. W ten sposób nie będziesz gromadzić długu technicznego w kodzie, a Twoje zarządzanie flagami funkcji pozostanie uporządkowane i łatwe do zrozumienia. 

6. Unikaj zależności między flagami

Każda flaga powinna mieć określony cel, niezależny od innych flag. W przypadku flag uprawnień oznacza to, że kod musi być na tyle modułowy, aby różne funkcje można było włączać w dowolnej kombinacji.

Jeśli do włączenia określonego przypadku użycia potrzebnych jest wiele flag lub mogą one kolidować z innymi flagami, konfiguracja flag może stać się myląca, a wcześniej czy później pojawią się problemy z doświadczeniami użytkowników. 

7. Używaj przełącznika funkcji, aby unikać gałęzi kodu

Podczas omawiania implementacji większej funkcji w zespole produktowym będziecie rozmawiać o tym, jak podzielić tworzenie oprogramowania na mniejsze części. W tym momencie powinniście również omówić użycie flagi funkcji. 

Gdy implementujesz flagę i pozostawiasz ją wyłączoną, unikasz tworzenia długotrwałych gałęzi funkcji. Zamiast tego kod nowej funkcji może być stale scalany i wdrażany bez udostępniania go użytkownikom w ramach CI/CD (ciągłej integracji / ciągłego wdrażania) lub wdrażania kodu w zwinnym sprincie. Poprawia to integralność bazy kodu, ponieważ nie musisz przeprowadzać dużych i skomplikowanych procesów scalania, a wszelkie konflikty są szybko identyfikowane.

Oddziela to również wydanie kodu od prezentowania zmian użytkownikom końcowym, jak wyjaśniono w punkcie 8.

8. Używaj flag funkcji do przeprowadzania małych wydań testowych

Wydania dużych nowych funkcji bywają stresujące i ryzykowne, ale możesz temu zaradzić, udostępniając funkcję najpierw niewielkiej grupie odbiorców, monitorując efekty i w razie potrzeby wycofując zmianę.

Jeśli użyłeś flagi funkcji do ciągłego scalania i wdrażania kodu przed udostępnieniem go światu, zgodnie z zaleceniem z punktu 7, masz już narzędzie, które pozwoli Ci to osiągnąć.

Gdy nowa funkcjonalność jest gotowa, włącz ją w środowisku produkcyjnym, aby najpierw udostępnić ją wyłącznie testerom wewnętrznym, następnie niewielkiemu odsetkowi klientów (co nazywa się wydaniem kanarkowym), a później całej bazie klientów. 

Na każdym etapie monitorujesz kluczowe wskaźniki. Jeśli w dowolnym momencie coś pójdzie nie tak, możesz łatwo ponownie wyłączyć flagę i zbadać problem bez stresu związanego ze skomplikowanym wycofywaniem zmian. 

Poniższe studium przypadku pokazuje przykład ograniczenia ryzyka związanego z gruntownym przeprojektowaniem produktu. 

Studium przypadku — flagi funkcji w przeprojektowaniu Guardian Soulmates

Kiedy pracowałem jako kierownik produktu dla Guardian Soulmates (ówczesnej platformy randkowej Guardian opartej na subskrypcji), stanęliśmy przed dwoma wyzwaniami: niedopracowaną witryną mobilną i zmęczonym wizerunkiem marki. Postanowiliśmy przeprowadzić przejście do odświeżonej, responsywnej witryny w dwóch krokach. 

Nie oszukujmy się: klienci na ogół nie lubią zmian, zwłaszcza klienci płacący. Zmiana marki to duże przedsięwzięcie, które może powodować wiele zakłóceń.

Omówiliśmy, jak najlepiej osiągnąć nasze cele: zastąpić witrynę mobilną i wdrożyć nowy wizerunek marki bez powodowania zbyt dużych zakłóceń dla naszych subskrybentów. Wybranym rozwiązaniem był dwuetapowy proces obejmujący dwie flagi funkcji:

  • Flaga układu responsywnego: ta flaga pozwalała nam wyświetlać każdą pojedynczą stronę w układzie responsywnym lub w istniejącym układzie na komputery (oddzielna witryna mobilna pozostała nietknięta do czasu, gdy byliśmy gotowi w pełni uruchomić nową witrynę mobilną). 
  • Flaga nowego wizerunku marki: ta flaga pozwalała nam wyświetlać całą witrynę w starym lub nowym wizerunku marki.

More Articles

Flaga witryny responsywnej

Po utworzeniu struktury responsywnej migrowaliśmy strony pojedynczo do nowego układu responsywnego. Jeśli pracujesz nad czymś podobnym, te narzędzia do prototypowania responsywnego projektu mogą pomóc Ci testować układy i iterować nad nimi przed uruchomieniem.

Dla każdej zmigrowanej strony flaga funkcji responsywnej była najpierw włączana dla niewielkiej grupy użytkowników, z możliwością przekazania opinii.

Następnie, po kilku dniach, responsywna strona była udostępniana wszystkim użytkownikom. Powtarzaliśmy ten proces, aż cała witryna stała się responsywna. 

Następnie witryna mobilna została przełączona na nową witrynę responsywną. Zakłócenia dla użytkowników komputerów były minimalne, ponieważ strony migrowaliśmy stopniowo. 

Zakłócenia dla użytkowników urządzeń mobilnych były niewielkie, ponieważ w tamtym czasie nie mieliśmy zbyt wielu użytkowników mobilnych (a stara witryna mobilna nie była zbyt dobra!). 

Flaga zmiany wizerunku responsywnej witryny

Po uruchomieniu responsywnej witryny flaga funkcji dotycząca nowego wizerunku marki pozwalała nam przełączać całą witrynę między starym a nowym wizerunkiem.

Programiści wdrożyli w witrynie przycisk umożliwiający przełączanie wizerunku marki dla poszczególnych użytkowników, dzięki czemu projektanci, zespół QA, a także ja jako kierownik produktu mogliśmy śledzić postępy.

Przeprojektowane strony były stale wydawane, ale w środowisku produkcyjnym ta flaga pozostawała wyłączona, aby żaden użytkownik nie widział stron w nowym wizerunku marki.

Gdy wszystkie strony były gotowe, umieściliśmy w witrynie przycisk, za pomocą którego użytkownicy mogli zdecydować się na publiczny podgląd nowego brandingu. Ten przycisk przełączał użytkownika na nowy branding. Użytkownicy mogli przekazać nam swoją opinię, a po tygodniu włączyliśmy branding dla wszystkich. 

Cały proces był całkowicie bezproblemowy zarówno dla zespołu deweloperskiego, jak i naszych klientów. Był to doskonały przykład wykorzystania flag funkcjonalności do zmniejszenia ryzyka związanego z dużą zmianą projektu witryny. 

Jeśli chcesz dokładniej zrozumieć, co zrobiliśmy, możesz znaleźć artykuł o projekcie przeprojektowania Soulmates na blogu inżynieryjnym Guardiana.

Końcowe przemyślenia

Odpowiednio przygotuj początkową strukturę, a przekonasz się, że korzystanie z flag funkcjonalności może znacznie zwiększyć elastyczność i efektywność Twojego produktu.

W przypadku większych inicjatyw warto również rozważyć użycie flag funkcjonalności w celu zminimalizowania ryzyka, a także przygotować plan zarządzania wydaniami, aby zapewnić płynne wdrożenie. Do stworzenia tego planu możesz również wykorzystać AI w zarządzaniu wydaniami. Jedynym ograniczeniem w korzystaniu z flag funkcjonalności jest Twoja wyobraźnia!

Opowiedz nam w komentarzach o sprytnych sposobach wykorzystania flag funkcjonalności w swoim produkcie. 

Jeśli chcesz poznać więcej wskazówek i trików, które pomogą Ci poprawić umiejętności zarządzania produktem, zapisz się do naszego newslettera.

Skorzystaj z pomocy innego kierownika produktu w swoim zespole dzięki temu praktycznemu poradnikowi: Jak stworzyć skuteczny opis stanowiska kierownika produktu Agile (+przykład)

Warto również sprawdzić:

Kerstin Exner
I am a senior product manager with 15 years experience in a variety of companies, amongst them some of the best practice Product companies in the world like eBay and Guardian News & Media. In my varied roles I have worked in companies of various sizes and at different stages of maturity of their Product Management organizations. I have been the first product manager of the company in several of my roles and tackled introducing Product Management into a business. My other passion is User Experience. I undertook an MSc degree in Human-Centred Systems at City University London from 2010-2012. The combination of Product Management and User Experience means that user insight is always at the heart of my work. I believe that real-life Product Management can be quite daunting and the solutions to numerous challenges cannot always be found in textbooks. I hope that sharing my own experiences of what works in real life helps product managers to succeed and their products to thrive.
Follow the author:

You may also like