Bild: Optimizely
- Konfigurera miljöer
Skapa identiska blå och gröna miljöer.
- Driftsätt uppdateringar i grön
Implementera ändringar i den gröna miljön.
- Testning och validering
Genomför omfattande testning i den gröna miljön.
- Verifiering och kvalitetskontroller
Verifiera uppdateringar för prestanda och kompatibilitet.
- Övergång
Dirigera om live-trafik från blå till grön snabbt.
- Övervakning (efter driftsättning)
Övervaka kontinuerligt grön för problem eller avvikelser.
- Återställning (vid behov)
Återgå snabbt till den stabila blå miljön om problem uppstår.
- Uppgradera grön till blå
När stabil, gör den gröna miljön till ny live-produktion (blå).
- Städa upp och förbered för nästa cykel
Återställ och förbered en ny grön miljö för framtida uppdateringar.
Denna strömlinjeformade process säkerställer en smidig övergång mellan miljöer och minimerar driftstopp och risker vid uppdateringar eller ändringar i live-systemet.
Användningsfall för blågrön driftsättning
Återställningar
En av de viktigaste fördelarna med blågrön driftsättning är katastrofåterställning. Eftersom det finns två identiska miljöer för produktion, om nya ändringar rullas ut till en (säg den blå versionen) och problem upptäcks, kan en router bara byta tillbaka till den andra miljön (grön version) som har den gamla versionen av koden utan driftstopp.
Kontinuerlig integration/kontinuerlig leverans (CI/CD-pipeline)
Ett av målen med kontinuerlig integration (en DevOps-teknik) är att få mjukvara live så snart som möjligt och påskynda utvecklingsprocessen genom automatiserad testning och frekvent kodintegration. Blågrön driftsättning är en driftsättningsstrategi som kan hjälpa med detta mål genom att tillåta fler kod-pushar till produktion och samtidigt sänka risken för nya versioner.
Testning i produktion
Det finns ofta små kompatibilitetsskillnader mellan testmiljön och produktion, oavsett hur mycket arbete som läggs ner på att göra dem identiska. För DevOps-team kan detta leda till edge cases och buggar som inte kan upptäckas förrän koden har skickats till produktion. Blågrön driftsättning möjliggör testning i produktion genom att skicka ny kod till den faktiska produktionsmiljön och se hur den presterar, innan den smidigt övergår till produktionstrafik och faktiska användare.
Canary-driftsättning
En canary-release är när nya ändringar släpps till ett litet segment av användarbasen, snarare än att rullas ut till alla. Ungefär som en kanariefågel i en kolgruva kan detta lilla kontrollerade test användas för att avgöra om det finns fatala fel i den nya versionen av koden. Blågrön driftsättning kan användas för sådan canary testing genom att helt enkelt låta routern dirigera en procentandel av trafiken till en ny version av koden för att se hur den presterar med live-trafik, innan ändringen rullas ut till 100 % av användarna.
A/B-testning
Ett annat möjligt användningsfall för blågrön driftsättning är A/B-testning. I detta användningsfall laddar du den nya versionen av koden till den blå miljön och dirigerar 50 % av användartrafiken till den blå versionen kontra den ursprungliga gröna versionen. Sedan kan du övervaka hur de två miljöerna presterar i termer av dina nyckeltal och använda statistisk analys för att fastställa den exakta påverkan av din nya applikation.
Lastbalansering
Ett annat möjligt användningsfall för blågrön driftsättning är lastbalansering. Om den blå/gröna driftsättningen är konfigurerad på ett sätt så att de två produktionsmiljöerna finns på separata servrar (snarare än en virtuell maskin) kan en router enkelt balansera trafik mellan de blå och gröna versionerna av produktionsmiljön eftersom de är funktionellt identiska.
Vad är fördelarna med blågrön driftsättning?
Här är några av de viktigaste fördelarna med denna driftsättningsmetod:
- Noll driftstopp: Du kan uppdatera applikationen i produktion utan driftstopp med två identiska kopior som körs. Du kan byta trafik från en till den andra.
- Återställning: Om du stöter på problem med den nya versionen av applikationen kan du enkelt återgå till den tidigare versionen.
- Minskad risk: Du kan testa den nya versionen av applikationen i den gröna miljön innan du driftsätter den i produktion.
- Kontrollerad driftsättning: Få kontroll över driftsättningsprocessen. Bestäm hur mycket trafik som ska dirigeras till den gröna miljön och övervaka eventuella problem innan du byter.
- Skalbarhet: Blågrön driftsättning kan enkelt skalas för att hantera mer trafik genom att lägga till fler servrar i den gröna miljön.
Exempel på blågrön driftsättning
Säg att ditt utvecklingsteam arbetar med en webbapp och vill lansera en ny funktion men vill eliminera driftstopp och ha en smidig övergång till den nya koden. Utöver din testmiljö skulle du sätta upp två identiska produktionsmiljöer (en "blå version" och en "grön version") med en router som dirigerar trafik till den gröna versionen.
Sedan kan du skicka de nya ändringarna till den blå versionen av produktionsmiljön och se hur den presterar i en faktisk produktionsmiljö. Det kan visa sig att det finns buggar som bara uppstår i produktionsmiljön, i vilket fall du enkelt kan återgå till utveckling utan påverkan på användarna.
När du är nöjd med prestandan hos den nya versionen av applikationen kan du börja dirigera en procentandel av användartrafiken till den blå miljön för att köra ett canary-test på faktiska användare. Om inga problem upptäcks kan du dirigera 100 % av trafiken till den nya miljön, vilket leder till en smidig funktionslansering.
Om problem upptäcks efter att övergången har gjorts kan du återigen enkelt dirigera trafik tillbaka till den gröna miljön som har den tidigare versionen av koden för att utföra en enkel återställning.
När du är övertygad om att det inte finns några problem med den nya koden kan du klona den blå miljön till den gröna, så att du återigen har två identiska produktionsmiljöer. Du kan sedan fortsätta i utvecklingscykeln, eller använda den andra servern som lastbalanserare vid behov om du ser en ökning i användning.
Vad är nackdelarna med blågrön driftsättning?
Här är några av de viktigaste nackdelarna:
- Fler resurser: Det kräver att du underhåller två identiska miljöer, vilket kan vara dyrare än andra driftsättningsstrategier.
- Mer koordinering: Du måste koordinera driftsättningen av den nya versionen av applikationen till den gröna miljön, samt övergången från blå till grön.
- Långsammare övergång: Det kan vara långsammare att byta till olika delmängder än andra driftsättningsstrategier, som A/B-testning. Du måste tömma all trafik från den blå miljön innan du byter till grön.
- Inte för alla applikationer: Blågrön driftsättning passar inte för alla applikationer. Till exempel applikationer som använder mycket tillstånd, som databaser.
- Granularitet på funktionsnivå: En grön driftsättningsprocess möjliggör inte granularitet på funktionsnivå. Så om du stöter på ett problem med en specifik funktion måste du återställa hela versionen, inte bara den påverkade funktionen. Om du driftsätter en stor eller komplex applikation kan det vara svårt att tillämpa denna metod.
Feature flags vs. blågrön driftsättning
En alternativ utvecklingsmetod till blågrön driftsättning är användningen av feature flags eller feature toggles som rullande driftsättningar. Med feature flags lindas nya funktioner och kod in i villkorskod som kan fjärraktiveras eller fjärrinaktiveras. Detta gör att utvecklare kan rulla ut nya funktioner i produktion och ha ett enkelt sätt att återställa utan att behöva underhålla två produktionsmiljöer.
Utöver enkel av/på-funktionalitet kan feature flags också användas för riktade utrullningar, där en funktion endast är aktiverad för ett specifikt segment av användartrafiken. Detta möjliggör användningsfall som canary-driftsättningar och A/B-testning, återigen utan att behöva underhålla två separata produktionsmiljöer.
Om du letar efter ett enkelt arbetsflöde för att komma igång med feature flags är Optimizely gratis feature flagging en gratis feature flagging-lösning från Optimizely som låter dig snabbt och säkert implementera feature toggles och A/B-testning i appen. Optimizely Rollouts finns tillgänglig för de mest populära språken & biblioteken inklusive JavaScript, Ruby, Node, React och Python.
Kom igång idag med gratis feature flagging!