Chapter 4. Design Principles of Reactive Systems
In Chapter 3, we looked at the challenges behind distributed systems. It’s now time to see what Reactive has to offer. Reactive can be seen as a set of principles for building distributed systems, a kind of checklist to verify that no major known concern was overlooked while architecting and building a system. These principles focus on the following:
- Responsiveness
-
The ability to handle requests when facing failures or peaks of load
- Efficiency
-
The ability to do more with fewer resources
In this chapter, we cover the principles promoted by reactive systems.
Reactive Systems 101
In 2013, a group of distributed systems experts gathered and wrote the first version of “The Reactive Manifesto.” They assembled in this whitepaper their experience building distributed systems and cloud applications. While in 2013 the cloud was not precisely what it is today, the dynamic creation of ephemeral resources was already a well-known mechanism.
“The Reactive Manifesto” defines reactive systems as distributed systems having four characteristics:
- Responsive
-
Able to handle requests in a timely fashion
- Resilient
-
Able to manage failures gracefully
- Elastic
-
Able to scale up and down according to the load and resources
- Message driven
-
Using asynchronous message-based communication among the components forming the system
These four characteristics are represented in Figure 4-1.
Figure 4-1. Reactive systems characteristics
If you’re seeing ...