Blågrön driftsättning

Blågrön driftsättning är en mjukvaruutvecklingsteknik som använder två produktionsmiljöer (blå och grön) för att göra mjukvarudriftsättning enklare och säkrare.

Vad är blågrön driftsättning?

Blågrön driftsättning är en mjukvaruutvecklingsteknik som använder två produktionsmiljöer (en "blå miljö" och en "grön miljö") för att göra mjukvarudriftsättningsprocessen säkrare. Det är en relativt komplex driftsättningsstrategi men minimerar effektivt driftstopp vid uppdatering av applikationen i produktion. Den är också mycket användbar för produktexperimentering

De två produktionsmiljöerna hålls så identiska som möjligt. Den nyligen driftsatta koden skickas till den för tillfället inaktiva miljön. När de nya ändringarna har testats i produktion byter en router för att peka mot miljön där de nya ändringarna är live, vilket ger en smidig övergång.

En blågrön driftsättningsstrategi låter dig uppdatera applikationen i produktion med minimal driftstopp. Den fungerar genom att driftsätta två identiska kopior av applikationen, en kallad "blå" och en kallad "grön". Den blå kopian är den nuvarande produktionsversionen av applikationen, och den gröna är den nya versionen du vill driftsätta. Du tilldelar några av dina servrar att köra en ny version av applikationen och de återstående servrarna att köra den tidigare versionen.

När den gröna kopian är driftsatt och testad kan du gradvis flytta trafik från blå till grön. Börja gradvis, t.ex. genom att dirigera 20 % av trafiken till den gröna kopian och sedan öka procentandelen med tiden. Det låter dig övervaka eventuella problem innan du byter över.

Om du stöter på ett problem kan du snabbt återgå till den blå kopian genom att dirigera all trafik tillbaka till den. Det är därför blågrön driftsättning kallas en "noll driftstopp"-driftsättningsstrategi. 

Med blågrön driftsättning får du: 

  • Inget driftstopp: Övergången från blå till grön är omedelbar. Kunder upplever inga driftstopp under driftsättningsfasen eftersom båda miljöerna är aktiva och identiska.  
  • Återställningsmöjlighet: Vid problem kan du enkelt växla tillbaka till den blå miljön. 
  • Riskminskning: Genom att ha en fullständigt testad miljö (grön) innan live-trafik dirigeras dit minskas risken för att driftsätta felaktiga uppdateringar direkt till live-systemet (blå) avsevärt.  

I grund och botten minskar blågrön driftsättning driftstopp och risk förknippad med att driftsätta nya ändringar i ett live-system avsevärt. 

fördelar med blågrön driftsättning

Bild: Optimizely

Hur använder man blågrön driftsättning?

Blågrön driftsättning är en komplex driftsättningsstrategi. Ha en väldefinierad plan eftersom detta kan vara dyrare än andra driftsättningsstrategier, som A/B-testning. 

  • Använd skalbar infrastruktur. Det hjälper dig att minska de totala kostnaderna. 
  • Öva kaosteknik i en grön miljö. Det låter dig testa tillförlitligheten hos applikationen utan att påverka slutanvändarna. 
  • Hantera databastillstånd noggrant. Det är en av de största utmaningarna med blågrön driftsättning. 
  • Ändra lastbalanserare, inte DNS. Det ger dig mer kontroll över trafikdirigeringsprocessen. 

Faser i en blågrön driftsättningsmodell 

Här är de 9 faserna i en blågrön driftsättningsmodell:

Faser i en blågrön driftsättning

Bild: Optimizely

  1. Konfigurera miljöer
    Skapa identiska blå och gröna miljöer.
  2. Driftsätt uppdateringar i grön
    Implementera ändringar i den gröna miljön.
  3. Testning och validering
    Genomför omfattande testning i den gröna miljön.
  4. Verifiering och kvalitetskontroller
    Verifiera uppdateringar för prestanda och kompatibilitet.
  5. Övergång
    Dirigera om live-trafik från blå till grön snabbt.
  6. Övervakning (efter driftsättning)
    Övervaka kontinuerligt grön för problem eller avvikelser.
  7. Återställning (vid behov)
    Återgå snabbt till den stabila blå miljön om problem uppstår.
  8. Uppgradera grön till blå
    När stabil, gör den gröna miljön till ny live-produktion (blå).
  9. 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