Drawbacks and Advantages of Synchronous Request‑Response Microservices
The article examines synchronous request‑response microservices, outlining their numerous drawbacks such as tight coupling, scalability limits, failure handling, API versioning challenges, data access coupling, distributed monolith risks, and testing difficulties, while also acknowledging their undeniable advantages and the prevalence of hybrid architectures.
Microservices can be implemented either asynchronously via events (as recommended by the book) or synchronously, where communication between services occurs directly through APIs using a request‑response model.
Drawbacks of Synchronous Microservices
For example, Sam Newman's "Microservices Design" and the book "Microservices for the Enterprise" by Kasun Indrasiri and Prabath Siriwardena.
Although many successful companies (Netflix, Lyft, Uber, Facebook) have used synchronous microservices, the approach suffers from several problems that hinder large‑scale adoption.
Point‑to‑Point Coupling
Synchronous services depend on other services, which in turn have their own dependencies, leading to excessive fan‑out, difficult traceability, and complex change management.
Scalability with Dependencies
A service’s ability to scale is tied to the scalability of all its dependencies and the degree of fan‑out, creating potential bottlenecks under variable load.
Handling Service Failures
When a dependent service goes down, decisions about retries, failures, and data consistency become increasingly complex as the ecosystem grows.
API Versioning and Dependency Management
Multiple API definitions and service versions often coexist, making coordinated upgrades and data‑structure changes difficult.
Data Access Coupled to Implementation
Synchronous services face the same data‑access challenges as traditional services, needing to retrieve shared data from other services, which re‑introduces coupling and scalability concerns.
Distributed Monolith
Teams may decompose a monolith into many services but still use synchronous point‑to‑point calls, effectively creating a distributed monolith with blurred bounded contexts.
Testing
Integration testing is hard because each service requires fully operational dependencies, and unit tests that mock these dependencies may not cover broader testing needs.
Advantages of Synchronous Microservices
Despite the drawbacks, synchronous microservices have clear benefits: certain data‑access patterns (e.g., authentication, A/B testing) fit well with request‑response, external integrations often rely on synchronous HTTP, and debugging is simpler due to straightforward logging and traceability.
Web and mobile experiences frequently rely on request‑response designs, and many developers are more familiar with synchronous, monolithic coding styles, making talent acquisition easier.
In practice, most architectures are hybrid, combining both synchronous and asynchronous solutions based on problem space requirements.
Conclusion
The communication structure guides software creation and management throughout an organization’s lifecycle; introducing persistent, easily accessible domain events can enable smaller, purpose‑built implementations while preserving flexibility.
IT Architects Alliance
Discussion and exchange on system, internet, large‑scale distributed, high‑availability, and high‑performance architectures, as well as big data, machine learning, AI, and architecture adjustments with internet technologies. Includes real‑world large‑scale architecture case studies. Open to architects who have ideas and enjoy sharing.
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.