Monolith vs Microservices: Evolution of Architecture and How to Choose
The article traces software architecture from early distributed systems through monoliths, SOA, microservices and serverless, explaining why each paradigm arose, the trade‑offs they entail, and how to decide between monolith and microservices based on team size, expertise, organizational structure, and business needs.
This article reviews the historical evolution of software architecture—from the early distributed era, through monolithic systems, SOA, microservices, and finally the serverless era—highlighting why each style emerged and why it was eventually superseded.
It explains that monolithic applications appeared before the term existed, driven by hardware limitations and the need for multiple machines to cooperate. Distributed systems introduced remote calls (e.g., DCE/RPC) but suffered from performance and complexity issues.
The monolithic era offered simplicity and high performance when hardware improved, yet large monoliths became fragile because a single bug could crash the whole process.
SOA attempted to standardize service interfaces (SOAP, ESB) but introduced heavy governance overhead.
Microservices, emerging around 2014, stripped away SOA’s heavyweight constraints, embracing autonomy, fault isolation, and independent deployment. However, they also bring new challenges such as service discovery, authentication, monitoring, and operational complexity.
The article outlines when microservices are justified:
When team size or skill variance makes a single monolith risky (Conway’s Law, fault isolation).
When language or framework limitations require separate runtimes (e.g., AI workloads in Python vs core services in C++).
When the organization’s structure demands independent ownership of capabilities.
It also lists prerequisites for adopting microservices:
Experts who understand microservice pitfalls and can design reliable boundaries.
Automation and observability tooling to monitor many services and enable self‑healing.
Practical advice includes starting with a monolith for small teams, then gradually splitting services as the system grows, and ensuring each team can own its service and data store.
The conclusion emphasizes that neither monolith nor microservice is inherently superior; the choice should be driven by business needs, team capabilities, and the trade‑off between simplicity and scalability.
References: "The Phoenix Project" (Zhou Zhimin), "Microservices: A Definition of This New Architectural Term" (Martin Fowler, James Lewis).
Tencent Cloud Developer
Official Tencent Cloud community account that brings together developers, shares practical tech insights, and fosters an influential tech exchange community.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.