reactive systems architecture
Reactive systems architecture is a computer systems paradigm that takes advantage of the responsiveness, flexibility and resiliency offered in reactive programming so that various components (e.g., software applications, databases and servers) can continue to function and even thrive if one of the components is compromised.
The reactive programming on which reactive systems architecture allows -- at its simplest expression -- data to automatically change when related data changes. So, for example, in the expression a = b + c, if either b or c changes, then the value of a will change automatically when a notification of the change to b or c to is sent. The change represented by b or c might be a change in availability, while a might be the price.
How reactive systems architecture works
Reactive systems architecture adhere to the tenets of the Reactive Manifesto, which characterizes systems created by reactive programming as "responsive," providing rapid and consistent response times; "resilient," meaning that the system stays responsive despite hardware or software failures; "elastic," wherein the system remains responsive in varying workloads; and "message driven," relying on asynchronous message-passing.
Proponents of reactive systems architecture say that the challenge is not in making systems that are simply responsive or resilient or elastic -- it is in making systems that are all three. So, a system must be responsive to change, e.g., to the variables b or c in the example above. It must also be elastic, accommodating rises and falls in load, e.g., an online shopping site that experiences peak demand times. And it must also be resilient, built to minimize and recover from application and system failure.
Reactive systems architecture is also said to use software architectural patterns that promote self-healing and self-monitoring systems that can repair themselves.
Vendors in this space include: