Blågrön driftsättning
Vad är blågrön driftsättning?
Blågrön driftsättning är en teknik för programvaruutveckling som använder två produktionsmiljöer (en "blå miljö" och en "grön miljö") för att göra programvaruutvecklingsprocessen säkrare. Det är en relativt komplex distributionsstrategi men minimerar effektivt driftstopp när du uppdaterar din applikation i produktion. Det är också mycket användbart för produktexperimentering
De två produktionsmiljöerna hålls så identiska som möjligt. Den nyligen distribuerade koden flyttas till den för närvarande inaktiva miljön. När de nya ändringarna har testats i produktion växlar en router så att den pekar mot den miljö där de nya ändringarna är live, vilket ger en smidig övergång.
Med en blågrön driftsättning kan du uppdatera din applikation i produktion med minimal nedtid. Det fungerar genom att driftsätta två identiska kopior av din applikation, en som kallas "blå" och den andra som kallas "grön". Den blå kopian är den nuvarande produktionsversionen av programmet och den gröna är den nya version som du vill driftsätta. Du tilldelar några av dina servrar till att drifta en ny version av programmet och de återstående servrarna till att drifta den tidigare versionen.
När den gröna kopian har driftsats och testats kan du gradvis flytta trafik från den blå till den gröna. Börja gradvis, t.ex. genom att dirigera 20% av trafiken till den gröna kopian och öka sedan andelen över tiden. Det gör att du kan övervaka eventuella problem innan du växlar över.
Om du stöter på problem kan du snabbt rulla tillbaka till den blå kopian genom att dirigera all trafik tillbaka till den. Det är därför som blågrön driftsättning kallas för en "zero-downtime"-driftsättningsstrategi.
Med blågrön driftsättning får du:
- Ingen nedtid: Övergången från blått till grönt sker omedelbart. Kunderna upplever inte någon nedtid under driftsättningsfasen eftersom båda miljöerna är aktiva och identiska.
- Funktion för återställning: Om det uppstår problem kan du enkelt växla tillbaka till den blå miljön.
- Riskreducering: Genom att ha en helt testad miljö (grön) innan man skickar live-trafik till den, minskar risken avsevärt för att felaktiga eller buggiga uppdateringar distribueras direkt till live-systemet (blått).
I grund och botten minskar blågrön driftsättning avsevärt driftstopp och risker i samband med driftsättning av nya ändringar till ett skarpt system.
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 den kan vara dyrare än andra implementeringsstrategier, till exempel A/B-testning.
- Använd skalbar infrastruktur. Det kommer att hjälpa dig att minska de totala kostnaderna.
- Praktisera kaosteknik i en grön miljö. Det gör att du kan testa tillförlitligheten i din applikation utan att påverka dina slutanvändare.
- Hantera databastillståndet noggrant. Det är en av de största utmaningarna med blågrön driftsättning.
- Byt lastbalanserare, inte DNS. Det ger dig mer kontroll över trafikdirigeringsprocessen.
Stadier av en blågrön driftsättning
Här är de 9 stegen i en blågrön driftsättning:
Bild: Optimizely
- Konfigurera miljöer
Skapa identiska blå och gröna miljöer. - Distribuera uppdateringar tillden gröna
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 med avseende på prestanda och kompatibilitet. - Switchover
Omdirigera live-trafik från blå till grön snabbt. - Övervakning(efterdriftsättning)
Kontinuerlig övervakning av den gröna miljön för att upptäcka problem eller avvikelser. - Rollback (om det behövs)
Återgå snabbt till den stabila blå miljön om problem uppstår. - Promote green to blue
När den gröna miljön är stabil görs den till den nya liveproduktionen (blå). - Städa upp ochförbered för nästa cykel
Återställ och förbered en ny grön miljö för framtida uppdateringar.
Den här strömlinjeformade processen säkerställer en sömlös övergång mellan miljöerna, vilket minimerar driftstopp och risker vid uppdateringar eller ändringar i livesystemet.
Användningsfall för blågrön driftsättning
Återrullning
En av de största fördelarna med blågrön driftsättning är katastrofberedskap. Eftersom det finns två identiska produktionsmiljöer kan en router, om nya ändringar rullas ut till den ena (t.ex. den blå versionen) och problem upptäcks, bara växla tillbaka till den andra miljön (den gröna versionen) 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å programvaran 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 till med detta mål genom att tillåta fler kodskjutningar till produktion samtidigt som risken för nya releaser minskar.
Testning i produktion
Det finns ofta små kompatibilitetsskillnader mellan staging-miljön och produktionen, oavsett hur mycket man anstränger sig för att göra dem identiska. För DevOps-team kan detta leda till gränsfall 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 ny kod skjuts till den faktiska produktionsmiljön och se hur den fungerar, innan den smidigt överförs till produktionstrafik och faktiska användare.
Canary-distribution
En canary release är när nya ändringar släpps till ett litet segment av din användarbas, 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 några ödesdigra fel i den nya versionen av din kod. Blågrön driftsättning kan användas för sådan canary testing genom att helt enkelt låta routern styra en procentandel av din trafik till en ny version av koden för att se hur den fungerar med live-trafik, innan du rullar ut ändringen till 100% av dina användare.
A/B-testning
Ett annat potentiellt användningsområde för blågröna driftsättningar är A/B-testning. I det här fallet skulle du ladda den nya versionen av din kod i den blå miljön och rikta 50 % av din användartrafik till den blå versionen jämfört med den ursprungliga gröna versionen. Sedan kan du övervaka hur de två miljöerna presterar när det gäller dina viktigaste mätvärden och använda statistisk analys för att fastställa den exakta effekten av din nya applikation.
Lastbalansering
Ett annat potentiellt användningsområde för blågrön driftsättning är lastbalansering. Om den blågröna driftsättningen konfigureras på ett sätt så att de två produktionsmiljöerna finns på separata servrar (snarare än en virtuell maskin) kan en router enkelt balansera trafiken mellan de blå och gröna versionerna av produktionsmiljön eftersom de är funktionellt identiska.
Vilka är fördelarna med blågrön driftsättning?
Här är några av de viktigaste fördelarna med den här driftsättningsmetoden:
- Noll driftstopp: Du kan uppdatera din applikation i produktion utan driftstopp med två identiska kopior i drift. Du kan växla trafik från den ena till den andra.
- Rollback: Om du stöter på några utmaningar med den nya versionen av din applikation kan du enkelt rulla tillbaka till den tidigare versionen.
- Minskad risk: Du kan testa den nya versionen av din applikation i den gröna miljön innan du distribuerar den till 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 gör övergången.
- Skalbarhet: Blågrön driftsättning kan enkelt skalas upp 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 på en app och vill släppa en ny funktion, men vill eliminera alla driftstopp och ha en smidig övergång till den nya koden. Förutom din staging-miljö skulle du sätta upp två identiska produktionsmiljöer (en "blå version" och en "grön version") med en router som dirigerar trafiken till den gröna versionen.
Sedan kan du lägga in de nya ändringarna i den blå versionen av produktionsmiljön och se hur den fungerar i en faktisk produktionsmiljö. Det kan visa sig att det finns buggar som bara uppstår i produktionsmiljön, och i så fall kan du enkelt gå tillbaka till utveckling utan att det påverkar användarna.
När du är säker på prestandan i den nya versionen av applikationen kan du börja dirigera en procentandel av din användartrafik till den blå miljön för att köra en canary testing på faktiska användare. Om inga problem upptäcks kan du dirigera 100% av din trafik till den nya miljön, vilket leder till en smidig funktionsrelease.
Om några problem upptäcks när övergången har gjorts kan du återigen enkelt dirigera trafiken tillbaka till den gröna miljön som har den tidigare versionen av din kod för att utföra en enkel rollback.
När du är säker på att det inte finns några problem med den nya koden kan du sedan klona den blå miljön till den gröna, så att du återigen har två identiska produktionsmiljöer. Du kan sedan fortsätta med utvecklingslivscykeln eller använda den andra servern som lastbalanserare vid behov om du ser en ökning av användningen.
Vilka är nackdelarna med blågrön driftsättning?
Här är några av de största nackdelarna:
- Mer resurser: Det krävs att du underhåller två identiska miljöer, vilket kan vara dyrare än andra distributionsstrategier.
- Mer samordning: Du måste samordna driftsättningen av den nya versionen av applikationen till den gröna miljön, samt övergången från den blå till den gröna.
- Långsammare att växla över: Det kan vara långsammare att växla över till olika delmängder än andra distributionsstrategier, till exempel A/B-testning. Du måste tömma all trafik från den blå miljön innan du växlar till den gröna.
- Inte för alla applikationer: Blågrön driftsättning är inte lämplig för alla applikationer. Till exempel applikationer som använder många tillstånd, som databaser.
- Granularitet på funktionsnivå: En grön distributionsprocess möjliggör inte granularitet på funktionsnivå. Så om du stöter på problem med en specifik funktion måste du rulla tillbaka hela versionen, inte bara den funktion som påverkas. Om du distribuerar en stor eller komplex applikation kan det vara svårt att tillämpa den här metoden.
Feature flags vs blågrön driftsättning
En alternativ utvecklingsmetod till blågrön driftsättning är att använda feature flags eller funktionsväxlingar som rullande driftsättningar. Med feature flags paketeras nya funktioner och kod i villkorlig kod som kan slås på eller av på distans. Detta gör det möjligt för utvecklare att rulla ut nya funktioner till produktion och ha ett enkelt sätt att återgå utan att behöva underhålla två produktionsmiljöer.
Förutom enkel på/av-funktionalitet kan feature flags också användas för målgruppsinriktade utrullningar, där en funktion endast aktiveras för en viss segmentering av din användartrafik. Detta möjliggör användningsfall som canary deployments 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 free feature flagging en gratis feature flagging-lösning från Optimizely som gör att du snabbt och säkert kan implementera feature toggles och A/B-testning i din app. Optimizely Rollouts är tillgängligt för de mest populära språken och biblioteken, inklusive JavaScript, Ruby, Node, React och Python.
Kom igång idag med gratis feature flags!