36
Continuous Delivery Hva Hvordan Hvorfor

Continuous Delivery

Embed Size (px)

DESCRIPTION

Overview of the field of Contiuous Delivery (in Norwegian)

Citation preview

Page 1: Continuous Delivery

ContinuousDelivery

HvaHvordanHvorfor

Page 2: Continuous Delivery

Hvor lang tid tar det deg å deploye én endret kodelinje

til produksjon?

Og gjør du det regelmessig?

Page 3: Continuous Delivery

Hovedpoenger

Page 4: Continuous Delivery

Finne bugs tidlig/tidlig feedback

Page 5: Continuous Delivery

Trygghet og tillit til prosess og metode

Page 6: Continuous Delivery

Realisere verdi tidlig og ofte

Page 7: Continuous Delivery

Alltid releasebar software

Page 8: Continuous Delivery

Reproduserbare builds

Page 9: Continuous Delivery

Oversikt for alle involverte

Page 10: Continuous Delivery

Automatisert og ikke utsatt for

menneskelige feil

Page 11: Continuous Delivery

Configuration management

Page 12: Continuous Delivery

CI

Page 13: Continuous Delivery

Sjekk inn ofte (mange ganger daglig) god test coverageAldri sjekk inn broken build, kjør commit testerVent på commit tests på CI før du går videre på nytt arbeid

Page 14: Continuous Delivery

Vær alltid klar for å revertere Vurder: brekk bygget for arkitektur-feil, langsomme tester, checkstyle / findbugs / PMD etc DVCS: CI-build for alle repos eller bruke et repo som master som alle pusher til.

Page 15: Continuous Delivery

Testing

Page 16: Continuous Delivery

MålBygge kvalitet inn istedenfor

å inspisere i etterkant (Deming)

Page 17: Continuous Delivery

Automatiserte tester: unit, component (integration),

acceptance) (ATDD/TDD/BDD)

Page 18: Continuous Delivery

INVEST-prinsippet: Stories skal være, Independent,

Negotiable, Valuable, Estimable, Small and

Testable

Page 19: Continuous Delivery

Deploymentpipeline

Page 20: Continuous Delivery

end-to-end, ikke bare

development

Page 21: Continuous Delivery

Practices

Page 22: Continuous Delivery

Kompiler en gang, bruk flere ganger Deploy på samme måte til alle miljøer og deploy samme binærer Smoketest etter deployment (automatisert) Alle endringer skal gjennom pipeline med en gang Dersom ett sted feiler, stop the line

Page 23: Continuous Delivery

Commit stage

Compile og bygg binærer Unit tests Kodeanalyse (pmd, dependencies, coverage, complexity, style etc) Forberede databaser etc. for senere steg

Page 24: Continuous Delivery

Acceptance Reellt miljø Hele teamet må eie akseptanse-tester kost/nytte tradeoff for funksjonelle automatiserte tester Funksjonelle og ikke-funk.

Page 25: Continuous Delivery

Manuelle tester

Deploy automatisk til test-miljø Deploye i serie, slik at man ikke deployer til miljø "høyere opp" i rangeringen før lave er ok

Page 26: Continuous Delivery

Modeller verdistrømmen og lag skjelett Automatisér build og deployment Automatisér unit tester og kode-analyse Automatisér akseptansetester Automatisér releaser

Page 27: Continuous Delivery

Automatiserte akseptansetester

Hold deg unna GUI, gå mot public API Evt. Lag abstraksjonslag mellom GUI og kode

som brukes av tester

Page 28: Continuous Delivery

Scripting av build og deploy

Page 29: Continuous Delivery

Tips & triks Relative pather i alle script Eliminer manuelle steg Legg inn traceability fra versjonskontroll til

binær Ikke la test-steg feile builden, fortsett og feil til

slutt om noe feilet underveis

Page 30: Continuous Delivery

Release/Deploy

Page 31: Continuous Delivery

Deploy i første iterasjon Porter mellom hvert steg i DP som promoterer build (med alt!) og spesifikke brukere som kan deploye til hvilke Automatisert rollback (må testes) Logg av deployment-steg Involver drift Fail fast

Page 32: Continuous Delivery

Infrastruktur og env Nært samarbeid med drift og/eller devops-avdeling Om mulig sjekke på forhånd hvor lett tech kan

automatiseres Sjekk ut deployment-metoder før man skal i prod Automatiser miljø (kickstart/jumpstart ect), også konfig

(cfengine/puppet/chef) Begrens tilgang mest mulig (automatiserte prosesser

skal gjøre endringer)

Page 33: Continuous Delivery

ticket system/log på endringer av miljø. Automatisert deploy og automatisert test etterpå

Automatisert provisioning av servere

Spørsmål: hvor lang tid vil det ta å sette opp prod etter en katastrofal hw-krasj?

virtualisering med templates etc

Overvåking av applikasjoner, OS, infrastruktur og mellomvare

Logging og SNMP-traps

Lag dashboards

Page 34: Continuous Delivery

Komponenter og avhengigheter

Del opp i komponenter før det er for sent/dyrt Hold koden releaseable

Gjem ny funksjonalitet branch by abstraction (ikke svc-branches)

Avhengigheter Maven: spesifiser versjoner av alt sjekk inn dersom man ikke bruker verktøy for deps

Page 35: Continuous Delivery

Avansert versjonskontroll Utvikle mot main/master Branch for release Branch by feature Branch by team

Page 36: Continuous Delivery

Antipatterns