Nine Ways To Fail At Cloud Native Holly Cummins IBM Garage @holly_cummins

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

I’m a consultant with the IBM Garage. These are my scary stories #IBMGarage @holly_cummins

fail 1 the magic morphing meaning

so, what is cloud native? #IBMGarage @holly_cummins

IBM Garage @holly_cummins

born on the cloud IBM Garage @holly_cummins

born on the cloud IBM Garage @holly_cummins

microservices born on the cloud IBM Garage @holly_cummins

born on the cloud IBM Garage microservices @holly_cummins

kubernetes born on the cloud IBM Garage microservices @holly_cummins

born on the cloud IBM Garage microservices kubernetes @holly_cummins

devops born on the cloud IBM Garage microservices kubernetes @holly_cummins

born on the cloud IBM Garage microservices kubernetes devops @holly_cummins

born on the cloud IBM Garage microservices kubernetes devops modern and nice @holly_cummins

born on the cloud microservices kubernetes devops modern and nice IBM Garage @holly_cummins

synonym for ‘cloud’ born on the cloud microservices kubernetes devops modern and nice IBM Garage @holly_cummins

born on the cloud microservices kubernetes devops synonym for ‘cloud’ modern and nice IBM Garage @holly_cummins

?? IBM Garage ?? ?? ?? idempotent ?? ?? @holly_cummins

rerunnable IBM Garage @holly_cummins

born on the cloud kubernetes microservices IBM Garage devops buzzword for ‘cloud’ modern and nice rerunnable @holly_cummins

why are there no microservices in this cloud native app Alice? #IBMGarage @holly_cummins

fail 2 the muddy goal

why cloud? © 2019 IBM Corporation #IBMGarage @holly_cummins

cost © 2019 IBM Corporation #IBMGarage @holly_cummins

cost el a s t i c i t y © 2019 IBM Corporation #IBMGarage @holly_cummins

s cost pee d © 2019 IBM Corporation #IBMGarage @holly_cummins

exotic capabilities © 2019 IBM Corporation #IBMGarage @holly_cummins

security @holly_cummins

why is the cloud only saving us money, Alice? #IBMGarage @holly_cummins

fail 3 the not-actually-continuous continuous integration and continuous deployment

“we have a CI/CD” #IBMGarage @holly_cummins

CI/CD is something you do not a tool you buy #IBMGarage @holly_cummins

“i’ll merge my branch into our CI next week” #IBMGarage @holly_cummins

“CI/CD … CI/CD … CI/CD … we release every six months … CI/CD …. ” #IBMGarage @holly_cummins

continuous. I don’t think that word means what you think it means. #IBMGarage @holly_cummins

how often should you push to master? #IBMGarage @holly_cummins

how often should you push to master? integrate? #IBMGarage @holly_cummins

how often should you push to master? integrate? every character #IBMGarage @holly_cummins

how often should you push to master? integrate? every character actually continuous … but stupid #IBMGarage @holly_cummins

how often should you push to master? integrate? every character every commit (several times an hour) actually continuous … but stupid #IBMGarage @holly_cummins

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

how often should you test in staging? #IBMGarage @holly_cummins

how often should you test in staging? deliver? #IBMGarage @holly_cummins

how often should you test in staging? deliver? every push my favourite #IBMGarage @holly_cummins

“we can’t actually release this.” #IBMGarage @holly_cummins

why? #IBMGarage @holly_cummins

what’s stopping more frequent deploys? #IBMGarage @holly_cummins

“we can’t release this microservice… we deploy all our microservices at the same time.” #IBMGarage @holly_cummins

“we can’t ship until every feature is complete” © 2019 IBM Corporation #IBMGarage @holly_cummins

if you’re not embarrassed by your first release it was too late - Reid Hoffman #IBMGarage @holly_cummins

what’s the point of architecture that can go faster, if you don’t go faster? © 2019 IBM Corporation #IBMGarage @holly_cummins

how not to drive a car © 2019 IBM Corporation #IBMGarage @holly_cummins

feedback is good engineering © 2019 IBM Corporation #IBMGarage @holly_cummins

feedback is good business © 2019 IBM Corporation #IBMGarage @holly_cummins

deferred wiring #IBMGarage @holly_cummins

feature flags #IBMGarage @holly_cummins

A/B testing canary deploys #IBMGarage @holly_cummins

fail 4 the lockeddown totally rigid inflexible un-cloudy cloud

“we’ve scheduled the architecture board review for a month after the project is ready to ship” © 2019 IBM Corporation #IBMGarage @holly_cummins

“this provisioning software is broken” #IBMGarage @holly_cummins

10 minute provision-time what we sold “this provisioning software is broken” #IBMGarage @holly_cummins

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

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

#IBMGarage @holly_cummins

#IBMGarage @holly_cummins

old-style governance isn’t going to work #IBMGarage @holly_cummins

Provider A #IBMGarage @holly_cummins

Provider A Provider B “we’re going to change cloud provider to fix our procurement process!” #IBMGarage @holly_cummins

Provider A Provider B “we’re going to change cloud provider to fix our procurement process!” #IBMGarage @holly_cummins

if the developers are the only ones changing, cloud native is not going to work #IBMGarage @holly_cummins

fail 5 the mystery money pit

the cloud makes it so easy to provision hardware. IBM Garage @holly_cummins

that doesn’t mean the hardware is free. IBM Garage @holly_cummins

or useful. IBM Garage @holly_cummins

Hey boss, I created a Kubernetes cluster. IBM Garage @holly_cummins

Hey boss, I created a Kubernetes cluster. I forgot it for 2 months. IBM Garage @holly_cummins

Hey boss, I created a Kubernetes cluster. I forgot it for 2 months. … and it’s £1000 a month. IBM Garage @holly_cummins

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

ouch IBM Garage @holly_cummins

“we have no idea how much we’re spending on cloud.” IBM Garage @holly_cummins

cloud to manage your clouds IBM Garage @holly_cummins

IBM Garage @holly_cummins

fail 6 cloud-native spaghetti

“every time we change one microservice, another breaks” #IBMGarage @holly_cummins

distributed != decoupled © 2019 IBM Corporation #IBMGarage @holly_cummins

“each of our microservices has duplicated the same object model … with twenty classes and seventy fields” © 2019 IBM Corporation #IBMGarage @holly_cummins

Microservice © 2019 IBM Corporation #IBMGarage @holly_cummins

Microservice Domain © 2019 IBM Corporation #IBMGarage @holly_cummins

Microservice Domain © 2019 IBM Corporation #IBMGarage @holly_cummins

© 2019 IBM Corporation #IBMGarage @holly_cummins

Courtesy NASA/ JPL-Caltech © 2019 IBM Corporation #IBMGarage @holly_cummins

© 2019 IBM Corporation #IBMGarage @holly_cummins

© 2019 IBM Corporation #IBMGarage @holly_cummins

metric units

metric units imperial units

metric units imperial units distributing did not help

microservices need consumer-driven contract tests © 2019 IBM Corporation #IBMGarage @holly_cummins

fail 7 the ‘someday’ automation

“our tests aren’t automated” © 2019 IBM Corporation #IBMGarage @holly_cummins

“we don’t know if our code works” © 2019 IBM Corporation #IBMGarage @holly_cummins

“we don’t know if our code works” © 2019 IBM Corporation #IBMGarage @holly_cummins

systems will behave in unexpected ways © 2019 IBM Corporation #IBMGarage @holly_cummins

dependency updates can change behaviour © 2019 IBM Corporation #IBMGarage @holly_cummins

“we can’t ship until we have more confidence in the quality” © 2019 IBM Corporation #IBMGarage @holly_cummins

microservices need automated integration tests © 2019 IBM Corporation #IBMGarage @holly_cummins

not a good CI/CD indicator a good CI/CD indicator “we don’t know when the build is broken” © 2019 IBM Corporation #IBMGarage @holly_cummins

a good build radiator © 2019 IBM Corporation #IBMGarage @holly_cummins

© 2019 IBM Corporation #IBMGarage @holly_cummins

“oh yes, that build has been broken for a few weeks…” © 2019 IBM Corporation #IBMGarage @holly_cummins

fail 8 microservices ops mayhem

@holly_cummins

security @holly_cummins

app Built artefact boundary middleware OS virtualisation hardware @holly_cummins

app app middleware middleware OS OS virtualisation hardware Built artefact boundary virtualisation hardware @holly_cummins

app app middleware middleware OS OS virtualisation hardware Built artefact boundary virtualisation hardware @holly_cummins

Developers are responsible for security in the cloud. @holly_cummins

build security in everywhere

@holly_cummins

make releases deeply boring @holly_cummins

how to brick a spaceprobe Phobos 1 © 2019 IBM Corporation #IBMGarage @holly_cummins

“we couldn’t get the automated checks to work, so we bypassed them” © 2019 IBM Corporation #IBMGarage @holly_cummins

SRE #IBMGarage @holly_cummins

site reliability engineering #IBMGarage @holly_cummins

observability #IBMGarage @holly_cummins

recoverability © 2019 IBM Corporation #IBMGarage @holly_cummins

unrecoverable © 2019 IBM Corporation #IBMGarage @holly_cummins

back in ms no data loss manual intervention bricked fast, but data lost handoffs © 2019 IBM Corporation #IBMGarage @holly_cummins

handoffs bad automation good © 2019 IBM Corporation #IBMGarage @holly_cummins

fail 9 microservices envy

se a b od o g a e r a s r e n i a t con © 2019 IBM Corporation #IBMGarage @holly_cummins

it’s not a competition to see how many you can have © 2019 IBM Corporation se a b od o g a e r a s r e n i a t con #IBMGarage @holly_cummins

“we’re going too slowly. we need to get rid of COBOL and make microservices!” #IBMGarage @holly_cummins

“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 #IBMGarage @holly_cummins

distributed monolith but without compile-time checking … or guaranteed function execution #IBMGarage @holly_cummins

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

ways to succeed at cloud native © 2019 IBM Corporation #IBMGarage @holly_cummins

devops © 2019 IBM Corporation #IBMGarage @holly_cummins

be clear on what you’re trying to achieve © 2019 IBM Corporation #IBMGarage @holly_cummins

align business and IT © 2019 IBM Corporation #IBMGarage @holly_cummins

collaborate with experts co-creation is awesome © 2019 IBM Corporation #IBMGarage @holly_cummins

optimise for feedback © 2019 IBM Corporation #IBMGarage @holly_cummins

® @holly_cummins 104