Canary testing

Canary testing er en måte å redusere risiko og validere ny programvare ved å rulle ut programvare til en liten prosentandel av brukerne.

Hva er canary testing?

Canary testing er en måte å redusere risiko og validere ny programvare ved å rulle ut programvare til en liten prosentandel av brukerne. Med canary testing kan du levere til bestemte brukergrupper om gangen. Canary-utrullinger, også kalt inkrementelle, trinnvise eller fasevise utrullinger, er en beste praksis innen devops og programvareutvikling.

Uttrykket stammer fra den engelske frasen «Canary in the coal mine» (kanarifugl i kullgruven), der gruvearbeidere tok med seg en kanarifugl i bur ned i gruven for å oppdage om nivået av giftig gass var for høyt. Siden fugler har lavere toleranse for giftige gasser enn mennesker, fungerte fuglens død som et tidlig varsel for gruvearbeiderne om å evakuere. I programvareutviklingens kontekst er utfallet ikke like dramatisk – i stedet er målet for utviklere å raskt oppdage og løse problemer med ny programvare før det forringer opplevelsen for alle.

Slik utfører du canary testing

Canary-tester kan utføres ved hjelp av blue-green-utrullinger for å fordele trafikk på servernivå og gradvis flytte trafikk fra én versjon av en applikasjon til en nyere versjon ved hjelp av en trafikkruter på servernivå.

canary testing blue-green-utrullingFordeling av trafikk etter applikasjonsversjon.

Fordeling av trafikk etter applikasjonsversjon. Bilde: Optimizely 

Eller det kan gjøres mer detaljert på funksjonsnivå ved hjelp av feature flags for å sende en prosentandel av sluttbrukerne til den nye versjonen av opplevelsen.

canary testing feature flagsSender 1 % av brukerne til ny opplevelse ved hjelp av Feature Flag. Bilde: Optimizely

Sender 1 % av brukerne til ny opplevelse ved hjelp av Feature Flag.  Bilde: Optimizely 

Slik utfører du canary testing

Canary testing gjør det mulig å rulle ut ny kode eller nye funksjoner til en liten undergruppe av brukere for å verifisere om det finnes problemer med koden før den lanseres til et større publikum. Ved å begrense utrullingen til et utvalgt publikum for å minimere eksplosjonsradiusen av nye lanseringer, kan team validere funksjonalitet og ytelse før de ruller ut til alle brukere.

En annen grunn til å utføre canary-tester og produkteksperimentering er at utviklings- eller staging-miljøer ofte ikke fullt ut gjenspeiler produksjonsmiljøer. Ved å teste med en liten prosentandel av produksjonsbrukere (ofte omtalt som testing i produksjon), kan du oppdage problemer som kanskje ikke ble funnet i staging- eller utviklingsmiljøer.

Canary testing og feature flags

Canary testing kan utføres ved hjelp av feature flags, som gjør det mulig for team å skille kodeutgivelser fra funksjonsaktivering og slå funksjoner av og på eksternt for spesifikke grupper, prosentandeler av brukere eller alle brukere. Ved hjelp av feature flags kan team begrense utrullingen til bare 1 % av brukerne, overvåke nøkkelmålinger som feilfrekvens, latens og forretningsmålinger for å sikre at den nye funksjonen ikke har noen negativ effekt.

Hvis canary-testen avdekker et problem under utrullingsprosessen, er det enkelt å deaktivere den nye funksjonen eller koden ved å slå av det aktuelle feature flaget. Canary-utrullinger kan bidra til å forhindre store nedetider, tapt omsetning eller negativ kundeoppfatning ved å gi raske innsikter om ytelsen til en ny funksjon, samtidig som antallet berørte brukere begrenses.

Canary testing og kontinuerlig levering

Fremmet av den innflytelsesrike programvareutvikleren Martin Fowler, er kontinuerlig levering en programvareutviklingsdisiplin der programvare kan lanseres til produksjon når som helst. Den er tatt i bruk av ledende programvareselskaper over hele verden, der teamene nå forventes å raskt levere stabil og feilfri programvare til brukerbasen.

Canary testing passer inn i metodikkene for kontinuerlig levering og kontinuerlig integrasjon. De beste systemene for kontinuerlig levering, som hos selskaper som Facebook, integrerer dyp overvåking og automatisert testing i sin canary testing. Hvis en funksjon feiler en overvåkingssjekk etter at den er rullet ut som en canary til en prosentandel av brukerne, rulles den automatisk tilbake. Med kontinuerlig utrulling og canary-tester kan et team tryggere lansere ny funksjonalitet og kodeendringer i stor skala.

Canary testing i Intelligence Cloud

Programvareutviklingsteam kan nå bruke Optimizely gratis feature flags for å implementere feature flags for canary testing.

Team kan omfavne praksisene for kontinuerlig integrasjon og kontinuerlig levering som brukes av dagens avanserte utviklingsteam. Både team – og hele selskaper – vil kunne dra nytte av raskere utviklingssykluser og praksiser for funksjonshåndtering som canary testing for å redusere risiko.

Optimizely server-side-eksperimentering -kunder kan følge i fotsporene til verdens ledende programvareselskaper (som Amazon, Google og Facebook) som validerer funksjonene sine til bare en liten prosentandel av brukerne før de ruller ut bredere.

Optimizely tilbyr også funksjonshåndtering på bedriftsnivå gjennom Optimizely server-side-eksperimentering, en kraftig løsning for canary testing, kontrollerte funksjonslanseringer og funksjonstester i produktet eller appen din.