Microservices or Monolith?
A cheat sheet for choosing an architecture: the pros and cons of monoliths and microservices, what works better for a small company, what level of engineers you need, and a checklist to help you pick an approach.
Let me get one thing out of the way: both approaches work. The question isn't which one is "correct" — it's which one fits your team better, and whether you're ready to pay for the overhead each of them drags along.
This is a cheat sheet, a continuation of the micro-article series. I'll leave the details and the reasoning for the next texts.
Monolithic architecture
Pros
- Simple to develop and test.
- High performance thanks to the absence of inter-process communication.
- Easy to manage — one deployment for all components.
Cons
- Hard to scale the entire application.
- Updating one part requires restarting the whole application.
- Harder to maintain and evolve as the application grows.
- A bug in one module can take down the entire application.
Microservices architecture
Pros
- Easy to scale individual services.
- Improved resilience: a failure in one service doesn't knock out the whole system.
- Development flexibility — different teams can work on different services in parallel.
- You can update individual services without restarting the whole application.
Cons
- Hard to manage a swarm of independent services.
- You have to set up the communication between services.
- Increased overhead from inter-service communication.
What's better for a small company?
It all comes down to needs and resources:
- A monolithic architecture can be preferable for startups and small projects, since it's simpler to develop and manage — especially when the team is small.
- A microservices architecture can pay off for companies planning rapid growth and scaling, running distributed teams, or wanting to use different technologies for different parts of the system.
What level of engineers each approach needs
What to expect when you bring an engineer of a given level onto the team.
Monolithic architecture
- Junior. Basic understanding of the application's structure, comfortable with simple tasks.
- Middle. Deep grasp of architectural patterns and techniques for optimizing a monolith.
- Senior. Able to design and optimize monolithic systems, audit existing ones, and think strategically.
Microservices architecture
- Junior. Understands the basic concepts of microservices and communication over APIs.
- Middle. Experience developing and managing multiple microservices, familiar with deployment orchestration tools (Kubernetes, for example).
- Senior. Able to design complex microservice systems, experienced in scaling and securing them, capable of strategic planning.
A checklist for picking an approach for your company
1. Team size and resources:
- Small team and limited resources — Monolith.
- Large or distributed team — Microservices.
2. Growth and scaling plans
- Limited growth — Monolith.
- Rapid growth and scaling — Microservices.
3. Performance requirements
- High performance with minimal overhead — Monolith.
- Flexible, scalable performance — Microservices.
4. Team expertise level
- Less experience managing complex systems — Monolith.
- Strong expertise and hands-on experience with distributed systems — Microservices.
5. Update frequency
- Rare updates, big releases — Monolith.
- Frequent updates and fast releases — Microservices.
6. Infrastructure capabilities
- Limited infrastructure capabilities — Monolith.
- Mature infrastructure with orchestration support — Microservices.
Takeaway
A monolith is simpler to develop and manage — exactly what small companies and resource-constrained startups need. Microservices give you flexibility and scalability — the choice of large, fast-growing teams that care about performance and frequent releases. There's no universal answer: start from the business's needs, the team's experience, and what you actually have on hand. In the next article I'll share my own experience — why I ended up choosing microservices over a monolith. Hope you'll find it interesting.
Originally published on my Telegram channel @it_underside.
Yours, DPUPP
Related Articles
Event Storming Without the Hype: Pros, Cons, and a Sticky Note on Your Forehead
A personal take on Event Storming after more than one "event storm": where it genuinely saves a team, where it turns into pointless sticker-therapy, and what it takes to keep a session from going down the drain.
Data Exchange Formats: From JSON to Protobuf
A deep dive into data exchange formats: where JSON lives, why XML still matters, what makes YAML great, and when it is time to switch to binary Protobuf, Avro, and MessagePack — tied to APIs and message brokers.
UML: what kind of beast is it, and why analysts steer clear
UML can visualize, specify and document a system — yet you almost never see it used on real teams. Let’s figure out what it’s for, why analysts avoid it, and where it actually pays off.