Inleiding tot wisselknoppen voor functies

Voltooid

Met functievlagmen kunt u wijzigen hoe ons systeem werkt zonder belangrijke wijzigingen aan te brengen in de code. Er is slechts een kleine configuratiewijziging vereist. In veel gevallen is het ook slechts voor een paar gebruikers.

Functievlagmen bieden een oplossing voor de noodzaak om nieuwe code naar de trunk te pushen en te implementeren, maar het is nog niet functioneel.

Ze worden meestal geïmplementeerd als de waarde van variabelen die worden gebruikt om voorwaardelijke logica te beheren.

Stel dat uw team werkt in de hoofdbranch van een banktoepassing.

U hebt besloten dat het de moeite waard is om al het werk in de hoofdvertakking te laten uitvoeren om rommelige bewerkingen van samenvoegen later te voorkomen.

Toch moet u ervoor zorgen dat belangrijke wijzigingen in de renteberekeningen kunnen plaatsvinden en dat mensen elke dag afhankelijk zijn van die code.

Erger nog, het duurt weken voordat de wijzigingen zijn voltooid. U kunt de hoofdcode voor die periode niet laten breken.

Een functievlag kan u helpen deze te omzeilen.

U kunt de code wijzigen zodat andere gebruikers die niet over de functievlag beschikken, de oorspronkelijke renteberekeningscode gebruiken.

De leden van uw team die aan de nieuwe renteberekeningen werken en die zijn ingesteld om de functievlag te zien, hebben de nieuwe renteberekeningscode.

Het is een voorbeeld van een bedrijfsfunctievlag die wordt gebruikt om bedrijfslogica te bepalen.

Het andere type functievlag is een releasevlag. Stel dat u, nadat u het werk aan de renteberekeningscode hebt voltooid, u nerveus bent over het publiceren van een nieuwe code voor alle gebruikers tegelijk.

U hebt een groep gebruikers die beter omgaan met nieuwe code en problemen als ze zich voordoen, en deze personen worden vaak Canaries genoemd.

De naam is gebaseerd op het oude gebruik van de Canaries in kolenmijnen.

U wijzigt de configuratie zodat de Canary-gebruikers ook de functievlag hebben ingesteld en ze beginnen ook de nieuwe code te testen. Als er problemen optreden, kunt u de vlag snel opnieuw uitschakelen.

Er kan een andere releasevlag worden gebruikt voor AB-tests. Misschien wilt u weten of een nieuwe functie het sneller maakt voor gebruikers om een taak te voltooien.

U kunt de helft van de gebruikers laten werken met de oorspronkelijke versie van de code en de andere helft met de nieuwe codeversie.

Vervolgens kunt u het resultaat rechtstreeks vergelijken en bepalen of de functie de moeite waard is. Functievlagmen worden in plaats daarvan functieknoppen genoemd.

Door nieuwe functies beschikbaar te maken door tijdens runtime alleen een switch te spiegelen, kunnen we nieuwe software implementeren zonder nieuwe of gewijzigde functionaliteit beschikbaar te maken voor de eindgebruiker.

De vraag is, welke strategie wilt u gebruiken bij het vrijgeven van een functie aan een eindgebruiker.

  • De functie zichtbaar maken voor een segment van gebruikers, zodat u kunt zien hoe de nieuwe functie wordt ontvangen en gebruikt.
  • De functie zichtbaar maken voor een willekeurig geselecteerd percentage gebruikers.
  • De functie zichtbaar maken voor alle gebruikers tegelijk.

De eigenaar van het bedrijf speelt een cruciale rol in het proces en u moet nauw samenwerken met hen om de juiste strategie te kiezen.

Net als in alle andere implementatiepatronen die in de inleiding worden genoemd, is het belangrijkste onderdeel altijd kijken naar hoe het systeem zich gedraagt.

Het idee van het scheiden van functie-implementatie van functieblootstelling is aantrekkelijk en iets dat we willen opnemen in onze continue leveringspraktijk.

Het helpt ons met stabielere releases en betere manieren om terug te keren wanneer er problemen optreden wanneer we een nieuwe functie hebben die problemen produceert.

We schakelen deze opnieuw uit en maken vervolgens een hotfix. Door implementaties te scheiden van het onthullen van een functie, maakt u de mogelijkheid om een dag vrij te geven wanneer de nieuwe software niet van invloed is op het systeem dat al werkt.

Wat zijn functieknoppen?

Wisselknoppen voor functies worden ook wel functie-flippers, functievlagmen, functieswitches, voorwaardelijke functies enzovoort genoemd.

Naast de kracht die ze u aan de bedrijfszijde geven, bieden ze ook een voordeel aan de ontwikkelingszijde.

Functieknoppen zijn ook een goed alternatief voor vertakkingen. Vertakking is wat we doen in ons versiebeheersysteem.

Om functies geïsoleerd te houden, onderhouden we een afzonderlijke vertakking.

Wanneer we willen dat de software in productie is, voegen we deze samen met de releasebranch en implementeren we deze.

Met functieknoppen bouwt u nieuwe functies achter een wisselknop. Uw functie is 'uitgeschakeld' wanneer er een release plaatsvindt en mag niet worden blootgesteld aan of van invloed zijn op de productiesoftware.

Een wisselknop voor functies implementeren

In de puurste vorm is een functie-wisselknop een IF-instructie.

Feature Toggle.

Wanneer de schakelaar is uitgeschakeld, wordt de code uitgevoerd in de IF, anders de ELSE.

U kunt het veel intelligenter maken, de functie in-/uitschakelen vanuit een dashboard of mogelijkheden voor het bouwen van rollen, gebruikers enzovoort.

Als u functie-wisselknoppen wilt implementeren, zijn er veel verschillende frameworks commercieel beschikbaar als Open Source.

Zie ook Verkennen hoe u uw functies geleidelijk beschikbaar maakt in productie voor sommige of alle gebruikers voor meer informatie.