En snabb introduktion: blågröna distributioner innebär att användartrafik omdirigeras till en annan uppsättning servrar som är värdar för din uppdaterade applikation. Funktionsflaggor är däremot kodbaserade och gör det möjligt för användare att se en ny uppdatering genom att göra ändringar på applikationsnivå.
Det här blogginlägget ger en översikt över hur funktionsflaggor löser liknande utmaningar som blågröna distributioner men med mer kontroll och samtidigt som de kräver mindre ingenjörstid. Låt oss ta en titt:
Ett rakt på sak: Blågröna distributioner
I en blågrön distribution utser du en del av dina servrar till att vara värd för en ny version av din applikation och en annan del av dina servrar till att vara värd för den tidigare versionen av din applikation. I diagrammet nedan har den blå gruppen av servrar din nuvarande version, medan den gröna gruppen är värd för din nya version. För att exponera användare för uppdateringen måste du samordna med driftteamet för att flytta trafik via lastbalanseraren (även känd som trafikroutern).
Om du gör en release som uppdaterar flera funktioner och du upptäcker ett fel i en av dem, kan du enkelt återgå till den tidigare versionen genom att flytta trafiken tillbaka till den tidigare versionen eller den "blå gruppen" av servrar. Blågröna distributioner är dock en trubbig lösning på det här sättet eftersom de inte ger kontroll på funktionsnivå. Du måste rulla tillbaka hela uppdateringen för att stänga av bara en funktion.
För- och nackdelar med blågröna distributioner
En exakt lösning: Implementeringar av funktionsflaggor
Med funktionsflaggor (även kända som funktionsväxlare) har varje funktion i din programuppdatering sin egen flagga, eller växlare, som kan styras oberoende av den fullständiga versionen. Med en funktionsflaggningstjänst som Optimizely Rollouts kan du skapa flaggorna i funktionsflaggningsplattformens användargränssnitt och sedan lägga in nya funktioner eller kodsökvägar i funktionsflaggningskoden.
Den här gången, om du upptäcker ett fel i en av dina funktioner, behöver du inte återställa hela versionen. Du kan helt enkelt stänga av den problematiska funktionen genom att stänga av funktionen i din instrumentpanel för funktionshantering utan en koddistribution. På så sätt ger funktionsflaggor mer kontroll, är mer responsiva och hjälper till att spara ingenjörstid jämfört med blågröna distributioner, som kräver samarbete mellan team och underhåll av flera uppsättningar versioner på dina servrar.
För- och nackdelar med funktionsflaggningsdistributioner
Att lansera en uppdatering till endast en delmängd av användarna
Kraften i att använda funktionsflaggor för att släppa funktioner blir ännu tydligare när man funderar på canary-utgåvor eller utgåvor av funktioner till en minimal delmängd av din användarbas innan du lanserar dem till alla. När du lanserar en ny version med funktionsuppdateringar vill du förmodligen testa ändringarna med en liten grupp för att se till att allt fungerar korrekt. Inom mjukvaruutveckling kallas detta för canary-testning/distributioner eller etappvisa/fasvisa utrullningar.
Canary-tester gör det möjligt att släppa ny kod eller funktioner till en liten delmängd av användare för att verifiera eventuella problem med koden innan den släpps till en större publik. Genom att begränsa lanseringen till en utvald publik kan du minimera explosionsradien för nya utgåvor, och team kan validera funktionalitet och prestanda innan de rullas ut till alla användare. Denna metod hjälper också till att upptäcka problem som bara blev synliga när de flyttades från utvecklings- eller stagingmiljöer till produktion.
Det är möjligt att utföra canary-tester genom både blågröna distributioner och funktionsflaggning, även om samma utmaningar finns med att dirigera trafik på servernivå.
Canary-tester genom blågröna distributioner: Istället för att dirigera all din trafik från den blå gruppen av servrar som är värd för den aktuella versionen av din applikation till den gröna gruppen av servrar, kan du bara flytta en procentandel till den nya versionen. Du har dock fortfarande inte kontroll på funktionsnivå och behöver rulla tillbaka hela versionen om en funktion är trasig. Om du vill ha mer kontroll över vilka kunder som får åtkomst till en funktion är det också komplicerat att definiera regler på servernivå.
Canary-tester genom funktionsflaggningsdistributioner: Med funktionsflaggor kan du utföra ett canary-test med varje funktion som har en på/av-knapp genom att välja den del av trafiken du vill exponera för en viss funktion. Om en viss funktion har ett fel kan du helt enkelt stänga av den istället för att återgå till den tidigare versionen. Du kan också använda målgruppsinriktning för att aktivera funktioner för specifika kunder eller kundsegment (t.ex. bara kunder på gratisnivån).