overcoming the fear of deployments
TRANSCRIPT
Overcoming the fear of deployments
by @andreitognolo
As we grow up, we're often encouraged to think of fear as a weakness,
just another childish thing to discard (…)
Karen Thompson Walker [1]
Shelly Kagan [2]
SOMETHING BAD
3 Conditions
SOMETHING BAD
3 Conditions
NON-NEGLIGIBLECHANCE
0% 100%
Shelly Kagan [2]
SOMETHING BAD
3 Conditions
NON-NEGLIGIBLECHANCE
SOMEUNCERTAINTY
0% 100%
Shelly Kagan [2]
SOMETHING BAD
3 Conditions
NON-NEGLIGIBLECHANCE
SOMEUNCERTAINTY
0% 100%
(something that you care)
(something unpredictable)
Shelly Kagan [2]
(un)predictability
Is it possible to have a completely predictabledeployment process?
(un)predictability
(un)predictability
Construct a house
(un)predictability
Cynefin Framework [3]
(COMPLICATED)
cause and effect requires analysis
Construct a house Create software
(un)predictability
(COMPLICATED) (COMPLEX) (*)
cause and effect can only be perceived in retrospect, but not in
advance
cause and effect requires analysis
Cynefin Framework [3](*) Software development is not only made of complex activities
Construct a house Create software
(un)predictability
(COMPLICATED)
Require tests after!
cause and effect can only be perceived in retrospect, but not in
advance
cause and effect requires analysis
Cynefin Framework [3](*) Software development is not only made of complex activities
(COMPLEX) (*)
(un)predictability
Is it possible to have a completely predictabledeployment process?
(un)predictability
Is it possible to have a completely predictabledeployment process?
Not completely predictable
(un)predictability
Is it possible to have a completely predictabledeployment process?
Not completely predictable
Some fear makes sense
The amount of fear should be appropriate to the size of "the bad"
How much fear?
Worst thing possibleR
eque
sts
per s
econ
d
Worst thing possibleR
eque
sts
per s
econ
d
Deploy
Req
uest
s pe
r sec
ond
Worst thing possible
Deploy
Worst thing possible
deploy new version
Make it available
(avoiding)
Worst thing possible
deploy new version
Make it available
smoke test
(avoiding)
A really bad thing
run builds
A really bad thing
run builds
A really bad thing
run builds
build logs
A really bad thing
run builds
build logs
tail logs
A really bad thing
TestPyramid
Martin Fowler [4]
(avoiding)
You can’t predict everything
ps: I don’t like gambling
+ > 5
You can’t predict everything
ps: I don’t like gambling
Are you afraid of betting € 10,000?
+ > 5
You can’t predict everything
One after the
After the first result, you can give up and lose € 1,000
ps: I don’t like gambling
(avoiding)
You can’t predict everything(avoiding)
You can’t predict everything
FEATURE TOGGLE
if toggle on { new code
} else { old code
}
(avoiding)
You can’t predict everything
FEATURE TOGGLE
(avoiding)
if toggle on { new code
} else { old code
}
What is the cause?
Create software(COMPLEX)
cause and effect can only be perceived in retrospect, but not in
advance
What is the cause?
07fc5cb Add ability to ... 1c6a8fb Refactor database 79b83c6 Remove unused ... 657fdea Add migration ... 07537c2 Change signature ... 6b7a12d Improve ajax ... 7bffaa4 Add stylesheet ... ce9676d Add dependency ... cb9b60b Change nginx ... 3311736 Remove duplicated ...
What is the cause?
May 2015 [5]
What is the cause?
master
my-branchmerge
deploy
What is the cause?
master
deploys
(avoiding)
TRUNK BASED DEVELOPMENT
What is the cause?
master
deploys
Feature Toggle
(avoiding)
TRUNK BASED DEVELOPMENT
deployment != release
What is the cause?
79b83c6 Remove unused ...
master
(avoiding)
What is the cause?
master
deploys
If it hurts, do it more often
If you are afraid, do it more often
(avoiding)
Culture
Culture
If people are afraid to get blamed, they will usually hide problems, at the risk of creating even bigger problems.
Highly unhealthy.
Blog post link [6]
Culture
Development Team
Operations Team
It’s your fault!
No, it’s your fault!
Culture
It’s our responsibility!
DevOps Culture
Takeaway List
Takeaway List
Don’t be afraid to be afraid :)
Takeaway List
[1] https://www.ted.com/talks/karen_thompson_walker_what_fear_can_teach_us
[2] http://oyc.yale.edu/philosophy/phil-176/lecture-22
[3] https://en.wikipedia.org/wiki/Cynefin_Framework
[4] http://martinfowler.com/bliki/TestPyramid.html
[5] https://www.thoughtworks.com/radar/techniques/long-lived-branches-with-gitflow
[6] http://tech.transferwise.com/blameless-postmortems/
References