En rask innføring: blågrønne distribusjoner innebærer å omdirigere brukertrafikk til et annet sett med servere som er vert for den oppdaterte applikasjonen din. Funksjonsflagg er derimot kodebaserte og lar brukere se en ny oppdatering ved å gjøre endringer på applikasjonsnivå.
Dette blogginnlegget vil gi en oversikt over hvordan funksjonsflagg løser lignende utfordringer som blågrønne distribusjoner, men med mer kontroll og samtidig som de krever mindre ingeniørtid. 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 din og en annen del av serverne dine til å være vert for den forrige versjonen av applikasjonen din. I diagrammet nedenfor har den blå gruppen med servere din nåværende versjon, mens den grønne gruppen er vert for den nye versjonen. For å eksponere brukere for oppdateringen må du koordinere med driftsteamet for å flytte trafikk via lastfordeleren (også kjent som trafikkruteren).
Hvis du lager en utgivelse som oppdaterer flere funksjoner og du 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
En presis løsning: Implementering av funksjonsflagg
Med funksjonsflagg (også kjent som funksjonsvekslere) har hver funksjon i programvareoppdateringen sitt eget flagg, eller veksler, som kan kontrolleres uavhengig fra den fullstendige utgivelsen. Med en funksjonsflaggtjeneste som Optimizely Rollouts, kan du opprette flaggene i funksjonsflaggplattformens brukergrensesnitt, og deretter pakke inn nye funksjoner eller kodebaner i funksjonsflaggkoden.
Hvis du oppdager en feil i en av funksjonene dine denne gangen, 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 en kodedistribusjon. På denne måten gir funksjonsflagg mer kontroll, er mer responsive og bidrar til å spare ingeniørtid kontra blågrønne distribusjoner, som krever samarbeid på tvers av team og vedlikehold av flere settversjoner på tvers av serverne dine.
Fordeler og ulemper med funksjonsflaggdistribusjoner
Utrulling av en oppdatering til bare et delsett av brukere
Kraften ved å bruke funksjonsflagg for å lansere funksjoner blir enda tydeligere når man tenker på canary-utgivelser eller utgivelsesfunksjoner til et minimalt delsett av brukerbasen din før du ruller dem ut til alle. Når du ruller ut en ny utgivelse med funksjonsoppdateringer, vil du sannsynligvis prøvekjøre endringene med en liten gruppe for å sikre at alt fungerer som det skal. I programvareutvikling kalles dette canary-testing/distribusjoner eller trinnvise/fasede utrullinger.
Canary-tester tillater at ny kode eller funksjoner lanseres til et lite utvalg av brukere for å bekrefte eventuelle problemer med koden før den lanseres til et større publikum. Ved å begrense utgivelsen til et utvalgt publikum kan du minimere lanseringsradiusen for nye utgivelser, og team kan validere funksjonalitet og ytelse før de rulles ut til alle brukere. Denne tilnærmingen bidrar også til å oppdage problemer som bare ble synlige da de ble flyttet fra utviklings- eller stagingmiljøer til produksjon.
Det er mulig å utføre canary-tester gjennom både blågrønne distribusjoner og funksjonsflagging, selv om de samme utfordringene eksisterer med å dirigere trafikk på servernivå.
Canary-tester gjennom blågrønne distribusjoner: I stedet for å dirigere all trafikken din fra den blå gruppen med servere som er vert for den nåværende versjonen av applikasjonen din til den grønne gruppen med servere, kan du bare flytte en prosentandel til den nye versjonen. Du har imidlertid fortsatt ikke kontroll på funksjonsnivå og må rulle tilbake hele utgivelsen hvis én funksjon er ødelagt. Hvis du vil ha mer kontroll over hvilke kunder som får tilgang til en funksjon, er det også komplisert å definere regler på servernivå.
Kanari-tester gjennom funksjonsflagg-distribusjoner: Med funksjonsflagg kan du utføre en kanari-test med hver funksjon som har en av/på-bryter ved å velge den delen av trafikken du vil 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ået).