Introduktion till canary deployment: säkerställa smidiga utrullningar och minimera risker

23 juli 2023

Canary deployments kan vara ett användbart förslag. Genom att gradvis rulla ut den nya versionen till en liten andel av användarna kan du identifiera och åtgärda eventuella problem innan de påverkar alla. Se hur du använder det för att minska risken för problem i produktion.

Canary deployment är en distributionsstrategi som gradvis rullar ut en ny version av en applikation till en liten andel av användarna. Den låter dig testa i produktion utan att exponera det för alla dina användare. Om det uppstår problem med den nya versionen kan du snabbt rulla tillbaka den utan att påverka de flesta användare.  

Det är en continuous deployment-teknik som används för att testa nya funktioner, uppdateringar eller ändringar på en liten och kontrollerad delmängd av användare innan det gradvis rullas ut till alla slutanvändare. Den minimerar riskerna som är förknippade med nya distributioner och fångar problem innan de påverkar alla.  

Canary deployments är avgörande eftersom de kan bidra till att minska risken med att införa nya funktioner eller uppdateringar i din applikation. Låt oss till exempel säga att du inför en ny funktion på din webbplats. Du kan använda en canary deployment för att rulla ut den nya funktionen till 5 % av dina användare. Om den nya funktionen fungerar bra kan du gradvis öka andelen användare som använder den nya funktionen. Om det uppstår problem med den nya funktionen kan du snabbt rulla tillbaka den till den tidigare versionen.  

De måltyper som stöds för canary deployment inkluderar: 

  • Virtuella maskiner (VM:er) 
  • Containeriserade applikationer (med Docker eller liknande teknik) 
  • Serverlösa funktioner (som AWS Lambda eller Google Cloud Functions) 
  • Mikrotjänstarkitektur 

Canary deployments hjälper till att identifiera potentiella problem och beroenden. Dessutom kan de åtgärdas före en fullskalig utrullning, vilket minimerar effekten av eventuella problem. 

Vad är canary deployment?

Namnet ”canary deployment” kommer från den gamla seden att använda kanariefåglar i kolgruvor. Kanariefåglar är mycket känsliga för kolmonoxid, så de fungerade som ett system för tidig varning för gruvarbetarna. Om kanariefågeln dog var det ett tecken på att det fanns för mycket kolmonoxid i luften och att gruvarbetarna behövde evakuera.  

På liknande sätt efterliknar canary deployment idén om kanariefågeln i kolgruvan. Genom att först distribuera ändringar till en liten delmängd av användare, känd som ”canary-gruppen”, kan organisationer övervaka hur de nya funktionerna eller uppdateringarna presterar i en kontrollerad miljö. Om problem uppstår är de begränsade till canary-gruppen, vilket gör att de snabbt kan upptäckas och åtgärdas innan de påverkar den bredare användarbasen.  

I mjukvaruutveckling fungerar en canary deployment som ett system för tidig varning för problem med ny kod. Genom att gradvis rulla ut den nya koden till en delmängd av användare kan du övervaka den nya koden och identifiera eventuella driftstoppsproblem innan de påverkar alla. Detta inkrementella tillvägagångssätt hjälper leverantörer av mikrotjänster att minska risken och osäkerheten kring större mjukvarulanseringar.  

Hur fungerar canary deployment?

Ett canary deployment-arbetsflöde följer en stegvis process för att gradvis rulla ut nya funktioner eller uppdateringar till en liten delmängd av användare eller servrar. Så här fungerar processen: 

1. Duplicera infrastruktur 

En separat miljö sätts upp vid sidan av den befintliga produktionsinfrastrukturen. Den fungerar som canary deployment-miljön. 

2. Feature flags 

De spelar en avgörande roll genom att låta utvecklare aktivera eller inaktivera specifika funktioner. Genom att använda feature flags kan organisationer styra synligheten av nya ändringar och slå på eller av dem. 

3. Gruppval  

En liten delmängd av användare eller servrar bildar canary-gruppen. Denna grupp representerar vanligtvis en liten andel av den totala användarbasen eller servrarna. 

4. Load balancers  

Load balancers flyttar trafik mellan den befintliga produktionsmiljön och canary deployment-miljön. Organisationer kan styra andelen trafik som riktas till en grupp. 

5. Gradvis utrullning  

Inledningsvis rullas de nya funktionerna eller uppdateringarna ut till canary-gruppen. Resten av användarna eller servrarna fortsätter att använda den befintliga produktionsmiljön. 

6. Övervakning   

Samla in feedback, spåra prestandamått och upptäck eventuella problem eller avvikelser. Organisationer övervakar parametrar som svarstider, felfrekvenser och användarfeedback noggrant för att säkerställa att ändringarna fungerar som avsett. 

7. Gradvis expansion 

Baserat på feedbacken och analysen från canary-gruppen kan organisationer fatta välgrundade beslut. Om ändringarna presterar bra och uppfyller de önskade kriterierna, utöka distributionen till en större användarbas eller ytterligare servrar. Men om problem uppstår kan organisationer snabbt rulla tillbaka ändringarna och återgå till en stabil produktionsmiljö. 

8. Full lansering   

När canary deployment-fasen anses framgångsrik kan organisationer fortsätta med en full lansering av den stabila versionen i distributionspipelinen och rulla ut ändringarna till hela användarbasen eller alla servrar. Alternativt kan organisationer förbättra ändringarna baserat på den feedback och de data som samlats in.

Rollen för CI och CD

Continuous Integration (CI) och Continuous Deployment (CD) stöder ofta implementeringen av canary deployment. CI säkerställer frekvent kodintegration och möjliggör tidig upptäckt av integrationsfel, vilket gör det enklare att hantera kod för olika versioner av en applikation under canary deployment. 

CD automatiserar distributionsprocessen och säkerställer snabb, konsekvent och tillförlitlig leverans av funktioner. Det bidrar till snabb lansering av nya versioner för canary-testning och, om det är framgångsrikt, underlättar den gradvisa utrullningen till alla användare. 

Det är här en Customer Data Platform (CDP) kan hjälpa dig att konsolidera kunddata från olika källor och möjliggöra sömlös integration och distribution av kundfokuserade applikationer. 

Den möjliggör testning och distribution av nya funktioner i realtid baserat på insikter från kunddata och säkerställer datakonsistens över olika system, vilket minskar fel under integration och distribution. 

Dessutom kan en CDP tillhandahålla återkopplingsslingor för övervakning av applikationsprestanda efter distribution, vilket möjliggör snabb respons på eventuella problem. Faktum är att vår senaste experimentation-rapport visar hur företag med integrerad CDP ser upp till 80 % mer förväntad effekt med sina experimenteringsinsatser. 

Fördelar med canary deployment

Canary deployment erbjuder flera fördelar och användningsområden:   

  • I rullande distribution bidrar utskick av specifika ändringar till en liten delmängd av användare till att minska riskerna i förväg. Detta tillvägagångssätt begränsar omfattningen av potentiella problem och möjliggör tidig feldetektering. Organisationer kan åtgärda problem innan de påverkar den bredare användarbasen.  
  • Att distribuera ändringar till en begränsad publik gör det möjligt för organisationer att samla in feedback och upptäcka fel som kanske inte identifieras under testning, och säkerställer noll driftstopp.  
  • Genom att gradvis rulla ut ändringar kan organisationer noggrant övervaka effekten och prestandan hos ändringarna. Om problem uppstår kan de snabbt rulla tillbaka till det tidigare stabila tillståndet eller tillämpa rättningar på canary-gruppen, vilket minimerar störningar för den verkliga användarbasen.  
  • Du får feedback från användarnas användning och samlar insikter om hur användare interagerar med de nya funktionerna eller uppdateringarna. Använd denna feedback för att säkerställa att ändringarna uppfyller användarnas förväntningar och förbättrar användarupplevelsen.    

En canary deployment-strategi uppmuntrar en kultur av kontinuerlig leverans och experimentering. Genom att implementera feature flags och gradvis rulla ut ändringar får organisationer mer flexibilitet att experimentera med nya idéer och samla in datadrivna insikter. Detta iterativa tillvägagångssätt möjliggör snabbare iterationer, snabba återkopplingsslingor och förmågan att kontinuerligt förbättra mjukvaran. 

Implementera canary deployment

Här är några praktiska steg för att implementera canary deployment i en applikation eller ett system: 

1. Välj rätt tillvägagångssätt  

Definiera en tydlig distributionsstrategi som specificerar hur canary-lanseringar ska distribueras och övervakas. Det finns olika tillvägagångssätt, såsom A/B-testning, blågrön driftsättning och red-black-distribution. Välj det som passar dina behov och krav bäst. 

2. Konfigurera distributionsprocessen  

Sätt upp en separat canary-version för att distribuera den nya versionen av applikationen. Den bör likna produktionsmiljön mycket, men med färre användare eller mindre trafik. Bestäm sedan hur mycket trafik som ska skickas till den nya versionen, hur distributionen ska övervakas och hur du rullar tillbaka till den gamla versionen vid behov. 

3. Skala din infrastruktur  

Skala upp canary-lanseringen gradvis baserat på övervakning och feedback, samtidigt som du noggrant övervakar nyckelmått och rollback-strategier. Dirigera en del av live-trafiken till canary-miljön för att testa för problem eller fel. Öka gradvis andelen användare som använder den nya versionen och skala din infrastruktur för att hantera den ökade belastningen. 

4. Övervaka distributionen  

Övervaka de viktigaste prestandamåtten under canary deployment för att säkerställa att den nya versionen är stabil och presterar bra. Det är väsentligt att säkerställa att den nya versionen presterar som förväntat. 

Nyckelmått

Här är nyckelmått för att mäta effekten av canary deployment:  

  • Felfrekvens: Detta visar om canary deployment medför någon ökning av fel eller misslyckanden.  
  • Latens: Den beskriver applikationens svarstid för att säkerställa att canary deployment inte påverkar prestandan negativt.  
  • Konverteringsgrad: Den spårar om canary deployment påverkar användarens konverteringsgrad eller några specifika affärsmått.  
  • Användarfeedback: Den samlar in användarfeedback för att förstå deras upplevelse och identifiera eventuella problem eller förbättringar som behövs.  

Canary deployment vs. andra

Canary deployment är en mångsidig distributionsstrategi för en mängd olika scenarier. Den kan kombineras med andra distributionsstrategier för utökad funktionalitet och flexibilitet. Du kan till exempel rulla ut en ny funktion till utvalda användare och sedan använda A/B-testning för att jämföra prestandan hos gamla och nya funktioner. 

Canary deployment är mer gradvis än A/B-testning. Vid A/B-testning tilldelas användare slumpmässigt till olika versioner av en applikation, medan vid canary deployment rullas den nya versionen gradvis ut till en liten andel av användarna. Det kan bidra till att minska risken för att införa nya problem i produktion. 

Canary deployment kan användas för att rulla ut nya funktioner eller uppdateringar, medan A/B-testning vanligtvis används för att jämföra prestandan hos två versioner av en applikation. Medan blågrön driftsättning är särskilt utformad för detta ändamål.

Här är några exempel där en canary deployment-mall är mer lämplig:  

  • När du distribuerar en ny funktion eller uppdatering som kan skada användare.  
  • När du distribuerar en ny version av en applikation som ännu inte är fullständigt testad.
  • När du vill få feedback från användare i realtid och migrera till en plan innan du rullar ut den nya lanseringen till alla.

Canary deployment vs. blågrön driftsättning

Canary deployment och blågrön driftsättning är båda inbyggda lanseringsstrategier, men de skiljer sig åt i tillvägagångssätt. Canary deployment rullar ut ändringar gradvis till en liten delmängd av användare innan det distribueras till hela infrastrukturen. 

Den gör det möjligt att upptäcka och åtgärda potentiella problem med minimal påverkan. Blågrön driftsättning omfattar däremot två identiska produktionsmiljöer (blå och grön). Den nya versionen lanseras i den gröna miljön, medan den blå miljön kör den aktuella live-versionen. När testningen är slutförd i den gröna miljön växlas routern för att göra den live, vilket minimerar driftstopp. 

Vanliga överväganden

Här är några potentiella fallgropar vid implementering av canary deployment:  

  • Det kan medföra datainkonsekvens mellan gamla och nya versioner av en applikation. Det kan hända om användare interagerar med båda versionerna av applikationen samtidigt. För att undvika detta behöver du ha en plan för att säkerställa datakonsistens.  
  • Det är viktigt att ha en rollback-strategi i händelse av problem med den nya versionen. Den låter dig snabbt rulla tillbaka till den gamla versionen utan att påverka användare. Använd ett versionshanteringssystem för att spåra ändringar i konfigurationen av dina applikationer.  
  • Canary deployments kan innebära ändringar i konfigurationen av din applikation. Hantera dessa ändringar och säkerställ att de tillämpas korrekt.  

Sammantaget är canary deployment en komplex distributionsstrategi som kan vara utmanande att implementera. Det är dock en värdefull metod för att minska risken med att införa nya problem i produktion och förbättra tillförlitligheten hos dina mjukvarudistributioner.

Canary deployment och feature flags

Canary deployment är en värdefull metod för att förbättra tillförlitligheten hos dina mjukvarudistributioner. Genom att gradvis rulla ut den nya versionen kan du övervaka den noggrant och identifiera problem innan de påverkar alla. 

Om du tillhör ett DevOps-team, använd Optimizelys gratis feature flags för att komma igång.  

Om du redan använder feature flags och vill ta det ett steg längre, prova funktionshantering för att ta full kontroll över dina funktionslanseringar redan nu.