Co to jest „Przełączanie flag funkcji” i kiedy ich używać (lub nie)?

17

Istnieje kilka pytań feature flag toggles, takich jak:

Pytania :

  • Czym właściwie jest „przełączanie flagi funkcji” (w kontekście DevOps)?
  • Dlaczego są używane?
Pierre.Vriens
źródło
3
Informacje referencyjne, a nie bezpośrednia odpowiedź - martinfowler.com/articles/feature-toggles.html
Ken Mugrage
1
Wiem, że „pytanie” o wyjaśnienia negatywne nie jest powszechnie akceptowane. Ale ktokolwiek anonimowo głosował na to pytanie, wiedz tylko, że dla mnie takie oceny są bezwartościowe, ponieważ te oceny są tanie (downvoter nie traci za to -1). Anonimowe głosy zwrotne odpowiedzi są jednak inne ... taki downvoter pozostawia ślad ...
Pierre.Vriens
2
I bardzo chciałbym wiedzieć, dlaczego ktoś uważał, że to pytanie należy zamknąć z powodu „zbyt szerokiego”, skoro w rzeczywistości jest to świetne pytanie, które zasługuje na dobre odpowiedzi.
Evgeny,
Merci @Evgeny, wygląda na to, że jesteśmy na tej samej stronie ... ale czy zauważyłeś, że 1 głos został zamknięty? Prawdopodobnie z powodu mojej ostatniej edycji.
Pierre.Vriens

Odpowiedzi:

13

Bez powtarzania treści https://martinfowler.com/articles/feature-toggles.html , ponieważ jest to niesamowite dogłębne wyjaśnienie, jakie są przełączniki flagi funkcji. Skupię się na aspektach DevOps.

Według raportu State of DevOps z 2014 r. Przygotowanego przez PuppetLabs istnieją cztery główne wskaźniki do pomiaru wydajności IT:

  • Czas realizacji zmian
  • Częstotliwość zwolnienia
  • Czas przywrócić usługę
  • Zmień współczynnik niepowodzeń

Przyczyniają się one również do ogólnej wydajności organizacji. Oznacza to, że jeśli Twój dział IT radzi sobie świetnie z tymi wskaźnikami, zyski osiągają więcej $$$.

Ciągłe dostarczanie jest włączane przez te wskaźniki i zostało szczegółowo opisane w książce Ciągłe dostarczanie: niezawodne wydania oprogramowania dzięki automatyce kompilacji, testowania i wdrażania autorstwa Jez Humble.

W kontekście ciągłego dostarczania istnieje ważne rozróżnienie, które odróżnia je od ciągłego wdrażania . I to jest decyzja, kiedy zrobić wydanie funkcji (dla klientów).

Utrzymywanie zmian w mniejszym rozmiarze i wdrażanie (kopiowanie kodu) częściowo wypalonych funkcji do systemów produkcyjnych z wyłączoną flagą funkcji pozwala skrócić czas realizacji zmian .

Kiedy funkcje są w końcu skończone, wydanie wydania jest decyzją firmy. Być może wydanie nowej funkcji musi być dostosowane do jakiegoś marketingu lub wydania w innej części firmy, takiej jak funkcja w aplikacji mobilnej.

Funkcje można wypuszczać za pomocą eksperymentów A / B tylko dla części klientów lub określonych osób, a nawet bezpośrednio dla ogólnej dostępności (GA). Chociaż wydanie do GA jest często wykonywane tylko wtedy, gdy istnieje wystarczająca pewność, że funkcja działa zgodnie z oczekiwaniami. Można argumentować, że w rzeczywistości wpływa to na wyższą częstotliwość uwalniania .

To oddzielenie wydania i wdrożenia jest prawie niemożliwe do osiągnięcia bez przełączania flagi funkcji.

Oczywiście, gdy do wyłączenia funkcji nie jest wymagane wdrożenie , czas przywracania usługi jest znacznie skrócony.

A dzięki zastosowaniu flag funkcji, które uwalniają funkcje do niewielkiej części bazy klientów, można również znacznie poprawić wskaźnik zmiany wskaźnika awaryjności.


Tak więc prosty mechanizm zwany przełączaniem flagi funkcji umożliwia znacznie lepszą wydajność IT, a tym samym poprawia ogólną wydajność organizacji.

Świetny przykład tego, jak to się dzieje w prawdziwych firmach, można znaleźć na Flickr (jednym z pierwszych publicznych postów na ten temat) i na Etsy . Ale wielu innych przyjęło tę praktykę i długo o niej mówiło, na przykład słynna kultura inżynierii w filmach Spotify .

Etsy pokazują swoje wewnętrzne narzędzie do zarządzania flagami funkcji , zwanymi Katapultą, w wielu prezentacjach w Internecie. Intuit wypuścił narzędzie typu open source o nazwie Wasabi, które pomaga zarządzać flagami funkcji.

Evgeny
źródło
Merci za tę interesującą / opracowaną odpowiedź ... Jednak tylko dwie rzeczy: w linkowanym artykule jest mowa o „przełączaniu funkcji”, a nie „przełączaniu flagi funkcji” (jak napisałeś w pierwszym akapicie). Czy zgodziłbyś się, że są to synonimy? Jeśli nie to jaka jest różnica? Ponadto: czym są „eksperymenty A / B” (A = After i B = Before? Prawdopodobnie nie ...).
Pierre.Vriens
1
Zgadzam się, że są to synonimy. Po prostu wolę starać się jasno określić nazwę, więc nie ma dwuznaczności. Myślę, że „czym są eksperymenty a / b” to pytanie samo w sobie ... ale krótka odpowiedź jest taka, że ​​są to dwie odmiany, które są mierzone względem siebie, jak w linku „Etsy popisuje się”. Lub wyjaśnione na en.wikipedia.org/wiki/A/B_testing
Evgeny
OK, to ostatni szlif, na który czekałem / liczyłem, więc „zaakceptuj”.
Pierre.Vriens
@ Pierre.Vriens „Także: czym są„ eksperymenty A / B ”(A = After i B = Before?” - prawdopodobnie prawdopodobnie możesz to zapytać na tej super fajnej stronie DevOps SE;)
Dan Cornilescu
1

Ken Mugrage zamieścił pod moim pytaniem interesujący komentarz z linkiem do pouczającego wyjaśnienia „ Przełączania funkcji ”, wraz z jego podsumowaniem:

Przełączniki funkcji to potężna technika, która pozwala zespołom modyfikować zachowanie systemu bez zmiany kodu. Dzielą się one na różne kategorie użytkowania i ważne jest, aby wziąć pod uwagę tę kategoryzację podczas wdrażania przełączników i zarządzania nimi. Przełączniki wprowadzają złożoność. Możemy kontrolować tę złożoność, stosując inteligentne praktyki implementacji przełączników i odpowiednie narzędzia do zarządzania naszą konfiguracją przełączników, ale powinniśmy również dążyć do ograniczenia liczby przełączeń w naszym systemie.

Powyższe podsumowanie nie tylko pomaga zrozumieć, o co w tym chodzi, ale także zawiera przykłady wyjaśniające, dlaczego są używane . Po dokładniejszym przeanalizowaniu wydaje się, że „Przełączanie cech” i „Przełączanie flag funkcji” są w zasadzie synonimami.

Ale rozwiązanie (odpowiedź) na problem (pytanie) zmienia problem ... można zadać powiązane pytania, takie jak:

  • Jakie są zalety / wady korzystania z nich? To potężna koncepcja, ale także przerażająca, jeśli nie jest mądrze używana (i odpowiednio zabezpieczona) ...
  • Jakie mogą być przykłady (dobre i złe), w których są używane? Mogę wymyślić kilka z nich, niektóre z nich używałem już jakiś czas temu (jeszcze przed DevOps było czymś).
Pierre.Vriens
źródło