Jason Warner Profile picture
Nov 14 19 tweets 4 min read
I'm convinced that one of the biggest architectural mistakes of the past decade was going full microservice

On a spectrum of monolith to microservices, I suggest the following:

Monolith > apps > services > microservices

So, some thoughts
First, these are thoughts, not rules. Anyone that has built a large distributed system knows they don't really work that way and have to adapt with it

Second, stage will be important. If you are reading this at a 5-50 person company...just stick with a monolith. Trust me
If you are reading this at a 10k person company, likely have all of these to some degree but here is where my quick thoughts might differ from what has been done in the past

Now, diversion. Let's talk definitions. There exist no exact definitions for these all
So instead of bike shedding over definitions, I typically just think of it this way

monolith - xyz.com
apps - abc.xyz.com, major things of value or value creation, possible core proposition, limited to a few apps
services - supporting apps/monoliths, core infra pieces, needed by lots of surface area, core compliance func, possibly not written by app teams (infra maintains them)
microservices - few hundred lines of code, mostly one-offs, likely could/should be library or SDK
Ok, with all that out of the way, let's talk why

My thinking basically goes like this

Speed & risk

A. It's generally easier for entire engineering teams to work inside one big app (think entire site in Rails app) than to reason about the ways in which microservices will fail
B. distributed systems, which you will have as you grow no matter what, are hard enough to reason about with introducing dozens let alone hundreds of microservices that have their own risk profiles

C. as you go fully micro, you need to introduce new concepts to handle the sprawl
D. A big one. Each bespoke infra service or microservice is an extreme version of debt IMV. Code is debt, but services are extreme versions of that. Really think about about what that means for you. Prefer your debt to be literal points of highest leverage not nice to haves
I think a challenge we dist systems engineers have is we really like to not have duplication so we see something being done in a few places and think "let's just pull this out and make a microservice out of it".
In theory this is fine. And if done for a few tens of instances, it is fine. When it goes to several dozen microservices or...way worse...across massive company boundaries (think one color service for all of Microsoft/Google/Apple) it becomes less technical and more org challenge
And I know what I'm presenting so many feels like some false dichotomies but in practice I find there are definite tech challenges with microservices, but there are even more org challenges with them

And of all the things I worry about it's this
First, infra (unless company is led by unusually with-it CEO) almost always gets short end of priority stick

Second, too many services typically leads to a lack of ownership problem and boundary issues

Third, you introduce even more tooling to deal with too many microservices
And most importantly, each microservice that could/should have been a library or sdk or something introduces production risk

more code is indeed overhead, more services is customer facing prod/experience risk. Both approaches have overhead/risk but the % distribution is diff
So this is typically what I recommend

1. Be a monolith as long as possible
2. Services start in infra for infra reasons, not app eng typically
3. If breaking out mono, break to large apps, not small services
4. Think that each new app is a virtual wall in your company
5. Prefer libraries to microservices where possible

The classic "we introduced a color service" is my favorite extreme example of where I would choose a library over a service. Yes extreme example but hey, it gets very talked about as quintessential example
"But Jason, what about Amazon and Uber and ..?"

1. Hey, you do you. I'm just saying what I've gone through in experience
2. If you have the success of Amazon when that mandate came down for services, go nuts
3. These are more guidelines than rules
90% of all companies in the world could probably just be a monolith running against a primary db cluster with db backups, some caches and proxies and be done with it

For the 10% of companies that hit planet scale (no pun intended here Sam) it's gonna be art figuring this out
Distributed systems combined with scaling companies is so complex and so few people have done it that it's hard to draw specific lessons from those companies. Each context and instance is different. What I'm talking about here is more thoughts on how to approach the problems
And going back to this

Monolith > apps > services > microservices

It's basically an approach to scale: be one big thing for as long as possible. Never overcorrect to too small of things, go through it as you grow (even hyper growth). This is for org and tech

Again, it's art

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Jason Warner

Jason Warner Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @jasoncwarner

Nov 8
Founders, here’s a simple formula for success

Have a big vision, good judgement, & gut instinct

As you grow have 1-3 execs who are world class (not good, not great, world class). Pay them extraordinarily well

They’ll hire less folks, but they’ll be amazing. Pay them too
Fill out the rest with above average folks doing necessary jobs. Pay them average. Build processes to allow average to above average folks to function without slowing down the world class

Resist over processing and over hiring at all costs

Become great at saying no
If one of your necessary world class functions (product/engineering, sales, etc) loses their leader and you miss hire the replacement, consider this existential risk. Trust me. A bad head of product tanks companies and gets CEOs fired

Build amazing people intuition
Read 10 tweets
Sep 12
The same people that knocked me for sleep/fitness/diet/weight lifting 15 years ago all now preach it, are the same people that told me I had to move to SF (who left themselves now), are the same people that said my leadership approach wouldn’t work

Few things I’ve learned…
It never really bothered me about most of those topics mostly bc I knew many of the things I was doing were counter consensus, which I’ve always been fine with

But the fitness one weirdly did bc of the ‘dumb jock’ label and also, honestly it was just odd
I truthfully didn’t understand this one because we mostly knew it all. Yes health is a dense topic but it’s not impenetrable and in tech we pride ourselves on being able to amalgamate, parse, & synthesize information but we weren’t here
Read 13 tweets
Aug 6
A very specific mental change that helped unlock a new level for me a long time ago was stop trying to convince every last person and instead state expectations and move on

Here's what I mean...
I always start out the same, giving the high level overview, tying it back to the now, giving a bunch of context & some parameters including knowns & unknowns. I also jump into 'why' a lot

This is normal work & didn't change including the usual supporting materials
When I was younger, I would then spend just an inordinate amount of time trying to convince whoever either disagreed or 'needed more convincing'

This was torturous work that ultimately never seemed to yield the results I really hoped to see: getting them to the same page
Read 16 tweets
Jul 28
Ok, let's actually talk remote/hybrid/in-office work for tech (not VCs)

There are likely some better suited to talk about this than me though the number isn't high, particularly execs. Been remote since 2010 for Canonical (started in Australia), Heroku & GitHub (Victoria)
1. Who likes remote?

There are two categories of people who like remote: the hyper competent and the hyper incompetent. It's actually very simple

The best of the best will demand freedom to live where they choose because they can get the job done no matter what
The hyper competent people will always do well no matter what. That's just a rule of people being good. If being in office is required for someone to be good, they are, by definition, conditionally good. The unconditionally good folks are good all the time anywhere
Read 23 tweets
May 29
One thing I abs believe to be true but have no data to support, a group of people either avgs UP towards its singular top performer(s) or completely levels down to its bottom tier group, no real in between (particularly in the fullness of time)

The slope of the company
In sports this is easy to see with a great player makes others better around them

Or some other teams where a great player either underperforms themselves but for sure the team doesn’t average up to them and underachieves to expectations
In companies this happens when the average of the company/org itself trends up towards its top performer(s) or somehow the culture/dysfunction/under performers pulls down even these seemingly great folks

Of course my view is the default is a trend down (entropy wins by default)
Read 6 tweets
May 6
Back in '99/'00 I had just graduated, was working at IBM and decided to join a startup doing video streaming on the internet before it was cool

Insane to think about but we did live streaming of sports(mostly golf), movies(we had the entire Fox something catalog) & news
I & 90% of everyone in the company were laid off the day before Thanksgiving 2000. The company had raised $75m (which is just an insane number for dotcom era, not like rando startup today raising that) and had actually bought or installed substantial portion of fiber in the US
We were just too early and while offices had great internet connections, homes still did not and the number of people who could realistically stream these videos was low

So we hit hard times and couldn't really figure it out

And so that company went out of business
Read 17 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(