SlideShare a Scribd company logo
Continuous Delivery Hva Hvordan Hvorfor
Hvor lang tid tar det deg å deploye én endret kodelinje til produksjon? Og gjør du det regelmessig?
Hovedpoenger
Finne bugs tidlig/tidlig feedback
Trygghet og tillit til prosess og metode
Realisere verdi tidlig og ofte
Alltid releasebar software
Reproduserbare builds
Oversikt for alle involverte
Automatisert og ikke utsatt for menneskelige feil
Configuration management
CI
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
Testing
Mål Bygge kvalitet inn istedenfor å inspisere i etterkant (Deming)
Automatiserte tester: unit, component (integration), acceptance)   (ATDD/TDD/BDD)
INVEST-prinsippet: Stories skal være, Independent, Negotiable, Valuable, Estimable, Small and Testable
Deployment pipeline
end-to-end, ikke bare development
Practices
[object Object],[object Object],[object Object],[object Object],[object Object]
Commit stage ,[object Object],[object Object],[object Object],[object Object]
Acceptance ,[object Object],[object Object],[object Object],[object Object]
Manuelle tester ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],Automatiserte akseptansetester
Scripting av build og deploy
Tips & triks ,[object Object],[object Object],[object Object],[object Object]
Release/ Deploy
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Infrastruktur og env ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Komponenter og avhengigheter ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Avansert versjonskontroll ,[object Object],[object Object],[object Object],[object Object]
Antipatterns

More Related Content

Similar to Continuous Delivery

JavaZone 2006 - Gode grep når prosjektet blir stort
JavaZone 2006 -  Gode grep når prosjektet blir stortJavaZone 2006 -  Gode grep når prosjektet blir stort
JavaZone 2006 - Gode grep når prosjektet blir stort
Eirik Torske
 
Smart-APITest.pdf
Smart-APITest.pdfSmart-APITest.pdf
Smart-APITest.pdf
Minh Nguyen
 
Introduksjon til TDD
Introduksjon til TDDIntroduksjon til TDD
Introduksjon til TDD
Joachim Løvf
 
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av AutentiseringsprosjektetIkt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
leiftorger
 
Ikke test Puppet-koden din
Ikke test Puppet-koden dinIkke test Puppet-koden din
Ikke test Puppet-koden din
Jan Ivar Beddari
 
Blazor - en kjapp intro
Blazor - en kjapp introBlazor - en kjapp intro
Blazor - en kjapp intro
Runegri
 
Notifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verdenNotifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verden
Joar Øyen
 
Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010
ilmyggo
 
Grunnsikring av windows i praksis presentasjon
Grunnsikring av windows i praksis   presentasjonGrunnsikring av windows i praksis   presentasjon
Grunnsikring av windows i praksis presentasjon
Karim El-Melhaoui
 
Splitt og hersk: Fleksibel arkitektur med mikrotjenester!
Splitt og hersk: Fleksibel arkitektur med mikrotjenester!Splitt og hersk: Fleksibel arkitektur med mikrotjenester!
Splitt og hersk: Fleksibel arkitektur med mikrotjenester!
Henrik Schwarz
 
Git i praksis - erfaringer med overgang fra ClearCase til Git
Git i praksis - erfaringer med overgang fra ClearCase til GitGit i praksis - erfaringer med overgang fra ClearCase til Git
Git i praksis - erfaringer med overgang fra ClearCase til Git
Fredrik Vraalsen
 
AWS på kartet
AWS på kartetAWS på kartet
AWS på kartet
Pål Kristensen
 
Introduksjon til Spring Boot
Introduksjon til Spring BootIntroduksjon til Spring Boot
Introduksjon til Spring Boot
Henrik Schwarz
 
GoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen WahlbergGoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen WahlbergFriprogsenteret
 
Automatisert Testing
Automatisert TestingAutomatisert Testing
Automatisert Testing
Anders Sveen
 
Aws på kartet - 2
Aws på kartet - 2Aws på kartet - 2
Aws på kartet - 2
Pål Kristensen
 
Automatisk tilgjengelighetstesting for alle
Automatisk tilgjengelighetstesting for alleAutomatisk tilgjengelighetstesting for alle
Automatisk tilgjengelighetstesting for alle
Cecilie Haugstvedt
 
Objektorientering og design av kode
Objektorientering og design av kodeObjektorientering og design av kode
Objektorientering og design av kodeRune Sundling
 

Similar to Continuous Delivery (20)

JavaZone 2006 - Gode grep når prosjektet blir stort
JavaZone 2006 -  Gode grep når prosjektet blir stortJavaZone 2006 -  Gode grep når prosjektet blir stort
JavaZone 2006 - Gode grep når prosjektet blir stort
 
Smart-APITest.pdf
Smart-APITest.pdfSmart-APITest.pdf
Smart-APITest.pdf
 
Introduksjon til TDD
Introduksjon til TDDIntroduksjon til TDD
Introduksjon til TDD
 
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av AutentiseringsprosjektetIkt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
 
Soa Runtime
Soa RuntimeSoa Runtime
Soa Runtime
 
Ikke test Puppet-koden din
Ikke test Puppet-koden dinIkke test Puppet-koden din
Ikke test Puppet-koden din
 
Blazor - en kjapp intro
Blazor - en kjapp introBlazor - en kjapp intro
Blazor - en kjapp intro
 
Notifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verdenNotifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verden
 
Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010
 
Grunnsikring av windows i praksis presentasjon
Grunnsikring av windows i praksis   presentasjonGrunnsikring av windows i praksis   presentasjon
Grunnsikring av windows i praksis presentasjon
 
Splitt og hersk: Fleksibel arkitektur med mikrotjenester!
Splitt og hersk: Fleksibel arkitektur med mikrotjenester!Splitt og hersk: Fleksibel arkitektur med mikrotjenester!
Splitt og hersk: Fleksibel arkitektur med mikrotjenester!
 
Git i praksis - erfaringer med overgang fra ClearCase til Git
Git i praksis - erfaringer med overgang fra ClearCase til GitGit i praksis - erfaringer med overgang fra ClearCase til Git
Git i praksis - erfaringer med overgang fra ClearCase til Git
 
Smidig2008complexity
Smidig2008complexitySmidig2008complexity
Smidig2008complexity
 
AWS på kartet
AWS på kartetAWS på kartet
AWS på kartet
 
Introduksjon til Spring Boot
Introduksjon til Spring BootIntroduksjon til Spring Boot
Introduksjon til Spring Boot
 
GoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen WahlbergGoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen Wahlberg
 
Automatisert Testing
Automatisert TestingAutomatisert Testing
Automatisert Testing
 
Aws på kartet - 2
Aws på kartet - 2Aws på kartet - 2
Aws på kartet - 2
 
Automatisk tilgjengelighetstesting for alle
Automatisk tilgjengelighetstesting for alleAutomatisk tilgjengelighetstesting for alle
Automatisk tilgjengelighetstesting for alle
 
Objektorientering og design av kode
Objektorientering og design av kodeObjektorientering og design av kode
Objektorientering og design av kode
 

Continuous Delivery

Editor's Notes

  1. Tar utgangspunktet i boka med samme navn av Jez Humble og David Farley. Inneholder mange ting som mange av oss gjør i dag, men også en del nytt og kombinasjonen er nok ny. Og hvor langt man trekker det.
  2. Dette er hovedspørsmålet man bør stille seg. Det har betydning for det hvor fort du kan levere verdi til brukerne.
  3. Feedback er det sentrale. Feedback på mange forskjellige nivåer og til forskjellige deler av organisasjonen.
  4. Deployment skal ikke være stressende og preget av nervøsitet, det skal være dagligdags.
  5. From concept to cash. Tiden må være kort.
  6. Gjenskape en tidligere release med alt som er involvert, inkludert miljø, avhengigheter etc.
  7. Transparens i organisjonen. Informasjon til de som trenger det, når de trenger det.
  8. Robust og sikkert. Så hvordan gjør vi dette?
  9. Alt skal sjekkes inn! Ta vare på konfig for absolutt alt i versjonskontroll. OS-pakker, patching av infrastruktur, dns-oppsett, firewall-config, databasescripts, bibliotek, versjoner. Kort sagt alt. Målet er å kunne gjenopprette en bestemt versjon med miljø med automatisert prosess. Gode commit-meldinger Hold kontroll på external dependencies og biblioteker
  10. CI er basis for CD.
  11. Om commit stage feiler, fiks den umiddelbart.
  12. Vær streng.. Hvor streng avhenger av kontekst.
  13. Teststrategi * Start på starten av prosjektet, bare noen iterasjoner ut øker kostnaden fort. * Business med på test-strategi * Midtveis i prosjekt: Identifiser high value og viktigste use cases og lag happy path akseptansetester for dem (regresjon) * Legacy: Skaff automatiserte tester rundt kode du skal endre på og litt av samme som forrige punkt * Legacy: Validering av state for applikasjon etter testrun (for å fange opp ripple effect i andre deler av system * Teknikker for robust integrasjonstesting: o Simulere nettverksfeil av ulik art (nekte connection, opprette conenction og droppe, ekstremt lang svartid, svare med tulledata, Sende exceptions, * Testere kan pulle en release til testmiljø fra vcs/ci
  14. Egenskaper ved automatiserte akseptansetester o Raskere feedback loop for utviklere o mindre manuell jobb for testere og frigjør tid til exploratory testing o regresjon o Kan være dyre å vedlikeholde o Treffe gui? Helst ikke.
  15. # Prosessen blir transparent og tryggere # Release er hverdagslig og ikke skummelt. # Eliminer waste # Mål er å få tidlig feedback og luke ut builds som ikke kan prodsettes så tidlig som mulig
  16. * Separate kompileringer kan introdusere endringer og krever konfigurasjonsstyring av kompilere på flere steg. Tar også ekstra tid *separasjon mellom kode og konfig (ear/war er dårlige her, siden de pakker alt inn) * Smoketest etter deployment (automatisert) * Deploy til en kopi av prod (så lik som overhodet mulig) * alle endringer skal gjennom pipeline med en gang (alle commit trigger pipeline (hvor pipeline ender er en annen sak) * Dersom ett sted feiler, stop the line (fra lean)
  17. Fremgangsmåte for å lage en deployment pipeline
  18. * Mavens bruk av plugins gjør at du ikke kan reprodusere builds (ut av boksen i alle fall) * rake og buildr er bedre valg for java når man skal automatisere og ha full track på builds? * Lag ett skript for hvert steg i pipeline * Bruk native tools for deployment, ikke rå scripting dersom mulig. Script heller bruken av verktøyet (wsadmin for websphere f.eks) * involver alle som skal deploye i design av deployment-metode * OS-pakker der det er mulig * deploy alt fra scratch, ikke inkrementelt (unntak: clustre og komonenter fra ulike kildekodetrær) * Utvikle deployment-systemet over tid, ikke big bang * Test konfigurasjonen av et miljø
  19. # Blue-green deployment * To sett av prodmiljø * brukere er på blå, deploy til grønn, switch over i router # Canary releasing * Deploye til ekstra miljø eller deler av miljø som ikke er i bruk * rute brukere over for å avdekke problemer * vanskelig med databaseoppgraderinger/migreringer
  20. Branch by abstraction:Lag et abstraksjonslag over den delen som skal endres. Endre/lag ny funksjonalitet og ta vekk gammel versjon/abstraksjonslag når ferdig.
  21. Forskjellige kontekster har forskjellige behov og løsninger. De er forskjellige, men ikke nødvendigvis bedre eller dårligere enn andre.
  22. * manuelle steg i release-prosess * manuell konfigurasjon i produksjon * Ventetid i prosess-steg * Detaljert doc på release-steg * Hyppige endringer på release-prosess under release * Dagen-derpå releaser * Uforutsigbart utfall av releaser * Lite tillit til releasing. * Deploy til prod (eller prod-like) først når man er ferdig.