You Write It, You Run It… You Panic, You Learn

A compendium of #microserviceshonesty

“Explaining my latest Chaos Engineering hypothesis”

About a week ago I decided to have some fun. Rather than just thinking in aphorisms and lessons-learned about microservices and quietly swearing when some new confusion was discussed, I decided to turn that stream of consciousness into, well, a stream of tweets. Specifically tweets with the hashtag of #microserviceshonesty:

Nothing was off the table for these tweets. Tongue-firmly-in-cheek I took a sideways glance at the different messages and general confusion I met when consulting and training people on how to appropriately apply this still-mysterious architectural style.

Some tweets were brutal truth, some were embarrassing confessions, and some were speculative; I make no apologies for mixing things up.

There were so many ideas that came to me that you’d be forgiven for thinking this was some sort of odd DoS attack on Twitter, but no, this was just me venting some microservices honesty and, at the same time, hopefully giving some followers some belly laughs or, at the very least, nervous chuckles.

And so we end up at this little compendium where I’ve brought together the first batch of #microserviceshonesty tweets for prosperity. I hope you enjoy them as much as I did just dreaming them up.

The fear, uncertainty, doubt and utter confusion around microservices is such a fertile ground that I probably won’t be done for years and so look out for another compendium of the #microserviceshonesty tweets in the next few months.

For now though I’ll finish this post with the highlights from the first batch:

“I’m going to create a microservice … because I really don’t want to work on your code.”

“It has a RESTful API … well, it uses HTTP, sometimes…”

“Now I only have to update 15 microservices at once when I do a deployment … wait, what were we doing this for?”

“We have all our event cases covered, all our event names end in ‘Create’, ‘Update’ or ‘Delete’…”

“I need system-wide transactional consistency at all times! Surely I can have that and microservices …”-Sorry, nope.

“But if I group things together that change together, will my microservices be micro enough?”-yes.

“The problem with microservices is the micro part gets you thinking about the wrong thing entirely”

“Reality is eventually consistent”

“If I do microservices I’ll have so many more opportunities for reuse!” — Please, no.

“Our first step towards microservices was to put in place a cross-bounded-context governance committee” — really!?

“We don’t need DevOps, our Ops group is going to LOVE running 1k+ microservices vs. one monolith.”

“I write it I HAVE to run it!! No way…”

“The first microservices feature we took advantage of was to make all services polyglot…” — wait, what?

“We don’t need to worry about circuit breakers or bulkheads…” — because you think production is akin to heaven?

“We need gates to make sure we don’t break production EVER… but we do break production even with those gates…”

“We don’t need Chaos engineering because production is hallowed ground and NEVER fails …” — really?

“We really need a salad, but I suspect we’ll end up with a single greasy burger” — microservices metaphors

“You Write It, You Run It … You Panic, You Learn”

“Chaos engineering just feels like ‘overkill’…” — exactly the point, if you don’t kill it then your users will

“Looks like I need to know whether my microservices are happy? And what to do if they’re not?” — not if, when.

“Have you tried turning it off an on again?”, “WHICH ONE!?”

“When distributed tracing gives you a dependency graph the equivalent of a ball of yarn … it’s time to go bowling.”

“Let’s apply our chaos in a safe environment…” — let’s get proficient on the Heimlich manoeuvre on a corpse.

“We’ve a shared data fabric for comms between our microservices…” — you have a shared relational db don’t you

“We have to be careful of that microservice …” — precious snowflake, stateful demon, or dependency hell?

“We do chaos engineering, we just don’t have any hypothesis…” — that’ll just be breaking stuff then

“Chaos Engineering — offering a process for reacting to Black Swans since the birth of Science”

“One day all cloud platforms will have a ‘Chaos Services/Experiments’ tab”

“We release our microservices (plural) every week” — all the pain and none of the gain anyone?

“The best chaos we can engineer is change itself, we do that continuously?” — yes indeed

Before you copy someone else’s chaos, you’d better know your hypothesis align too

“We have to run DB migrations across all 500 database-backed microservices…” — do that last thing on Friday?

“A gateway and adapter seems like unnecessary de-coupling…” — inappropriate intimacy FTW

“In production EVERYONE can hear your microservices scream… as a chorus without circuit breakers”

“Secure all the things” — and apologise when things go wrong. With special thanks to Equifax for the timing.

“The network hates you, the machines hate you, and the customers really hate you” — welcome to Production

“Chaos engineering is just the start, similar approaches work well with large, complex systems … like people”

“Microservices are not the hard things, it’s EVERYTHING ELSE that is” — truth

“Cloud native, cloud tourist, cloud immigrant and cloud avoidant?”

“Oh wow, my microservice is super popular! Everyone is using it and now… I… can’t… change……… It”

“To Ops a monolith is when there is an ailing patient; microservices is when there’s an ailing, full wartime hospital.”

“I’m sure you don’t need Consumer-Driven Contract Testing” … you won’t have consumers for long anyway…

Some tweets had to be omitted as they are more about the accompanying image than the actual text. Check out the full stream below to see those tweets too:

Russ Miles can be followed on Twitter and delivers courses and consultancy on how to build software systems and teams applying Antifragility through Microservices and Chaos Engineering. As the Geek on a Harley he also travels to and speaks at many conferences and user groups around the world.