Over the past several months, you seldom go a few weeks without seeing a top HackerNews article pulling us back towards building monoliths instead of building with microservices. Reading the comments, it’s clear people are frustrated with their microservices architecture.
Possible reasons for their frustration:
- Microservices are complex
- They chose microservices architecture when they didn’t need to and would have benefited from a simpler architecture
- They like to complain (who doesn’t like to vent a little?)
Those reasons aside, this is a reoccurring theme in web development: we tend to all swing from one extreme (microservices for everything!) to another (monoliths for everything!).
Maybe there is a better way?
I present to you:
Build the appropriate architecture for your business requirements
Sometimes… you should probably build a majestic monolith. Sometimes… you should probably develop your system using distributed computing.
If you’re looking for established methodologies for helping elicit requirements from people in the business, I’d recommend:
- Software Engineering Institute: Attribute Driven Design
- Martin Fowler’s Architecture Guide
- Familiarizing yourself with various architecture patterns and understanding the pros/cons of each
Relevant Additional Reading
I do applaud the general pull away from microservices but I’d recommend the following articles for a bit more varied reading than the one that was cited in Hacker News: