A presentation at WTF Is Cloud Native Webinar by Holly Cummins
WTF is culture in cloud native? Holly Cummins IBM Garage @holly_cummins
WTF, culture IS cloud native! Holly Cummins IBM Garage @holly_cummins
WTF, culture IS cloud native! (fixed it for you) Holly Cummins IBM Garage @holly_cummins
what is cloud native? #IBMGarage @holly_cummins
#IBMGarage @holly_cummins
Credit to @bibryam #IBMGarage @holly_cummins
#IBMGarage @holly_cummins
#IBMGarage @holly_cummins
#IBMGarage @holly_cummins
#IBMGarage @holly_cummins
2010 the dawn of cloud native © 2019 IBM Corporation #IBMGarage @holly_cummins
2010 the dawn of cloud native © 2019 IBM Corporation fully utilize that environment #IBMGarage @holly_cummins
#IBMGarage @holly_cummins
#IBMGarage @holly_cummins
2019 #IBMGarage @holly_cummins
microservices containers dynamically orchestrated 2019 #IBMGarage @holly_cummins
Dr Holly #IBMGarage “the clo u d nativ e co mputing fo un d ation is wrong … abo ut clo u d nati ve.” @holly_cummins
#IBMGarage @holly_cummins
2020 IBM Garage @holly_cummins
2020 IBM Garage @holly_cummins
IBM Garage @holly_cummins
IBM Garage @holly_cummins
IBM Garage @holly_cummins
IBM Garage @holly_cummins
IBM Garage @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 12-factor just ‘cloud’ modern and nice rerunnable @holly_cummins
© 2019 IBM Corporation #IBMGarage @holly_cummins
© 2019 IBM Corporation #IBMGarage @holly_cummins
cloud native is not © 2019 IBM Corporation #IBMGarage @holly_cummins
cloud native is not a synonym for ‘microservices’ © 2019 IBM Corporation #IBMGarage @holly_cummins
2019 #IBMGarage @holly_cummins
microservices stack containers 2019 #IBMGarage @holly_cummins
2020 IBM Garage @holly_cummins
immutable infrastructure microservices exemplify 2020 IBM Garage @holly_cummins
why? #IBMGarage @holly_cummins
what problem are we trying to solve? © 2019 IBM Corporation #IBMGarage @holly_cummins
“everyone else is doing it?” #IBMGarage @holly_cummins
wishful mimicry #IBMGarage @holly_cummins
© 2019 IBM Corporation #IBMGarage @holly_cummins
build great products faster © 2019 IBM Corporation #IBMGarage @holly_cummins
2020 IBM Garage @holly_cummins
make high-impact changes frequently and predictably with minimal toil 2020 IBM Garage @holly_cummins
why cloud? #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
why cloud native? © 2019 IBM Corporation #IBMGarage @holly_cummins
© 2019 IBM Corporation #IBMGarage @holly_cummins
born on the cloud kubernetes microservices IBM Garage 12-factor just ‘cloud’ modern and nice rerunnable @holly_cummins
cloud native is the combination of culture and technology to achieve cloud goals © 2019 IBM Corporation #IBMGarage @holly_cummins
are we all agreed on the goal? © 2019 IBM Corporation #IBMGarage @holly_cummins
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
microservices are not the goal #IBMGarage @holly_cummins
microservices are not the goal they are the means #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
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
distributed monolith #IBMGarage @holly_cummins
distributed monolith but without compile-time checking … or guaranteed function execution #IBMGarage @holly_cummins
“every time we change one microservice, another breaks” #IBMGarage @holly_cummins
distributed != decoupled © 2019 IBM Corporation #IBMGarage @holly_cummins
cloud-native spaghetti is still spaghetti (Image: Cloudy with a Chance of Meatballs.) © 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
#IBMGarage @holly_cummins
navigators warned something was wrong #IBMGarage @holly_cummins
navigators warned something was wrong they didn’t fill in the right form #IBMGarage @holly_cummins
navigators warned something was wrong they didn’t fill in the right form so nothing was done #IBMGarage @holly_cummins
quality theatre #IBMGarage @holly_cummins
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
speed © 2019 IBM Corporation #IBMGarage @holly_cummins
speed © 2019 IBM Corporation #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
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
@holly_cummins
make releases deeply boring by doing them often @holly_cummins
@holly_cummins
make recovery from failures deeply boring by doing it often @holly_cummins
make recovery from failures deeply boring by doing it often @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
automate everything
“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
“we can’t ship until we have more confidence in the quality” #IBMGarage @holly_cummins
“we can’t ship until we have more confidence in the quality” you can fix that #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
the lockeddown totally rigid inflexible un-cloudy cloud
#IBMGarage @holly_cummins
“we’ve configured our network! #IBMGarage @holly_cummins
“we’ve configured our network! you can either access the cloud servers … or access jira. #IBMGarage @holly_cummins
“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
“it takes us a week to start coding.” #IBMGarage @holly_cummins
“it takes us a week to start coding.” “two days to get a repo … two days to get a pipeline …” #IBMGarage @holly_cummins
“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
there is a cost: developers leave #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
#IBMGarage @holly_cummins
#IBMGarage @holly_cummins
good cloud native culture © 2019 IBM Corporation #IBMGarage @holly_cummins
be clear on what you’re trying to achieve © 2019 IBM Corporation #IBMGarage @holly_cummins
optimise for feedback © 2019 IBM Corporation #IBMGarage @holly_cummins
psychological safety © 2019 IBM Corporation #IBMGarage @holly_cummins
collaboration co-creation feels awesome © 2019 IBM Corporation #IBMGarage @holly_cummins
® @holly_cummins 106
In this WTFinar, Holly Cummins, Worldwide Development Leader at IBM Garage, discussed these and other pressing questions (WTFs and others) about Cloud Native and the culture you need to make it truly work for your organisation.
She was joined by Container Solutions CEO Jamie Dobson, who served a tasty, healthy helping of industry gossip while learning about the other stuff. (Come for the goss, stay for the insights).