continuous delivery in practice
TRANSCRIPT
Continuous DeliveryIn Practice
Patric Fornasier
Marc Hofer
Software Engineer ThoughtWorks・Springer・Yelp・Swisscom ♥ people and building stuff
Software Engineer Zühlke ・ThoughtWorks・effective Agile
♥ to learn from mistakes
Agendawhy? what? how?
Why?
STATE of DevOps report
Higher IT performance
60x failures 168x recovery
30X deploys 200x lead times
Higher organisational performance2x profitability
market share productivity
Higher throughput & stability11.6 secs
amazon - may 2011
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
‒ Agile Manifesto
“
time
planspec
designcode
testdeploy
iteration 1 iteration 2iteration ...
iteration / sprint
idea
time
fall
planspec
testdeploy
SCRUM
ScrumWater
When I come in one day and tell you the project will end in one week, you have to be ready to package up and deliver what you’ve got as the final product.
‒ Tom DeMarco
IEEE Software, 2009
“
IDEAS
CODEDATA
learn build
measure
ReduceRISK
chan
ge
timech
ange
time
big change= big risk
small change= small risk
Mean Time To Recover168x
TRACK real
PROGRESS
What is real progress?
WHAt?
PracticesAutomation
Version ControlContinuous Integration
Deployment Pipeline
dev to release
Mindsetlean agile
devOps
HOw?
Value Stream Mapping
PROCESS A
PROCESS B
PROCESS C
PROCESS D
supplier customer
information flows
material flows
PROCESS A DEV RELEASE PROCESS
D
supplier customer
information flows
material flows
continuous deluvery
How long would it take your organization to deploy a change that involved just one single line of code [...] on a repeatable, reliable basis?
‒ Mary and Tom Poppendieck
Implementing Lean Software Development, 2006
“
Deployment Pipeline
Build
commit
Acc.Tests Staging Prod
automaticpromotion gated
verify
store
time
time
Build Acc.Tests
Staging Prod
component X
Build Acc.Tests
component YSys.
Tests
http://arojgeorge.ghost.io/
time
Build
Acc.Tests: n
Staging ProdCDCTests
Sys.Tests
Acc.Tests: 1
PerfTests
70,000 tests 350 runs 700 days
3,000 concurrent tests 200 machines1.5M docker containers
time
Build Acc.Tests
Staging Prod
Build Acc.Tests
Staging Prod
Build Acc.Tests
Staging Prod
Build Acc.Tests
Staging Prod
Build Acc.Tests
Staging Prod#5
#4
#3
#2
#1
https://medium.com/continuous-delivery/architecting-for-continuous-delivery-77890e139ef6
VERSIONCONTROL
TEST
SYSTEM CONFIG
build scripts
APP CONFIGTOOLSgit
HG...
DB SCRIPTSCODE
DEPLOYMENT SCRIPTS
DEPS
INFRA CONFIG
DOCS
IDE CONFIG
ENCRYPTED (!!)SENSITIVE DATA
Continuous Integration
...is more often than you think.
develop
build
build
pull
push
time
time
commit
pull
build
build
pull
develop
build
push
pull
build
commit
build
pull
develop
build
push
pull
build
commit
BUILD Automation
FAST
GATE TO COmmit
AGREED W/TEAM
FEEDBACK
TOOLSMAKEBAZEL
GRADLERAKE ...
VERSION CONTROLLED
COMMANDLINE
SAME ON CI
COMPILE
TESTS
PACKAGE
CHECKS
...
test automation
find bugs prevent bugs
MANUAL TESTS
AUTOMATIONSUITES
UNIT
# tests# testscon
fiden
ce
FUNCTIONAL
SYS
INTEGRATION
UNIT
confid
ence
time
Unittests
inttests
acc.tests
trigger
feedback
infra & environment automation
Deployment automation
1) install and boot new version 2) run health checks 3) route traffic 4) monitor 5) repeat
App B
App C
App A
App A'
routeLOADBALANCER/
DNS
inboundtraffic
Week 12Week 1
RELEASING
Deployment != Release… Experiment
… Dark Launching
RECAP
don't ignore the data
Automate
Automate
Automate
it's stuff you do...
Thanks@patforna @mhoefi