Koden og evalueringen skal først udrulles. Derefter kan eksponeringen ændres uden ny kodeudrulning, hvis applikationen henter flagkonfigurationen som planlagt.
Begreb
Feature flag
En feature flag, også kaldet en feature toggle, er et kontrolpunkt, som ved kørsel vælger mellem alternative kodeveje. Den kan ændre en allerede udrullet applikations adfærd uden ny kodeudrulning.
Hvorfor er begrebet vigtigt?
Feature flags adskiller kodeudrulning fra frigivelse. Et team kan udrulle inaktiv kode, aktivere funktionen for interne brugere eller få procent af trafikken og øge eksponeringen, mens fejlrate, svartid og forretningsmålinger overvåges.
Ved problemer kan flaget ofte deaktiveres hurtigt. Det kræver, at den gamle kodevej virker, og at ændringen ikke har skabt uforenelige data eller andre varige følger.
Typisk misforståelse
En feature flag erstatter ikke test eller rollback. Begge kodeveje og skiftet mellem dem skal testes, og deaktivering kan ikke fortryde databaseændringer, sendte beskeder eller andre varige handlinger.
Et flag i en klientapplikation kan aflæses eller ændres af brugeren. Følsomme funktioner skal derfor stadig beskyttes på serversiden.
Eksempel
En webshop udruller et nyt betalingsflow bag flaget new-checkout, der som udgangspunkt er slået fra. Flowet aktiveres først for medarbejdere og derefter for 5 procent af kunderne.
Stiger fejlprocenten eller svartiden over en aftalt grænse, slås flaget fra. Når løsningen er stabil for alle, fjernes flaget og den gamle kodevej.
Best practice
Giv flaget et tydeligt navn, formål, ejer og en sikker standardværdi.
Test begge tilstande, skift mellem dem og adfærd ved fejl i flagtjenesten.
Begræns retten til at ændre produktionsflag, og registrér ændringer i et audit log.
Brug gradvis aktivering sammen med målinger og på forhånd aftalte stopkriterier.
Undgå ændringer, som gør den gamle kodevej ubrugelig, mens flaget kan deaktiveres.
Angiv en udløbs- eller fjernelsesdato, og fjern midlertidige flags og død kode.
Frequently asked questions
Nej. En feature flag vælger typisk kodevej i samme applikationsversion, mens en canary deployment sender begrænset trafik til en ny version. Metoderne kan kombineres.
Nogle driftsflags er langlivede, men frigivelsesflags bør fjernes efter fuld aktivering eller opgivelse. Ellers bliver systemet sværere at teste og vedligeholde.
Nej. Flaget kan styre, om en funktion vises eller vælges, men serveren skal stadig kontrollere brugerens identitet og rettigheder ved hver beskyttet handling.