why are there no microservices in this cloud native app Alice?
#IBMGarage
@holly_cummins
Slide 73
why is the cloud only saving us money, Alice?
#IBMGarage
@holly_cummins
Slide 74
fail
microservices envy
Slide 75
microservices are not the goal #IBMGarage
@holly_cummins
Slide 76
microservices are not the goal they are the means #IBMGarage
@holly_cummins
Slide 77
“we’re going too slowly. we need to get rid of COBOL and make microservices!”
#IBMGarage
@holly_cummins
Slide 78
“we’re going too slowly. we need to get rid of COBOL and make microservices!” “… but our release board only meets twice a year.” #IBMGarage
@holly_cummins
distributed monolith but without compile-time checking … or guaranteed function execution
#IBMGarage
@holly_cummins
Slide 83
reasons not to do microservices small team not planning to release independently don’t want complexity of a service mesh - or worse yet, rolling your own domain model doesn’t split nicely #IBMGarage
@holly_cummins
Slide 84
fail
cloud-native spaghetti
Slide 85
“every time we change one microservice, another breaks”
#IBMGarage
@holly_cummins
fail
the not-actually-continuous continuous integration and continuous deployment
Slide 102
“we have a CI/CD”
#IBMGarage
@holly_cummins
Slide 103
CI/CD is something you do not a tool you buy
#IBMGarage
@holly_cummins
Slide 104
“i’ll merge my branch into our CI next week”
#IBMGarage
@holly_cummins
Slide 105
“CI/CD … CI/CD … CI/CD … we release every six months … CI/CD …. ”
#IBMGarage
@holly_cummins
Slide 106
continuous. I don’t think that word means what you think it means. #IBMGarage
@holly_cummins
Slide 107
how often should you push to master?
#IBMGarage
@holly_cummins
Slide 108
how often should you push to master? integrate?
#IBMGarage
@holly_cummins
Slide 109
how often should you push to master? integrate? every character
#IBMGarage
@holly_cummins
Slide 110
how often should you push to master? integrate? every character
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 111
how often should you push to master? integrate? every character
every commit (several times an hour)
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 112
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day)
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 113
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 114
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
once a week
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 115
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
once a week
once a month
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 116
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
once a week
once a month
once every six months
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 117
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
once a week
once a month
once every six months
actually continuous … but stupid #IBMGarage
trunk-based development
@holly_cummins
Slide 118
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
ok
actually continuous … but stupid #IBMGarage
once a week
once a month
once every six months
trunk-based development
@holly_cummins
Slide 119
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
ok
actually continuous … but stupid #IBMGarage
bad
once a week
once a month
once every six months
trunk-based development
@holly_cummins
Slide 120
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
ok
once a week
once a month
once every six months
bad bad
actually continuous … but stupid #IBMGarage
trunk-based development
@holly_cummins
Slide 121
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
ok
once a week
once a month
once every six months
bad bad
seriously?
actually continuous … but stupid #IBMGarage
trunk-based development
@holly_cummins
Slide 122
how often should you push to master? integrate? every character
every commit (several times an hour)
every few commits (several times a day) once a day
ok
once a week
once a month
once every six months
bad bad
my favourite
actually continuous … but stupid #IBMGarage
seriously?
trunk-based development
@holly_cummins
Slide 123
how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter
#IBMGarage
once every two years
@holly_cummins
Slide 124
deploy? how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter
#IBMGarage
once every two years
@holly_cummins
Slide 125
deploy? how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter
once every two years
(need a good handle on feature flags)
#IBMGarage
@holly_cummins
Slide 126
deploy? how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter ok
once every two years
(need a good handle on feature flags)
#IBMGarage
@holly_cummins
Slide 127
deploy? how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter ok
(need a good handle on feature flags)
#IBMGarage
once every two years
oldschool
@holly_cummins
Slide 128
deploy? how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter ok
once every two years
sigh
(need a good handle on feature flags)
#IBMGarage
oldschool
@holly_cummins
Slide 129
deploy? how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter
ok
ok
once every two years
sigh
(need a good handle on feature flags)
#IBMGarage
oldschool
@holly_cummins
Slide 130
deploy? how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter
ok
ok
once every two years
sigh hardcore (need a good handle on feature flags)
#IBMGarage
oldschool
@holly_cummins
Slide 131
deploy? how often should you release? every push (many times a day) every user story every epic
once a sprint once a quarter
ok
ok
once every two years
sigh hardcore (need a good handle on feature flags)
#IBMGarage
my favourite
oldschool
@holly_cummins
Slide 132
how often should you test in staging?
#IBMGarage
@holly_cummins
Slide 133
how often should you test in staging? deliver?
#IBMGarage
@holly_cummins
Slide 134
how often should you test in staging? deliver? every push
my favourite
#IBMGarage
@holly_cummins
“we’ve configured our network! you can either access the cloud servers … or access jira.
#IBMGarage
@holly_cummins
Slide 167
“we’ve configured our network! you can either access the cloud servers … or access jira. to access both you’d need two machines.” #IBMGarage
@holly_cummins
Slide 168
“it takes us a week to start coding.”
#IBMGarage
@holly_cummins
Slide 169
“it takes us a week to start coding.” “two days to get a repo … two days to get a pipeline …”
#IBMGarage
@holly_cummins
“this provisioning software is broken” #IBMGarage
@holly_cummins
Slide 172
10 minute provision-time
what we sold
“this provisioning software is broken”
#IBMGarage
@holly_cummins
Slide 173
what the client thought they’d got 10 minute provision-time
what we sold
3 month provisiontime
“this provisioning software is broken”
#IBMGarage
@holly_cummins
Slide 174
what the client thought they’d got 10 minute provision-time
the reason 3 month provisiontime
84-step pre-approval process what we sold
“this provisioning software is broken”
#IBMGarage
@holly_cummins
Slide 175
#IBMGarage
@holly_cummins
Slide 176
#IBMGarage
@holly_cummins
Slide 177
old-style governance isn’t going to work #IBMGarage
@holly_cummins
Slide 178
Provider A
#IBMGarage
@holly_cummins
Slide 179
Provider A
Provider B
“we’re going to change cloud provider to fix our procurement process!” #IBMGarage
@holly_cummins
Slide 180
Provider A
Provider B
“we’re going to change cloud provider to fix our procurement process!” #IBMGarage
@holly_cummins
Slide 181
if the developers are the only ones changing, cloud native is not going to work
#IBMGarage
@holly_cummins
Slide 182
there is a cost: developers leave
#IBMGarage
@holly_cummins
Slide 183
fail
the mystery money pit
Slide 184
the cloud makes it so easy to provision hardware.
IBM Garage
@holly_cummins
Slide 185
that doesn’t mean the hardware is free.
IBM Garage
@holly_cummins
Slide 186
or useful. IBM Garage
@holly_cummins
Slide 187
Hey boss, I created a Kubernetes cluster.
IBM Garage
@holly_cummins
Slide 188
Hey boss, I created a Kubernetes cluster.
I forgot it for 2 months.
IBM Garage
@holly_cummins
Slide 189
Hey boss, I created a Kubernetes cluster.
I forgot it for 2 months.
… and it’s £1000 a month.
IBM Garage
@holly_cummins
Slide 190
Slide 191
Slide 192
2017 survey
25% of 16,000 servers doing no useful work
#IBMGarage
@holly_cummins
Slide 193
2017 survey
25% of 16,000 servers doing no useful work
“perhaps someone forgot to turn them off” #IBMGarage
@holly_cummins
Slide 194
ouch
IBM Garage
@holly_cummins
Slide 195
There is surely nothing quite so useless as doing with great efficiency what should not be done at all. — Peter Drucker
IBM Garage
@holly_cummins
Slide 196
“we have no idea how much we’re spending on cloud.”
IBM Garage
@holly_cummins
Slide 197
cloud to manage your clouds
IBM Garage
@holly_cummins
Slide 198
IBM Garage
@holly_cummins
Slide 199
FinOps IBM Garage
@holly_cummins
Slide 200
fail
microservices ops mayhem
Slide 201
SRE #IBMGarage
@holly_cummins
Slide 202
site reliability engineering
#IBMGarage
@holly_cummins
if you automate something, change the processes around that assume that the previously manual process is expensive or error prone.
#IBMGarage
@holly_cummins