Feature flagging är en kostnadseffektiv och enkel programmeringsmetod som gör det möjligt för utvecklare att slå på eller stänga av funktionalitet i en programvara utan att behöva släppa eller ändra produktkoden. Att omsluta kod med feature-flaggor möjliggör att frikoppla funktionsutrullning från koddistribution.
I en tidigare artikel om progressiv leverans nämnde vi feature flagging för ytterligare styrning av inkrementella leveranser och tillgänglighetskontroll. En feature-flagga kallas också en feature-toggle eller feature-switch.
Även om tekniken inte är helt oproblematisk och ibland kritiserad (se hantering av feature-flaggor längre ner) så har den sina fördelar. Feature flagging kan erbjuda olika fördelar genom de olika sätt det kan implementeras på. Nedan följer några exempel på användningsområden för feature flagging:
I korthet innebär feature flagging att omsluta kodförändringar eller delar av koden med en flagga som anger vilka attribut som behöver vara uppfyllda för att koden ska köras. Feature flagging ändrar runtime-beteendet för en applikation baserat på hur den är konfigurerad. När en funktionalitet har flaggats i koden kan en administratör använda olika metoder för att avgöra vilka användare som ser eller får tillgång till den.
Feature-flaggor kan konfigureras på olika sätt, till exempel genom:
Feature-flaggor introducerar villkorad logik och nya abstraktioner av koden och de skapar en stor testbörda. Därför måste teamet proaktivt ta bort flaggor som inte längre behövs för att hålla mängden flaggor hanterbara.
I och med att man vanligtvis använder många feature-flaggor på samma gång kan den ökade komplexiteten bli problematisk. Den extra komplexitet som kan uppstå är ökad trafik och att koden blir svårare att läsa, förstå, testa, uppdatera och underhålla.
Organisationer bör i förväg ha tänkt igenom hur feature-flaggor bör hanteras. Några exempel på saker att i förväg tänka igenom och bestämma är:
Dessa faktorer tillsammans med att användningsområdet för olika feature-flaggor kan variera gör användandet komplext. För att underlätta hanteringen används ofta featurehanterings-plattformar eller featureflagg-hanteringssystem. Dessa är till för att hjälpa utvecklare att organisera och effektivisera feature-flaggkonfigurationer och hantering.
De flesta feature-flagghanteringssystem inkluderar flaggändringsvarningar, utrullningshantering, och möjlighet för panikknapp. Vissa feature-flagghanterings-system är open-source och är fria men har bara stöd för ett eller två programmeringsspråk, medan andra tar ut en månatlig prenumerationsavgift och erbjuder stöd för flera språk och tekniker.
Är du nyfiken på continuous och vill veta mer om kontinuerlig utveckling? Vilka effekter det kan ge organisationer och hur man påbörjar en förflyttning för att uppnå dessa. Här kan du ta del av vårt webinar där Viktor pratar om det kontinuerliga arbetssättet som inkluderar CI, CD och CQA (Continuous Quality Assurance) och att det snart kommer vara nästintill ett måste för organisationer att gå åt det hållet. Speciellt om du jobbar med mjukvaruutveckling av produkter som ska gå till en slutanvändare.
Kategori:Teknik