Funksjonsflagg vs. blågrønne distribusjoner: Mindre risiko og mer kontroll

En rask innføring: Blågrønne distribusjoner innebærer at brukertrafikken omdirigeres til et annet sett med servere som er vert for den oppdaterte applikasjonen. Funksjonsflagg er derimot kodebasert og gjør det mulig for brukerne å se en ny oppdatering ved å gjøre endringer på applikasjonsnivå.
Dette blogginnlegget gir en oversikt over hvordan funksjonsflagg løser lignende utfordringer som blågrønne distribusjoner, men med mer kontroll og mindre tidkrevende utvikling. La oss ta en titt:
Et sløvt verktøy: Blågrønne distribusjoner
I en blågrønn distribusjon utpeker du en del av serverne dine til å være vert for en ny versjon av applikasjonen, og en annen del av serverne dine til å være vert for den forrige versjonen av applikasjonen. I diagrammet nedenfor har den blå servergruppen den nåværende versjonen, mens den grønne gruppen er vert for den nye versjonen. For å eksponere brukerne for oppdateringen må du koordinere med driftsteamet for å flytte trafikken via lastbalanseringen (også kjent som trafikkruteren).
Hvis du oppdaterer flere funksjoner og oppdager en feil i en av dem, kan du enkelt gå tilbake til den forrige versjonen ved å flytte trafikken tilbake til den forrige versjonen eller den "blå gruppen" av servere. Blågrønne distribusjoner er imidlertid en sløv løsning på denne måten, fordi de ikke gir kontroll på funksjonsnivå. Du må rulle tilbake hele oppdateringen for å slå av bare én funksjon.
Fordeler og ulemper med blågrønne distribusjoner
- Fordeler: Det er enkelt å reversere en versjon ved å rulle tilbake trafikken til et blått miljø
- Fordeler: Krever ikke at du legger til ekstra kode i applikasjonen din
- Ulemper: Tilbakefører hele versjonen i stedet for bare den feilaktige funksjonen
- Ulempe: Muliggjør ikke granularitet på funksjonsnivå, bare endringer på utgivelsesnivå
- Ulempe: Deler opp trafikken på servernivå, og det er vanskelig å gi eller begrense tilgang til bestemte brukere
- Ulempe: Krever ofte at utviklere og driftspersonell koordinerer tilgangen til infrastrukturen
- Ulempe: Kan være tregere å bytte over ettersom lastbalanserere krever at alle tilkoblinger tømmes
En presis løsning: Distribusjon med funksjonsflagg
Med funksjonsflagg (også kjent som funksjonsbrytere) har hver funksjon i programvareoppdateringen sitt eget flagg, eller bryter, som kan styres uavhengig av den fullstendige utgivelsen. Med en tjeneste for funksjonsflagg, for eksempel Optimizely Rollouts, kan du opprette flaggene i funksjonsflaggplattformens brukergrensesnitt, og deretter pakke inn nye funksjoner eller kodebaner i koden for funksjonsflagget.
Hvis du oppdager en feil i en av funksjonene dine, trenger du ikke å rulle tilbake hele utgivelsen. Du kan ganske enkelt slå av den feilaktige funksjonen ved å slå av funksjonen i dashbordet for funksjonsadministrasjon uten å distribuere kode. På denne måten gir funksjonsflagg mer kontroll, er mer responsive og bidrar til å spare utviklingstid i forhold til blågrønne distribusjoner, som krever samarbeid på tvers av team og vedlikehold av flere versjoner på tvers av serverne dine.
Fordeler og ulemper med funksjonsflagg-distribusjoner
- Fordeler: Det er enkelt å slå av en enkelt funksjon med feil
- Pro: Muliggjør detaljering på funksjonsnivå
- Pro: Kan enkelt gi tilgang til funksjoner til enkeltbrukere, spesifikke målgrupper eller prosentandeler av brukerne dine
- Pro: Programvareingeniører kan gjøre endringer uten å involvere IT/DevOps
- Ulemper: Krever ekstra kode i applikasjonen og kan skape teknisk gjeld hvis du ikke har en god praksis for å fjerne eksisterende flagg
Ruller ut en oppdatering til bare en delmengde av brukerne
Fordelene ved å bruke funksjonsflagg til å lansere funksjoner blir enda tydeligere når du tenker på kanariflagg eller lansering av funksjoner til en minimal del av brukerbasen før du ruller ut til alle. Når du skal rulle ut en ny versjon med funksjonsoppdateringer, vil du sannsynligvis teste endringene med en liten gruppe for å sikre at alt fungerer som det skal. I programvareutvikling kalles dette test/utrulling eller trinnvis/faset utrulling.
Ved hjelp avkanariske tester kan ny kode eller nye funksjoner lanseres til en liten gruppe brukere for å verifisere eventuelle problemer med koden før den lanseres til et større publikum. Ved å begrense lanseringen til en utvalgt målgruppe kan du minimere sprengningsradiusen for nye utgivelser, og teamene kan validere funksjonalitet og ytelse før utrulling til alle brukere. Denne tilnærmingen bidrar også til å oppdage problemer som først blir synlige når de flyttes fra utviklings- eller staging-miljøer til produksjon.
Det er mulig å utføre kanariske tester gjennom både blågrønne distribusjoner og funksjonsflagging, selv om de samme utfordringene finnes når det gjelder å styre trafikken på servernivå.
Kanariske tester gjennom blågrønne distribusjoner: I stedet for å dirigere all trafikken fra den blå servergruppen som er vert for den nåværende versjonen av applikasjonen, til den grønne servergruppen, kan du flytte bare en prosentandel til den nye versjonen. Du har imidlertid fortsatt ikke kontroll på funksjonsnivå, og du må rulle tilbake hele versjonen hvis én funksjon er ødelagt. Hvis du vil ha mer kontroll over hvilke kunder som får tilgang til en funksjon, er det dessuten komplisert å definere regler på servernivå.
Canary tester gjennom funksjonsflagg-distribusjoner: Med funksjonsflagg kan du utføre en kanarifugl-test med hver funksjon som har en av/på-bryter, ved å velge den delen av trafikken du ønsker å eksponere for en gitt funksjon. Hvis en bestemt funksjon har en feil, kan du ganske enkelt slå den av i stedet for å gå tilbake til forrige versjon. Du kan også bruke målgruppemålretting for å aktivere funksjoner for bestemte kunder eller kundesegmenter (f.eks. bare kunder på gratisnivå).
Oppsummering
- Funksjonsflagg gir en mer detaljert og brukervennlig løsning for å redusere risikoen ved lansering av nye funksjoner
- Funksjonsflagg gjør det enklere for programvareutviklingsteam å administrere utgivelser og redusere behovet for driftsstøtte
- Funksjonsflagg kan brukes til å kjøre kanariske tester på brukernivå, noe som gir mer kontroll enn på servernivå
Hvis du ønsker å komme i gang med funksjonsflagg, kan du ta en titt på vår gratisløsning: Optimizely Rollouts.
- Utviklere, Håndtering av funksjoner
- Last modified: 25.04.2025 21:15:02