Introduksjon til canary deployment: sikre smidige utrullinger og minimere risikoer

23. juli 2023

Canary deployments kan være et nyttig forslag. Ved gradvis å rulle ut den nye versjonen til en liten andel av brukerne kan du identifisere og håndtere eventuelle problemer før de påvirker alle. Se hvordan du bruker det til å redusere risikoen for problemer i produksjon.

Canary deployment er en distribusjonsstrategi som gradvis ruller ut en ny versjon av en applikasjon til en liten andel av brukerne. Den lar deg teste i produksjon uten å eksponere det for alle brukerne dine. Hvis det er problemer med den nye versjonen, kan du raskt rulle den tilbake uten å påvirke de fleste brukere.  

Det er en continuous deployment-teknikk som brukes til å teste nye funksjoner, oppdateringer eller endringer på et lite og kontrollert utvalg av brukere før det gradvis rulles ut til alle sluttbrukere. Den minimerer risikoene forbundet med nye distribusjoner og fanger opp problemer før de påvirker alle.  

Canary deployments er avgjørende fordi de kan bidra til å redusere risikoen ved å innføre nye funksjoner eller oppdateringer i applikasjonen din. La oss for eksempel si at du innfører en ny funksjon på nettstedet ditt. Du kan bruke en canary deployment til å rulle ut den nye funksjonen til 5 % av brukerne dine. Hvis den nye funksjonen fungerer bra, kan du gradvis øke andelen brukere som bruker den nye funksjonen. Hvis det er problemer med den nye funksjonen, kan du raskt rulle den tilbake til den forrige versjonen.  

De støttede måltypene for canary deployment inkluderer: 

  • Virtuelle maskiner (VM-er) 
  • Containeriserte applikasjoner (med Docker eller lignende teknologier) 
  • Serverløse funksjoner (som AWS Lambda eller Google Cloud Functions) 
  • Mikrotjenestearkitektur 

Canary deployments hjelper med å identifisere potensielle problemer og avhengigheter. I tillegg kan de rettes før en fullskala utrulling, og dermed minimere konsekvensene av eventuelle problemer. 

Hva er canary deployment?

Navnet «canary deployment» kommer fra den gamle praksisen med å bruke kanarifugler i kullgruver. Kanarifugler er svært følsomme for karbonmonoksid, så de fungerte som et tidlig varslingssystem for gruvearbeiderne. Hvis kanarifuglen døde, var det et tegn på at det var for mye karbonmonoksid i luften, og at gruvearbeiderne måtte evakuere.  

På lignende vis etterligner canary deployment ideen om kanarifuglen i kullgruven. Ved først å distribuere endringer til et lite utvalg av brukere, kjent som «canary-gruppen», kan organisasjoner overvåke hvordan de nye funksjonene eller oppdateringene presterer i et kontrollert miljø. Hvis det oppstår problemer, er de begrenset til canary-gruppen, slik at de raskt kan oppdages og håndteres før de påvirker den bredere brukerbasen.  

I programvareutvikling fungerer en canary deployment som et tidlig varslingssystem for problemer med ny kode. Ved å gradvis rulle ut den nye koden til et utvalg av brukere kan du overvåke den nye koden og identifisere eventuelle nedetidsproblemer før de påvirker alle. Denne trinnvise tilnærmingen hjelper leverandører av mikrotjenester med å redusere risikoen og usikkerheten rundt større programvarelanseringer.  

Hvordan fungerer canary deployment?

En canary deployment-arbeidsflyt følger en trinnvis prosess for gradvis å rulle ut nye funksjoner eller oppdateringer til et lite utvalg av brukere eller servere. Slik fungerer prosessen: 

1. Dupliser infrastruktur 

Et separat miljø settes opp ved siden av den eksisterende produksjonsinfrastrukturen. Det fungerer som canary deployment-miljøet. 

2. Feature flags 

De spiller en avgjørende rolle ved å la utviklere aktivere eller deaktivere bestemte funksjoner. Ved å bruke feature flags kan organisasjoner styre synligheten av nye endringer og slå dem av eller på. 

3. Gruppevalg  

Et lite utvalg av brukere eller servere danner canary-gruppen. Denne gruppen representerer vanligvis en liten andel av den samlede brukerbasen eller serverne. 

4. Load balancers  

Load balancers flytter trafikk mellom det eksisterende produksjonsmiljøet og canary deployment-miljøet. Organisasjoner kan styre andelen trafikk som rettes til en gruppe. 

5. Gradvis utrulling  

Til å begynne med rulles de nye funksjonene eller oppdateringene ut til canary-gruppen. Resten av brukerne eller serverne fortsetter å bruke det eksisterende produksjonsmiljøet. 

6. Overvåking   

Samle tilbakemeldinger, spor ytelsesmålinger og oppdag eventuelle problemer eller avvik. Organisasjoner overvåker parametere som responstider, feilrater og brukertilbakemeldinger nøye for å sikre at endringene fungerer som tiltenkt. 

7. Gradvis utvidelse 

Basert på tilbakemeldingene og analysen fra canary-gruppen kan organisasjoner ta informerte beslutninger. Hvis endringene presterer godt og oppfyller de ønskede kriteriene, utvid distribusjonen til en større brukerbase eller flere servere. Men hvis det oppstår problemer, kan organisasjoner raskt rulle endringene tilbake og gå tilbake til et stabilt produksjonsmiljø. 

8. Full lansering   

Når canary deployment-fasen anses som vellykket, kan organisasjoner fortsette med en full lansering av den stabile versjonen i distribusjonspipelinen, og rulle ut endringene til hele brukerbasen eller alle servere. Alternativt kan organisasjoner forbedre endringene basert på tilbakemeldingene og dataene som er samlet inn.

Rollen til CI og CD

Continuous Integration (CI) og Continuous Deployment (CD) støtter ofte implementeringen av canary deployment. CI sikrer hyppig kodeintegrasjon og muliggjør tidlig oppdagelse av integrasjonsfeil, noe som gjør det enklere å håndtere kode for ulike versjoner av en applikasjon under canary deployment. 

CD automatiserer distribusjonsprosessen og sikrer rask, konsistent og pålitelig levering av funksjoner. Det bidrar til rask lansering av nye versjoner for canary-testing, og hvis vellykket, legger til rette for gradvis utrulling til alle brukere. 

Det er her en Customer Data Platform (CDP) kan hjelpe deg med å konsolidere kundedata fra ulike kilder, og muliggjøre sømløs integrasjon og distribusjon av kundefokuserte applikasjoner. 

Den muliggjør testing og distribusjon av nye funksjoner i sanntid basert på innsikt fra kundedata, og sikrer datakonsistens på tvers av ulike systemer, noe som reduserer feil under integrasjon og distribusjon. 

Videre kan en CDP gi tilbakemeldingssløyfer for overvåking av applikasjonsytelse etter distribusjon, og muliggjøre rask respons på eventuelle problemer. Faktisk viser vår nyeste experimentation-rapport hvordan selskaper med integrert CDP ser opptil 80 % mer forventet effekt med sine eksperimenteringsinnsatser. 

Fordeler med canary deployment

Canary deployment gir flere fordeler og bruksområder:   

  • I rullende distribusjon bidrar utsending av bestemte endringer til et lite utvalg av brukere til å redusere risikoer på forhånd. Denne tilnærmingen begrenser omfanget av potensielle problemer og muliggjør tidlig feildeteksjon. Organisasjoner kan håndtere problemer før de påvirker den bredere brukerbasen.  
  • Å distribuere endringer til et begrenset publikum gjør det mulig for organisasjoner å samle tilbakemeldinger og oppdage feil som kanskje ikke identifiseres under testing, og sikrer null nedetid.  
  • Ved gradvis å rulle ut endringer kan organisasjoner nøye overvåke konsekvensene og ytelsen til endringene. Hvis det oppstår problemer, kan de raskt rulle tilbake til den forrige stabile tilstanden eller anvende rettelser på canary-gruppen, og dermed minimere forstyrrelser for den reelle brukerbasen.  
  • Du får tilbakemeldinger fra brukerbruk og samler innsikt i hvordan brukere samhandler med de nye funksjonene eller oppdateringene. Bruk denne tilbakemeldingen til å sikre at endringene møter brukernes forventninger og forbedrer brukeropplevelsen.    

En canary deployment-strategi oppmuntrer til en kultur av kontinuerlig leveranse og eksperimentering. Ved å implementere feature flags og gradvis rulle ut endringer får organisasjoner mer fleksibilitet til å eksperimentere med nye ideer og samle datadrevet innsikt. Denne iterative tilnærmingen muliggjør raskere iterasjoner, raske tilbakemeldingssløyfer og muligheten til kontinuerlig å forbedre programvaren. 

Implementere canary deployment

Her er noen praktiske trinn for å implementere canary deployment i en applikasjon eller et system: 

1. Velg riktig tilnærming  

Definer en klar distribusjonsstrategi som spesifiserer hvordan canary-lanseringer skal distribueres og overvåkes. Det finnes ulike tilnærminger, som A/B-testing, blågrøn driftsetting og red-black-distribusjon. Velg den som passer best til dine behov og krav. 

2. Konfigurer distribusjonsprosessen  

Sett opp en separat canary-versjon for å distribuere den nye versjonen av applikasjonen. Den bør ligne mye på produksjonsmiljøet, men med færre brukere eller mindre trafikk. Bestem deretter hvor mye trafikk som skal sendes til den nye versjonen, hvordan distribusjonen skal overvåkes, og hvordan du ruller tilbake til den gamle versjonen om nødvendig. 

3. Skaler infrastrukturen din  

Skaler canary-lanseringen gradvis opp basert på overvåking og tilbakemeldinger, samtidig som du nøye overvåker nøkkelmålinger og rollback-strategier. Rut en andel av live-trafikken til canary-miljøet for å teste for problemer eller feil. Øk gradvis andelen brukere som bruker den nye versjonen, og skaler infrastrukturen din for å håndtere den økte belastningen. 

4. Overvåk distribusjonen  

Overvåk de viktigste ytelsesmålingene under canary deployment for å sikre at den nye versjonen er stabil og presterer godt. Det er avgjørende å sikre at den nye versjonen presterer som forventet. 

Nøkkelmålinger

Her er nøkkelmålinger for å måle effekten av canary deployment:  

  • Feilrate: Dette viser om canary deployment medfører noen økning i feil eller svikt.  
  • Latens: Den beskriver applikasjonens responstid for å sikre at canary deployment ikke påvirker ytelsen negativt.  
  • Konverteringsgrad: Den sporer om canary deployment påvirker brukerens konverteringsgrad eller noen spesifikke forretningsmålinger.  
  • Brukertilbakemeldinger: Den samler brukertilbakemeldinger for å forstå deres opplevelse og identifisere eventuelle problemer eller forbedringer som trengs.  

Canary deployment vs. andre

Canary deployment er en allsidig distribusjonsstrategi for en rekke scenarioer. Den kan kombineres med andre distribusjonsstrategier for økt funksjonalitet og fleksibilitet. Du kan for eksempel rulle ut en ny funksjon til utvalgte brukere, og deretter bruke A/B-testing for å sammenligne ytelsen til gamle og nye funksjoner. 

Canary deployment er mer gradvis enn A/B-testing. I A/B-testing tildeles brukere tilfeldig til ulike versjoner av en applikasjon, mens i canary deployment rulles den nye versjonen gradvis ut til en liten andel av brukerne. Det kan bidra til å redusere risikoen for å innføre nye problemer i produksjon. 

Canary deployment kan brukes til å rulle ut nye funksjoner eller oppdateringer, mens A/B-testing vanligvis brukes til å sammenligne ytelsen til to versjoner av en applikasjon. Mens blågrøn distribusjon er spesielt utformet for dette formålet.

Her er noen eksempler der en canary deployment-mal er mer egnet:  

  • Når du distribuerer en ny funksjon eller oppdatering som kan skade brukere.  
  • Når du distribuerer en ny versjon av en applikasjon som ennå ikke er fullstendig testet.
  • Når du vil få tilbakemeldinger fra brukere i sanntid og migrere til en plan før du ruller ut den nye lanseringen til alle.

Canary deployment vs. blågrøn distribusjon

Canary deployment og blågrøn distribusjon er begge innebygde lanseringsstrategier, men de skiller seg i tilnærming. Canary deployment ruller endringer gradvis ut til et lite utvalg av brukere før det distribueres til hele infrastrukturen. 

Den gjør det mulig å oppdage og håndtere potensielle problemer med minimal påvirkning. Blågrøn distribusjon innebærer derimot to identiske produksjonsmiljøer (blått og grønt). Den nye versjonen lanseres i det grønne miljøet, mens det blå miljøet kjører den nåværende live-versjonen. Når testingen er fullført i det grønne miljøet, byttes ruteren for å gjøre det live, og dermed minimeres nedetid. 

Vanlige hensyn

Her er noen potensielle fallgruver ved implementering av canary deployment:  

  • Det kan medføre datainkonsistens mellom gamle og nye versjoner av en applikasjon. Det kan skje hvis brukere samhandler med begge versjonene av applikasjonen samtidig. For å unngå dette må du ha en plan for å sikre datakonsistens.  
  • Det er viktig å ha en rollback-strategi i tilfelle problemer med den nye versjonen. Den vil la deg raskt rulle tilbake til den gamle versjonen uten å påvirke brukere. Bruk et versjonskontrollsystem for å spore endringer i konfigurasjonen til applikasjonene dine.  
  • Canary deployments kan innebære endringer i konfigurasjonen av applikasjonen din. Håndter disse endringene og sørg for at de blir anvendt riktig.  

Alt i alt er canary deployment en kompleks distribusjonsstrategi som kan være utfordrende å implementere. Det er imidlertid en verdifull metode for å redusere risikoen ved å innføre nye problemer i produksjon og forbedre påliteligheten til programvaredistribusjonene dine.

Canary deployment og feature flags

Canary deployment er en verdifull metode for å forbedre påliteligheten til programvaredistribusjonene dine. Ved gradvis å rulle ut den nye versjonen kan du overvåke den nøye og identifisere problemer før de påvirker alle. 

Hvis du tilhører et DevOps-team, bruk Optimizelys gratis feature flags for å komme i gang.  

Hvis du allerede bruker feature flags og vil ta det et steg videre, prøv feature management for å ta full kontroll over funksjonslanseringene dine akkurat nå.