Nine Ways To Fail At Cloud Native Holly Cummins IBM Garage @holly_cummins
Slide 2
An expert is a person who has found out by their own painful experience all the mistakes that one can make in a very narrow field. — Niels Bohr
IBM Garage
@holly_cummins
Slide 3
I’m a consultant with the IBM Garage. These are my scary stories
#IBMGarage
@holly_cummins
Slide 4
fail 1
the magic morphing meaning
Slide 5
so, what is cloud native? #IBMGarage
@holly_cummins
Slide 6
IBM Garage
@holly_cummins
Slide 7
born on the cloud
IBM Garage
@holly_cummins
Slide 8
born on the cloud
IBM Garage
@holly_cummins
Slide 9
microservices born on the cloud
IBM Garage
@holly_cummins
Slide 10
born on the cloud
IBM Garage
microservices
@holly_cummins
Slide 11
kubernetes born on the cloud
IBM Garage
microservices
@holly_cummins
Slide 12
born on the cloud
IBM Garage
microservices
kubernetes
@holly_cummins
Slide 13
devops born on the cloud
IBM Garage
microservices
kubernetes
@holly_cummins
Slide 14
born on the cloud
IBM Garage
microservices
kubernetes
devops
@holly_cummins
Slide 15
born on the cloud
IBM Garage
microservices
kubernetes
devops
modern and nice
@holly_cummins
Slide 16
born on the cloud
microservices
kubernetes
devops modern and nice
IBM Garage
@holly_cummins
Slide 17
synonym for ‘cloud’ born on the cloud
microservices
kubernetes
devops modern and nice
IBM Garage
@holly_cummins
Slide 18
born on the cloud
microservices
kubernetes
devops
synonym for ‘cloud’
modern and nice
IBM Garage
@holly_cummins
Slide 19
??
IBM Garage
??
??
??
idempotent ??
??
@holly_cummins
Slide 20
rerunnable
IBM Garage
@holly_cummins
Slide 21
born on the cloud
kubernetes microservices
IBM Garage
devops
buzzword for ‘cloud’ modern and nice
rerunnable
@holly_cummins
Slide 22
why are there no microservices in this cloud native app Alice?
#IBMGarage
@holly_cummins
why is the cloud only saving us money, Alice?
#IBMGarage
@holly_cummins
Slide 31
fail 3
the not-actually-continuous continuous integration and continuous deployment
Slide 32
“we have a CI/CD”
#IBMGarage
@holly_cummins
Slide 33
CI/CD is something you do not a tool you buy
#IBMGarage
@holly_cummins
Slide 34
“i’ll merge my branch into our CI next week”
#IBMGarage
@holly_cummins
Slide 35
“CI/CD … CI/CD … CI/CD … we release every six months … CI/CD …. ”
#IBMGarage
@holly_cummins
Slide 36
continuous. I don’t think that word means what you think it means. #IBMGarage
@holly_cummins
Slide 37
how often should you push to master?
#IBMGarage
@holly_cummins
Slide 38
how often should you push to master? integrate?
#IBMGarage
@holly_cummins
Slide 39
how often should you push to master? integrate? every character
#IBMGarage
@holly_cummins
Slide 40
how often should you push to master? integrate? every character
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 41
how often should you push to master? integrate? every character
every commit (several times an hour)
actually continuous … but stupid #IBMGarage
@holly_cummins
Slide 42
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 43
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 44
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 45
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 46
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 47
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 48
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 49
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 50
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 51
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 52
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 53
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 54
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 55
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 56
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 57
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 58
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 59
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 60
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 61
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 62
how often should you test in staging?
#IBMGarage
@holly_cummins
Slide 63
how often should you test in staging? deliver?
#IBMGarage
@holly_cummins
Slide 64
how often should you test in staging? deliver? every push
my favourite
#IBMGarage
@holly_cummins
“this provisioning software is broken” #IBMGarage
@holly_cummins
Slide 81
10 minute provision-time
what we sold
“this provisioning software is broken”
#IBMGarage
@holly_cummins
Slide 82
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 83
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 84
#IBMGarage
@holly_cummins
Slide 85
#IBMGarage
@holly_cummins
Slide 86
old-style governance isn’t going to work #IBMGarage
@holly_cummins
Slide 87
Provider A
#IBMGarage
@holly_cummins
Slide 88
Provider A
Provider B
“we’re going to change cloud provider to fix our procurement process!” #IBMGarage
@holly_cummins
Slide 89
Provider A
Provider B
“we’re going to change cloud provider to fix our procurement process!” #IBMGarage
@holly_cummins
Slide 90
if the developers are the only ones changing, cloud native is not going to work
#IBMGarage
@holly_cummins
Slide 91
fail 5
the mystery money pit
Slide 92
the cloud makes it so easy to provision hardware.
IBM Garage
@holly_cummins
Slide 93
that doesn’t mean the hardware is free.
IBM Garage
@holly_cummins
Slide 94
or useful. IBM Garage
@holly_cummins
Slide 95
Hey boss, I created a Kubernetes cluster.
IBM Garage
@holly_cummins
Slide 96
Hey boss, I created a Kubernetes cluster.
I forgot it for 2 months.
IBM Garage
@holly_cummins
Slide 97
Hey boss, I created a Kubernetes cluster.
I forgot it for 2 months.
… and it’s £1000 a month.
IBM Garage
@holly_cummins
Slide 98
Slide 99
Slide 100
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 101
ouch
IBM Garage
@holly_cummins
Slide 102
“we have no idea how much we’re spending on cloud.”
IBM Garage
@holly_cummins
Slide 103
cloud to manage your clouds
IBM Garage
@holly_cummins
Slide 104
IBM Garage
@holly_cummins
Slide 105
fail 6
cloud-native spaghetti
Slide 106
“every time we change one microservice, another breaks”
#IBMGarage
@holly_cummins
“we’re going too slowly. we need to get rid of COBOL and make microservices!”
#IBMGarage
@holly_cummins
Slide 156
“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
Slide 157
distributed monolith
#IBMGarage
@holly_cummins
Slide 158
distributed monolith but without compile-time checking … or guaranteed function execution
#IBMGarage
@holly_cummins
Slide 159
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