Continous delivery
-
Upload
andrzej-grzesik -
Category
Technology
-
view
1.015 -
download
0
Transcript of Continous delivery
Andrzej Grzesik
Monday, July 2, 12
CONTINOUS DELIVERYjak to ugryźć?
Andrzej Grzesik
Monday, July 2, 12
GREAT BOOKS!
Monday, July 2, 12
3.6% prelegentów jest z
Monday, July 2, 12
ABOUT:ME
Present
Past
Monday, July 2, 12
I HATE COMPUTERSdisclaimer
Monday, July 2, 12
QUESTIONS?ask them right away!
Monday, July 2, 12
So...
Monday, July 2, 12
because
is more fun than
Monday, July 2, 12
what is.. done?
Monday, July 2, 12
#define done
Monday, July 2, 12
What is done?
Monday, July 2, 12
What is done?
Coded
Monday, July 2, 12
What is done?
Coded
Checked-in
Monday, July 2, 12
What is done?
Coded
Checked-in
Reviewed
Monday, July 2, 12
What is done?
Coded
Checked-in
Reviewed
Built
Monday, July 2, 12
What is done?
Coded
Checked-in
Reviewed
Built
Tested
Monday, July 2, 12
What is done?
Coded
Checked-in
Reviewed
Built
Tested
Demoed
Monday, July 2, 12
not really :-)
Monday, July 2, 12
#redefine done
Monday, July 2, 12
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Monday, July 2, 12
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Agile Manifesto
Monday, July 2, 12
it’s not ready till it’s deployed
done === released
Monday, July 2, 12
feedback!
Monday, July 2, 12
create hypothesis
deliver minimumviable product
get feedback
(repeat)
build&
deploy&
measure&
data&
learn&
ideas&
Eric Ries, The Lean Startup
Monday, July 2, 12
If we can reduce the time between major iterations
We can increase our odds of successEric Ries, Lean Startup
Monday, July 2, 12
If we can reduce the time between major iterations
We can increase our odds of successEric Ries, Lean Startup
Monday, July 2, 12
How long would it take your organization to deploy a change that involved just one single line of code?
Do you do this on a repeatable, reliable basis?
Mary and Tom Poppendieck,Implementing Lean Software Development
Monday, July 2, 12
How long would it take your organization to deploy a change that involved just one single line of code?
Do you do this on a repeatable, reliable basis?
Mary and Tom Poppendieck,Implementing Lean Software Development
Monday, July 2, 12
repeatable
Monday, July 2, 12
HOW?!
Monday, July 2, 12
The Deployment Pipelineentreth:
Monday, July 2, 12
The Deployment Pipeline
Monday, July 2, 12
The Deployment Pipeline
compile
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
artifact repository
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Acceptance testing
artifact repository
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Acceptance testing
Capacity testing
artifact repository
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Acceptance testing
Capacity testing
Manual testing
artifact repository
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Acceptance testing
Capacity testing
Manual testing Release
artifact repository
Monday, July 2, 12
build only once!
Monday, July 2, 12
The Deployment Pipeline
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Acceptance testing
Capacity testing
artifact repository
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Acceptance testing
Capacity testing
Manual testing
artifact repository
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Acceptance testing
Capacity testing
Manual testing Release
artifact repository
Monday, July 2, 12
The Deployment Pipeline
unit testcompile
package
Acceptance testing
Capacity testing
Manual testing Release
artifact repository
fear!
Monday, July 2, 12
automate everything!(almost)
Monday, July 2, 12
automate everything!
Monday, July 2, 12
and?
Monday, July 2, 12
well, it’s BIG
Monday, July 2, 12
all code is production ready
Monday, July 2, 12
every version is a Release Candidate
Monday, July 2, 12
Pro tip: --version
Monday, July 2, 12
antipatterns
Monday, July 2, 12
deploying manuallyis evil!
Monday, July 2, 12
error-prone
http://www.flickr.com/photos/aaronjacobs/64368770/
Monday, July 2, 12
always differentrepeatable
Monday, July 2, 12
impossible to test
Monday, July 2, 12
voodoo
http://flickr.com/photos/35541100@N00/2486381001/
Monday, July 2, 12
2 AM deploys
http://www.flickr.com/photos/dhdesign/1096464615/sizes/z/in/photostream/
Monday, July 2, 12
the “deploy” team
Monday, July 2, 12
deploying rarely/latesymptomps: “alpha”, “beta”, “gold”
Monday, July 2, 12
Monday, July 2, 12
deploying rarely
late first contact with reality
creates unrealistic assumptions
tested.. in dev
Monday, July 2, 12
do you avoid deploys?
Monday, July 2, 12
deploy each?
year
quarter
week
...
Monday, July 2, 12
if it hurtsdo it more often!
practice, practice, practice
Monday, July 2, 12
incremental, frequent releases reduce risk
Monday, July 2, 12
provide data
Monday, July 2, 12
give rollback points
Monday, July 2, 12
some stats
Facebook - deploy every 10 minutes
Netflix
Etsy - 50-60 deploys/day
last project - 1374 commits, 1057 deployments, <8 months
Monday, July 2, 12
Monday, July 2, 12
environments
Monday, July 2, 12
If I erased ALL your production machines, how long would you need
to be back up?
Monday, July 2, 12
well, code is in Git mercurial, subversion, ClearCase, whathaveyou
Monday, July 2, 12
Imagine:
http://www.flickr.com/photos/roadhunter/68017745/
Monday, July 2, 12
infrastructure and configuration is just as important
Monday, July 2, 12
version it!(puppet, chef, etc)
Monday, July 2, 12
Befriend some admins :-)
Monday, July 2, 12
and version everything
Monday, July 2, 12
manual configuration of environments
not repeatable
privileged team of “magicians”
slight differences create errors
hard to version
doesn’t scale
Monday, July 2, 12
rollback, anyone?
Monday, July 2, 12
trucks
Monday, July 2, 12
Monday, July 2, 12
meanwhile, in the real world
Monday, July 2, 12
deployshow do I?
Monday, July 2, 12
deploys
blue-green
canary
emergency fixes
Monday, July 2, 12
bluegreen
traffic
Monday, July 2, 12
full bluegreen is costlybut great for availability
Monday, July 2, 12
canary
Monday, July 2, 12
Monday, July 2, 12
emergency fixes
Monday, July 2, 12
emergency fixesgo the same way
Monday, July 2, 12
DON’T break rules
Monday, July 2, 12
caveats!
Monday, July 2, 12
caveats
State
Configuration vs JEE
Monday, July 2, 12
caveat: datastores
ideally: each app has it’s own
Monday, July 2, 12
caveat: datastores
really: must be scripted
migrations scripts + from scratch
have tests talking to the db
test each datastore
Monday, July 2, 12
maybe event sourcing?
Monday, July 2, 12
branching
Monday, July 2, 12
Monday, July 2, 12
if your system looks like that
Monday, July 2, 12
cut!
Monday, July 2, 12
Monday, July 2, 12
have integration tests
have a “test” system
Monday, July 2, 12
desktops
LOVE your autoupdate
build-in version checking and inform user
Monday, July 2, 12
desktops
Do
Monday, July 2, 12
desktops
or
Monday, July 2, 12
in practice
modules, modules, modules
pre-tested commits rock.. a bit
dvcs rock a lot!
VMs rock a lot^2!
Monday, July 2, 12
there are tools
Monday, July 2, 12
Go ($$$)
Monday, July 2, 12
Monday, July 2, 12
is awesome
Monday, July 2, 12
+
Monday, July 2, 12
resources
http://continuousdelivery.com
http://lmgtfy.com/?q=continuous+delivery
Monday, July 2, 12
kthxbye!
Monday, July 2, 12