Introducing Optimizely Opal
an all-new AI platform. See how it works
Optimization glossary

Funksjonsflagg

Hva er funksjonsflagg?

Funksjonsflagg (også kjent som feature toggles eller feature switches) er en teknikk for programvareutvikling og produkteksperimentering som slår visse funksjoner av og på under kjøring, uten å distribuere ny kode. Dette gir bedre kontroll og mer eksperimentering over hele livssyklusen til funksjoner.

Ideen bak funksjonsflagg er å bygge inn betingede funksjonsgrener i koden for å gjøre logikk tilgjengelig kun for visse grupper av brukere om gangen. Hvis flagget er "på", kjøres ny kode, og hvis flagget er "av", hoppes koden over.

Funksjonsflagg, også kalt "release toggles", er en beste praksis innen DevOps, og forekommer ofte i distribuerte versjonskontrollsystemer.

Hvordan fungerer funksjonsflagg?

Funksjonsflagg er egentlig betingede setninger i koden din som kontrollerer om bestemte funksjoner eller kodeblokker skal kjøres. Her er en enkel oversikt:

  1. Betingede forgreninger: Utviklere legger til if/else-setninger i koden der nye funksjoner implementeres.
  2. Flaggstatus: Hvert funksjonsflagg har en status (på eller av) som kan styres eksternt, ofte gjennom en konfigurasjonsfil eller et administrasjonsgrensesnitt.
  3. Utførelse avkode: Den nye funksjonskoden kjøres hvis flaggstatusen er på. Hvis flagget er "av", blir koden forbigått, og den gamle atferden (eller ingen atferd) forblir på plass.

Dette gjør det mulig for team å distribuere ny kode til produksjon, men holde funksjoner skjult til de er klare til å lanseres, helt uten ekstra kodedistribusjoner.

Tenker du på utrullingsstrategi for funksjonsflagg? Hver strategi for utrulling av funksjonsflagg tjener ulike formål og kan kombineres etter behov.

  • Trinnvis utrulling: Gradvis lansering for å øke brukerandelen
  • Kanariske tester: Begrenset lansering til en liten, representativ gruppe
  • Målrettede utrullinger: Lansering til spesifikke brukersegmenter (f.eks. etter sted)
  • Beta-testing Lansering til brukere som har meldt seg på for å få tilbakemelding
  • Mørk lansering: Aktiveres i produksjon, men skjules for brukerne
  • Prosentvis utrulling: Øke brukernes eksponering gradvis

Brukstilfeller og fordeler med funksjonsflagg

Det er mange fordeler med å innlemme produkteksperimenter og funksjonskoblinger i lanseringsprosessen. Følgende er noen vanlige bruksområder:

  1. Test i produksjon

    Med funksjonsflagg kan utviklingsteamene teste nye funksjoner i produksjon, samtidig som de reduserer risikoen for en dårlig lansering ved å tilby en måte å raskt rulle tilbake funksjonen på om nødvendig via en nødstopp. Fordi det ofte er umulig å simulere produksjonsmiljøet fullstendig i staging, gjør funksjonsflagg det mulig å validere funksjonaliteten til nye funksjonsutgivelser i den virkelige verden, samtidig som risikoen minimeres. Funksjonsflagg oppmuntrer også til trunk-basert utvikling, noe som bidrar til å forhindre sammenslåingskonflikter på grunn av avvikende kodebaner.
  2. Kanarifugl-utgivelser

    Et annet bruksområde for funksjonsflagg er å la et team teste en ny funksjon på en undergruppe av sluttbrukere for å se hvordan den fungerer før den rulles ut til et bredere publikum. Canary testing bidrar til å begrense risikoen ved å lansere en funksjon til hele brukerbasen, og gjør at du raskt kan rulle tilbake en funksjon ved å slå den av eller på, i stedet for å måtte gå gjennom en ny distribusjonssyklus.
  3. Raskere utgivelsessykluser

    Ved hjelp av funksjonsflagg kan et team endre et systems oppførsel uten å gjøre forstyrrende kodeendringer i live-koden. En av de største fordelene med funksjonsflagg er derfor at de er enkle å distribuere i utviklingsprosessen. Funksjonsflagg frikobler livssyklusadministrasjon av funksjoner fra distribusjon av kode, noe som frigjør tid for utviklingsteamet til å jobbe med andre oppgaver.
  4. Tilbakestilling / kill-switch

    Det er like enkelt å aktivere eller deaktivere nye funksjoner ved hjelp av funksjonsflagg som å slå dem av eller på eller redigere en konfigurasjonsfil, i stedet for å måtte distribuere på nytt og gå gjennom en langvarig kodepush. Hvis det oppdages en feil i en ny funksjon, kan den tilbakestilles umiddelbart uten å måtte røre kildekoden. Dette kan være spesielt nyttig for utviklere av mobilapper, som kan bruke funksjonsflagg til å lansere eller tilbakekalle nye funksjoner uten å måtte gå gjennom den langvarige appbutikkprosessen.
  5. A/B-testing på serversiden

    Utviklere kan implementere A/B-tester ved hjelp av funksjonsflagg ved å aktivere en funksjon for halvparten av et segment av brukere, og deaktivere funksjonen for den andre halvparten, og se hvordan de to fungerer i forhold til hverandre for en bestemt måling (for eksempel appbruk eller kjøp). Fordi testen er implementert i backend gjennom kode, er det ingen ventetid, sammenlignet med hva man kan oppleve med en test som er implementert via JavaScript på klientsiden.

    Med funksjonsflagg kan produktsjefer og andre som ikke er ingeniører, A/B-teste ulike funksjoner i produkter eller systemer uten behov for kodedistribusjon. Testene kan også målrettes mot spesifikke segmenter av brukerbasen, for eksempel brukere som bor i et bestemt land eller som passer til en bestemt brukerprofil. Ledende teknologiselskaper som Google, Facebook, Amazon og Netflix tester ofte nye funksjoner før de distribuerer dem til hele brukerbasen.
  6. Gating av funksjoner

    Funksjonsflagg kan brukes til å implementere målrettede utrullinger av funksjoner til en spesifikk delmengde av brukerne. Dette kan være nyttig for å A/B-teste funksjoner med bestemte segmenter av målgruppen, men det kan også brukes til å lansere funksjoner til bare en undergruppe av brukerne, for eksempel ved å gi brukere på bedriftsnivå tilgang til funksjoner som ikke er tilgjengelige på lavere nivåer. Ved å implementere funksjonsgating ved hjelp av flagg kan du enkelt rulle ut funksjoner til flere brukere i fremtiden, etter hvert som produktet ditt utvikler seg.
  7. Kontinuerlig distribusjon

    En annen stor fordel med funksjonsflagg er muligheten til rask læring. Med funksjonsflagging kan bedrifter kontinuerlig levere og distribuere programvare til brukerne sine på en raskere måte. Ved hjelp av funksjonsflagg kan bedrifter foreta gradvise utrullinger av funksjoner, fikse feil i koden uten å distribuere den på nytt, få en mer strømlinjeformet utviklingssyklus og enklere gjøre tilbakeføringer av koden.
  8. Utviklingsprosessen for funksjonsflagg

    Det trenger ikke å være en komplisert prosess å implementere funksjonsflagg i koden. Med en tjeneste for funksjonsflagg som Optimizely trenger du bare å installere SDK-en, opprette flaggene på plattformen for funksjonsflagg og deretter pakke inn nye funksjoner eller kodebaner i koden din i flaggene.

    Det er alt som skal til for å aktivere funksjonsflagg, og nå kan den nye funksjonen slås av eller på via en konfigurasjonsfil, eller til og med via et visuelt grensesnitt på plattformen for funksjonsflagging. Dette kan gjøre det mulig for ikke-tekniske brukere, for eksempel produktsjefer, å kjøre eksperimenter med nye funksjoner eller slå av funksjoner, uten å måtte stole utelukkende på utviklingsteamet.

    Når funksjonsflaggene er i drift, er det også viktig å ta hensyn til forvaltningen av funksjonsflaggene. For å unngå den tekniske gjelden som oppstår når funksjonsflagg blir liggende i koden etter at de har utspilt sin rolle, er det viktig å gjennomgå flaggene jevnlig og fjerne dem som ikke lenger er nødvendige. Denne prosessen kan automatiseres i mange plattformer for funksjonsflagging.
  9. Funksjonsflagg og kontinuerlig levering

    Kontinuerlig levering er en disiplin innen programvareutvikling som ble lansert av den innflytelsesrike programvareutvikleren Martin Fowler, og som innebærer at programvare kan settes i produksjon når som helst. Den har blitt tatt i bruk av ledende programvareselskaper over hele verden, der det nå forventes at teamene raskt leverer programvare som er stabil og feilfri til brukerbasen.

    Funksjonsflagging forbedrer CI/CD ved å gjøre "kontinuerlig" mer oppnåelig. Funksjonsflagg og funksjonskoblinger er en nøkkelkomponent i implementeringen av kontinuerlig levering, og gjør det mulig å skille utrulling av funksjoner fra distribusjon av kode. Ufullstendige funksjoner kan slås sammen i produksjonskodebasen, men skjules bak funksjonsflagg.

    Med kontinuerlig levering og håndtering av funksjonsflagg kan et team lansere, kontrollere og måle funksjonene sine i stor skala.

Livssyklus for funksjonsflagg

1. Opprett og konfigurer funksjonsflagg:

  • Definer flagget i kodebasen
  • Konfigurer flagget i funksjonshåndteringssystemet
  • Konfigurer innledende regler og målrettingskriterier

2. Distribuere og aktivere flagg i produksjon:

  • Publiser kode med det nye funksjonsflagget til produksjon
  • Aktiver flagget for de opprinnelige målgruppene eller prosentandelen av brukere

3. Overvåk ytelsen og samle inn analyser:

  • Spor brukernes interaksjon med den nye funksjonen
  • Analyser innvirkningen på nøkkeltall (f.eks. konverteringsfrekvens, brukerengasjement)
  • Samle inn tilbakemeldinger fra brukere som har blitt eksponert for funksjonen

4. Senk og fjern flagg når de ikke lenger er nødvendige:

  • Fjern flagget når en funksjon er ferdig lansert eller utdatert
  • Rydd opp i relatert kode for å forhindre teknisk gjeld
  • Oppdater dokumentasjonen for å gjenspeile endringene

Funksjonsflagg i Optimizely Feature Experimentation

Produkt- og utviklingsteam kan nå bruke Optimizely Feature Experimentations funksjonshåndtering til å implementere funksjonsflagg. Dette gir den samme fleksibiliteten som produktteamene har brukt i sine eksperimenteringsprogrammer for å validere hypoteser før de lanserer nye produkter, funksjoner og opplevelser for alle.

Begge teasmer kan fungere sømløst sammen med kontinuerlig integrasjon og kontinuerlig levering. Hele selskaper vil kunne dra nytte av raskere utviklingssykluser og metoder for funksjonsstyring, som flagg eller vippepunkter for å redusere risiko.

Optimizely-kunder som eksperimenterer på serversiden, kan følge i fotsporene til verdens største programvareselskaper (som Amazon, Google og Facebook) for å utvikle brukeropplevelsene sine, A/B-teste for å finne den best mulige opplevelsen, og deretter bruke funksjonsflagg for å kontrollere utrullingen.

Ved først å kjøre A/B-tester på et lite segment av trafikken, kan ethvert team finne den beste versjonen av en ny funksjon, eller måle om den nye funksjonen virkelig er en forbedring.

Optimizely tilbyr også gratis funksjonsflagg gjennom Optimizely Rollouts, en helt gratis løsning (i motsetning til konkurrenter som LaunchDarkly) for kontrollerte funksjonsutgivelser i produktet eller appen din. Rollouts tilbyr en rekke SDK-er på Github for noen av de mest populære programmeringsspråkene og rammeverkene, inkludert Node, Python, Ruby, Go, React, Swift og C#.