Introducing Optimizely Opal
an all-new AI platform. See how it works
Optimization glossary

Stambasert utvikling

Hva er stamme-basert utvikling?

Stamkodebasert utvikling (TBD) er en strategi for programvareutvikling der ingeniører oftere fusjonerer mindre endringer inn i hovedkodebasen og jobber ut fra stamkodekopien i stedet for å jobbe med langlivede funksjonsgrener. Denne utviklingsmodellen brukes ofte som en del av en arbeidsflyt for kontinuerlig integrasjon.

Hvorfor bruke trunk-basert utvikling

Når mange ingeniører jobber i samme kodebase, er det viktig å ha en strategi for kildekodekontroll og hvordan de ulike medarbeiderne jobber sammen. For å unngå å overstyre hverandres endringer, oppretter ingeniørene sine egne kopier av kodebasen, kalt grener. I analogi med et tre kalles hovedkopien noen ganger for hovedlinjen eller stammen. Prosessen med å innlemme endringene i den enkeltes kopi i hovedstammen kalles sammenslåing.

For å forstå stamme-basert utvikling er det nyttig å først se på den alternative strategien, utvikling av funksjonsgrener.

I feature branch-utvikling fletter ikke individuelle programvareutviklere eller team av ingeniører sammen den nye grenen sin før en funksjon er ferdig, og noen ganger jobber de i uker eller måneder av gangen med en separat kopi.

feature branch developmentKilde: Optimizely Optimizely

Denne lange perioden kan gjøre sammenslåingsprosessen vanskelig, fordi stammen eller mastergrenen sannsynligvis har endret seg på grunn av at andre ingeniører har slått sammen kodeendringene sine, og versjonskontrollen blir vanskelig. Denne funksjonsforgreningen kan resultere i en langvarig kodegjennomgangsprosess når man ønsker å opprette en releasegren som skal distribueres, noe som ofte resulterer i at mange forskjellige pull requests må analyseres for å løse sammenslåingskonflikter.

Fordeler med trunk-basert utvikling

Trunk-basert utvikling har en mer kontinuerlig tilnærming til programvareutvikling, og grenene er kortvarige og slås sammen så ofte som mulig. Grenene er mindre fordi de ofte bare inneholder en del av en funksjon. Disse kortlivede utviklingsgrenene gjør sammenslåingsprosessen enklere fordi det er mindre tid til avvik mellom hovedstammen og grenkopiene.

trunk-based-developmentKilde: Optimizely Optimizely

Stambasert utvikling er altså en metode som gjør det mulig å lansere nye funksjoner og små endringer raskt, samtidig som man unngår langvarige feilrettinger og "sammenslåingshelvete". Det er en stadig mer populær devops-metode blant smidige utviklingsteam, og den kombineres ofte med funksjonsflagg eller funksjonsskifter for å sikre at nye funksjoner raskt og enkelt kan rulles tilbake hvis det oppdages feil.

Trunk-basert utvikling og funksjonsflagg

Featureflagging (lansert av Martin Fowler), eller det å pakke inn nye funksjoner i kode som kan slås av og på eksternt, er en vanlig utviklingsprosess som programvareingeniører bruker for å implementere trunk-basert utvikling og samtidig redusere risikoen for å introdusere feil i koden.

Fordi trunk-basert utvikling innebærer at man jobber i én enkelt gren i produksjonsmiljøet, gir funksjonsflagg en måte å introdusere nye funksjoner og endringer i koden på en kontrollert måte, og gjør det raskt mulig å slå dem av hvis man oppdager feil.

Funksjonsflagg kan også brukes til å rulle ut funksjoner sakte til en liten del av prosjektets brukerbase i stedet for å ha én stor lansering, noe som bidrar til å begrense eksplosjonsradiusen til potensielt feilaktig kildekode.

Stamme-basert utvikling og Optimizely Feature Experimentation

Optimizely Feature Experimentation tilbyr et komplett utvalg av utviklerverktøy som funksjonsflagg, funksjonsutrullinger, funksjonsvariabler og A/B-testing som muliggjør trunkbasert utvikling og lansering av ny kode raskt, samtidig som risikoen minimeres.

Og for utviklere som ønsker å komme i gang med bare funksjonsflagg, tilbyr Optimizely gratis funksjonsflagging ubegrenset funksjonsflagging i et dusin av de mest populære språkene og bibliotekene som finnes der ute.