Low Performance Web Development
Modern day "high performance" systems (microservices) are often times not great. And many businesses suffer with them. We need a return to "low performance" and we know how to do it.
Yes, I am advocating that we get back to building "low performance" systems. But I don't mean slow. What I really mean is doing the opposite of modern day "high performance" systems.
The current state of the art is to build "high performance" web applications as microservices with Docker containers and asynchronous everything. These "modern" architectures add a massive amount of complexity to the systems we build. And we have known for a very long time that complexity is bad.
It also turns out that all those Docker containers, with all the communication that needs to happen between them, can be very slow.
Amazon released an entire case study Scaling up the Prime Video audio/video monitoring service and reducing costs by 90% where they ditched microservices and switched to a monolithic architecture.
Complexity is the real killer:
The best code is no code at all.
- Jeff Atwood
By the way, Jeff is a multi-millionaire software developer. So he tends to know what he's doing when it comes to turning code into cash. And that's something we care a whole lot about for our customers at BoltAffect.
Sadly our industry seems to have forgotten Jeff's excellent advice. We now live in a world of very complex architectures, all in the name of "scale". It turns out that scaling up is so critical that we have no choice but to sacrifice simplicity. Or do we?
We say otherwise. We believe most software doesn't need to scale. Most software isn't Google, Amazon, Facebook, etc. Most software is built for a specific low scale purpose, task, or audience and the best approach is a low complexity (ie low cost) solution.
Don't take our word for it! Mr. Atwood built a wildly popular website called Stack Overflow that gets an estimated 6,000,000 visits per day. And it has a daily ad revenue estimated at $21,000. So obviously this website needs some fancy microservice architecture like this:
Well if that was what you were thinking, you would be wrong. It turns out that Stack Overflow is built as a simple monolithic code base with an architecture like this:
It's no wonder that Jeff is a multi-millionaire who retired early and is recreationally employed. He's not building software for the sake of software. He's making low performance stuff that gets the job done.
We are big believers in simple systems that are easy to understand and work on. We love monolithic architecture due to its low complexity, ease of maintenance and hosting, and ultimately low cost. These simple architectures can handle a surprising amount of scale and solve rather complex business challenges. As demonstrated by Amazon.
I will mention that even though we don't like microservices, we still organize our monolithic code bases into smaller well organized modules that we call "apps". After all, we aren't against organization and good software design.
Modularization visualized (taken from Bad Microservices by SemaphoreCI):
In fact, Shopify has been working on their system to make it a modular monolith. In 2020 they wrote about how they chose to modularize their monolithic codebase. Much of their strategy is exactly what we recommend.