We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Distributed Systems Core
Free preview: the first 2 parts of this 8-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Distributed Systems Core
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
It is easy and good
“It is really nice and good Please join the course”
In 2013, Jonas Boner (creator of Akka), Martin Thompson, Dave Farley, and Roland Kuhn published the Reactive Manifesto. It wasn't a new technology, it was a set of architectural principles for building systems that respond gracefully to load, failure, and change.
The manifesto emerged from a simple observation: traditional architectures designed for predictable loads and rare failures don't survive in the modern world. Traffic spikes are unpredictable (viral tweets, flash sales, DDoS attacks). Failures are constant, not exceptional. User expectations for responsiveness keep rising.
A reactive system doesn't just handle these realities, it embraces them as normal operating conditions. Instead of scaling to peak capacity and hoping for the best, it scales dynamically. Instead of trying to prevent failures, it assumes they'll happen and recovers automatically. Instead of blocking on slow downstream services, it applies and gracefully degrades.
Netflix, Uber, and Amazon don't run reactive systems because it's trendy. They run them because the alternative, systems that crash under unexpected load, cascade failures when one service dies, and require manual intervention to scale, costs millions in revenue and engineering time.
The Reactive Manifesto defines four interconnected traits:
Responsive, the system responds in a timely manner if at all possible. Responsiveness is the cornerstone of usability. A system that's correct but takes 30 seconds to respond might as well be down.
Resilient, the system stays responsive in the face of failure. Failures are contained (they don't cascade), components are isolated, and recovery is delegated to supervision hierarchies. This is not just "add a retry", it's architectural isolation.
Elastic, the system stays responsive under varying workload. It scales out when demand increases and scales in when demand decreases, without architectural changes. This requires no bottlenecks, no single points of contention.
Message-Driven, the system relies on asynchronous message-passing to establish boundaries between components. This provides loose coupling, isolation, location transparency, and the ability to apply .
| Trait | What It Means | How It's Achieved |
|---|---|---|
| Responsive | Always responds quickly | SLOs, timeout budgets, fallbacks |
| Resilient | Stays responsive during failures | Bulkheads, circuit breakers, supervision |
| Elastic | Stays responsive under load changes | Auto-scaling, stateless services, |
| Message-Driven | Async, non-blocking communication | Message queues, event buses, actors |
Backpressure is the mechanism that ties these traits together. When a downstream service is overwhelmed, it signals upstream to slow down. Instead of dropping messages or buffering until memory runs out, the system propagates slowness upstream. The user might see a "please wait" message instead of an error, degraded but functional.