A presentation at Sphere.IT in in Warsaw, Poland by Holly Cummins
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
Cloud native – the perfect recipe for innovation, adaptability, and engineering excellence. Right? Well, when it goes right. When it goes wrong, sometimes it’s monster spaghetti, sometimes it’s a quality headache, and – worst of all – sometimes it’s exactly as clunky and slow-to-change as what it’s replacing. As a consultant, Holly gets to see really good practices and also the anti-patterns; in this talk, she’ll share stories of what happens when things go wrong.
Here’s what was said about this presentation on social media.
@holly_cummins keynotes the second day of #sphereit2019 . Met her last at the O'Reilly SA conf London 2018 and I'm really glad to see her on stage again! #CloudNative pic.twitter.com/QGNTI6uwBY
— Fabio Tiriticco (@ticofab) October 8, 2019
@holly_cummins we feel honoured! Thank you! 👏 @cloudsphere_it 💪🏼 pic.twitter.com/W82QNxFU6v
— sphere.it (@sphereIT_conf) October 8, 2019