Page 1
Austin Copenhagen Dubai London Madrid Melbourne Munich
Milan New York Nice Raleigh San Francisco São Paulo Singapore Tokyo Toronto
Cloud Native is About Culture, Not Containers
Holly Cummins IBM Garage @holly_cummins
(how to not fail at cloud native)
Page 3
@holly_cummins#IBMGarage
what is cloud native?
Page 4
@holly_cummins#IBM #IBMGarage
Page 5
@holly_cummins#IBM #IBMGarage
Credit to @bibryam
Page 6
@holly_cummins#IBM #IBMGarage
(a great article, btw)
Page 7
@holly_cummins#IBM #IBMGarage
(a great article, btw)
Page 8
@holly_cummins#IBM #IBMGarage
Page 9
@holly_cummins#IBM #IBMGarage
microservicescontainers
dynamically orchestrated
Page 10
@holly_cummins#IBM #IBMGarage
“the cloud native computing
foundation is wrong …
about cloud native.”
g o t o ;
Page 11
@holly_cummins#IBM #IBMGarage
“the cloud native computing
foundation is wrong …
about cloud native.” Holly
g o t o ;
Page 12
@holly_cummins#IBM #IBMGarage
Page 13
@holly_cummins#IBM #IBMGarage
build great products faster
Page 14
@holly_cummins#IBMGarage
why?
Page 15
@holly_cummins#IBM #IBMGarage
what problem are we trying to solve?
Page 16
@holly_cummins#IBM #IBMGarage
Page 17
@holly_cummins#IBM #IBMGarage
CV-driven development.
Page 18
@holly_cummins#IBM #IBMGarage
“my CV looks dull” is not a good reason
to go cloud native
Page 19
@holly_cummins#IBM #IBMGarage
why cloud?
Page 20
@holly_cummins#IBM #IBMGarage
cost
Page 21
@holly_cummins#IBM #IBMGarage
e l a s t i c i t y
Page 22
@holly_cummins#IBM #IBMGarage
speed
Page 23
@holly_cummins#IBM #IBMGarage
exotic capabilities
Page 24
@holly_cummins#IBM #IBMGarage
why cloud native?
Page 25
@holly_cummins#IBM #IBMGarage
Page 26
@holly_cummins#IBM #IBMGarage
12 factors
Page 27
@holly_cummins#IBM #IBMGarage
12 factors
how to write a
cloud application so you don’t get
electrocuted
Page 28
@holly_cummins#IBM #IBMGarage
Page 29
@holly_cummins#IBM #IBMGarage
Page 30
@holly_cummins#IBM #IBMGarage
cloud native is not a synonym for
‘microservices’
Page 31
@holly_cummins#IBM #IBMGarage
Page 32
@holly_cummins#IBM #IBMGarage
if ‘cloud native’ has to be a synonym for anything, it would be
‘idempotent’
Page 33
@holly_cummins#IBM #IBMGarage
if ‘cloud native’ has to be a synonym for anything, it would be
‘idempotent’
which definitely needs a synonym
Page 34
@holly_cummins#IBM #IBMGarage
containers are a good base
Page 35
@holly_cummins#IBM #IBMGarage
containers are a good base
it’s not a competition to see how many you can have
Page 36
@holly_cummins#IBM #IBMGarage
you do not need intra-app http communication to be cloud native
Page 37
@holly_cummins#IBM #IBMGarage
Page 38
@holly_cummins#IBM #IBMGarage
complexity adds expense
Page 39
@holly_cummins#IBM #IBMGarage
unnecessary complexity adds unnecessary expense
Page 40
@holly_cummins#IBM #IBMGarage
Page 41
@holly_cummins#IBM #IBMGarage
space pencil
Page 42
@holly_cummins#IBM #IBMGarage
space pencil$128.89
Page 43
@holly_cummins#IBM #IBMGarage
space pencil$128.89
space pen
Page 44
@holly_cummins#IBM #IBMGarage
space pencil$128.89
space pen$2.39
Page 45
@holly_cummins#IBM #IBMGarage
space pencil$128.89
space pen$2.39
+medical bills
Page 46
@holly_cummins#IBM #IBMGarage
accidental complexity
essential complexity
Page 47
@holly_cummins#IBM #IBMGarage
accidental complexity
essential complexity
“this will impress my boss” complexity
Page 48
@holly_cummins#IBM #IBMGarage
2010 the dawn of cloud native
Page 49
@holly_cummins#IBM #IBMGarage
Page 50
@holly_cummins#IBM #IBMGarage
behaves well on the cloud
Page 51
@holly_cummins#IBM #IBMGarage
behaves well on the cloud written for the cloud
Page 52
@holly_cummins#IBM #IBMGarage
this is all how we run our application, not what’s in it
Page 53
@holly_cummins#IBM #IBMGarage
speed
Page 54
@holly_cummins#IBM #IBMGarage
speed
Page 55
@holly_cummins#IBM #IBMGarage
what’s the point of getting the same old stuff to market faster?
Page 56
@holly_cummins#IBM #IBMGarage
what’s the point of being able to respond to the market, if you don’t?
Page 57
@holly_cummins#IBM #IBMGarage
what’s the point of architecture that can go
faster, if you don’t go faster?
Page 58
@holly_cummins#IBMGarage
how to fail at cloud native
Page 59
@holly_cummins#IBM #IBMGarage
“each of our microservices has duplicated the same object
model … with twenty classes and seventy fields”
Page 60
@holly_cummins#IBM #IBMGarage
Microservice
Page 61
@holly_cummins#IBM #IBMGarage
Microservice
Domain
Page 62
@holly_cummins#IBM #IBMGarage
Microservice
Domain
Page 63
@holly_cummins#IBM #IBMGarage
“every time we change code, something breaks”
Page 64
@holly_cummins#IBM #IBMGarage
distributed monolith
Page 65
@holly_cummins#IBM #IBMGarage
cloud-native spaghetti is still spaghetti (Image: Cloudy with a Chance of Meatballs.)
Page 66
@holly_cummins#IBM #IBMGarage
just because a system runs across 6 containers doesn’t mean it’s decoupled
Page 67
@holly_cummins#IBM #IBMGarage
distributed != decoupled
Page 68
@holly_cummins#IBM #IBMGarage
Page 69
@holly_cummins#IBM #IBMGarageCourtesy NASA/
JPL-Caltech
Page 70
@holly_cummins© 2019 IBM Corporation #IBMGarage
Page 71
@holly_cummins© 2019 IBM Corporation #IBMGarage
Page 74
metric units
imperial units
Page 75
distributing did not help
metric units
imperial units
Page 76
@holly_cummins#IBM #IBMGarage
microservices need consumer-driven contract tests
Page 77
@holly_cummins#IBM #IBMGarage
“our tests aren’t automated”
Page 78
@holly_cummins#IBM #IBMGarage
“we don’t know if our code works”
Page 79
@holly_cummins#IBM #IBMGarage
systems will behave in unexpected ways
Page 80
@holly_cummins#IBM #IBMGarage
documentation can be wrong
Page 81
@holly_cummins#IBM #IBMGarage
dependency updates can change behaviour
Page 82
@holly_cummins#IBM #IBMGarage
Page 83
@holly_cummins#IBM #IBMGarage
Page 84
@holly_cummins#IBM #IBMGarage
“Had we done end-to-end testing, we believe this error would have been caught.”
Arthur Stephenson Chief Investigator
Page 85
@holly_cummins#IBM #IBMGarage
“we can’t ship until we have
more confidence in the quality”
Page 86
@holly_cummins#IBM #IBMGarage
microservices need automated integration tests
Page 87
@holly_cummins#IBM #IBMGarage
“we don’t know when the build is broken”
not a good CI/CD indicator a good CI/CD indicator
Page 88
@holly_cummins#IBM #IBMGarage
a good build radiator
Page 89
@holly_cummins#IBM #IBMGarage
Page 90
@holly_cummins#IBM #IBMGarage
“oh yes, that build has been
broken for a few weeks…”
Page 91
@holly_cummins#IBM #IBMGarage
how to brick a spaceprobe
Page 92
@holly_cummins#IBM #IBMGarage
“we couldn’t get the automated checks to work,
so we bypassed them”
Page 93
@holly_cummins#IBM #IBMGarage
“we’ve scheduled the
architecture board review for a month after the
project ships”
Page 94
@holly_cummins#IBM #IBMGarage
Page 95
@holly_cummins#IBM #IBMGarage
navigators warned something was wrong
Page 96
@holly_cummins#IBM #IBMGarage
navigators warned something was wrong
they didn’t fill in the right form
Page 97
@holly_cummins#IBM #IBMGarage
navigators warned something was wrong
they didn’t fill in the right formso nothing was done
Page 98
@holly_cummins#IBM #IBMGarage
does the process add value?
Page 99
@holly_cummins#IBM #IBMGarage
extreme programming is the right kind of rigour
Page 100
@holly_cummins#IBM #IBMGarage
extreme programming is the right kind of rigour
test-driven development
Page 101
@holly_cummins#IBM #IBMGarage
extreme programming is the right kind of rigour
test-driven developmentpair programming
Page 102
@holly_cummins#IBM #IBMGarage
extreme programming is the right kind of rigour
test-driven developmentpair programming
optimise for feedback
Page 103
@holly_cummins#IBM #IBMGarage
“but it’s in the plan”
Page 104
@holly_cummins#IBM #IBMGarage
“but it’s not in the plan”
Page 106
lots of bulkheads
Page 107
@holly_cummins#IBM #IBMGarage
it was too big
Page 108
@holly_cummins#IBM #IBMGarage
lookouts saw the iceberg but the ship wasn’t nimble enough to avoid it
Page 109
@holly_cummins#IBM #IBMGarage
NASA Langley 1961
Page 110
@holly_cummins#IBM #IBMGarage
IBM 7090 (large!)
NASA Langley 1961
Page 111
@holly_cummins#IBM #IBMGarage
IBM 7090 (large!)
door (normal-sized)
NASA Langley 1961
Page 112
@holly_cummins#IBM #IBMGarage
IBM 7090 (large!)
door (normal-sized)
NASA Langley 1961
Page 113
@holly_cummins#IBM #IBMGarage
plans are always wrong success is in how you respond
Page 114
@holly_cummins#IBM #IBMGarage
“we can’t ship until every feature is
complete”
Page 115
@holly_cummins#IBM #IBMGarage
how not to drive a car
Page 116
@holly_cummins#IBM #IBMGarage
they often couldn’t see the explorer
Page 117
@holly_cummins#IBM #IBMGarage
feedback is good business
Page 118
@holly_cummins#IBM #IBMGarage
feedback is good engineering
Page 119
@holly_cummins#IBM #IBMGarage
mvp hurtsan
Page 120
@holly_cummins#IBM #IBMGarage
if you're not embarrassed by your first release it was
too late
Page 121
@holly_cummins#IBM #IBMGarage
experiments can mean failure
Page 122
@holly_cummins#IBM #IBMGarage
experiments can mean failureexperiments mean failure
Page 123
The titanic staircase
and lifeboats
Page 124
@holly_cummins#IBM #IBMGarage
users will have weird behaviours
Page 125
@holly_cummins#IBM #IBMGarage
optimise for recovery
Page 126
@holly_cummins#IBM #IBMGarage
unrecoverable
Page 127
@holly_cummins#IBM #IBMGarage
manual intervention
bricked
back in ms no data loss
handoffs
fast, but data lost
Page 128
@holly_cummins#IBM #IBMGarage
business recoverability
Page 129
@holly_cummins#IBM #IBMGarage
remember, users will have weird behaviours
Page 130
@holly_cummins#IBM #IBMGarage
speed
Page 131
@holly_cummins#IBM #IBMGarage
slow is demoralising
for teams
Page 132
@holly_cummins#IBM #IBMGarage
fast is good
business
Page 133
@holly_cummins#IBM #IBMGarage
A late change in requirements is a competitive advantage.
–Mary Poppendieck
Page 134
@holly_cummins#IBM #IBMGarage
more feedback → more accuracy
Page 135
@holly_cummins#IBM #IBMGarage
cloud rescued developers from tedium and toil
Page 136
@holly_cummins#IBM #IBMGarage
cloud native should feel
fun
Page 138
https://www.ibm.com/legal/us/en/copytrade.shtml 101
®
@holly_cummins