Portions lifted from the site (so that I may put notes in italics within or near the prose), visit there for full body.

Organisations working in disparate domains are independently discovering patterns for building software that look the same. These systems are more robust, more resilient, more flexible and better positioned to meet modern demands. (I'm not 100% sure this is any more true than when we said the exact same thing about object-oriented systems thirty years ago.)

These changes are happening because application requirements have changed dramatically in recent years. Only a few years ago a large application had tens of servers, seconds of response time, hours of offline maintenance and gigabytes of data. Today applications are deployed on everything from mobile devices to cloud-based clusters running thousands of multi-core processors. Users expect millisecond response times and 100% uptime. Data is measured in Petabytes. Today's demands are simply not met by yesterday’s software architectures. (This is probably true, though I think there's some generalization going on here.)

We believe that a coherent approach to systems architecture is needed, and we believe that all necessary aspects are already recognised individually: we want systems that are Responsive, Resilient, Elastic and Message Driven. We call these Reactive Systems. (This is good, but there's other qualities we want out of a system, too, and I'm not sure the authors aren't skating quickly across some thin ice here in their effort to promote reactivity.)

Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. (I'm not 100% sure this is 100% true 100% of the time. They can be, but that doesn't mean they will be.) This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.

Reactive Systems are:

Large systems are composed of smaller ones and therefore depend on the Reactive properties of their constituents. This means that Reactive Systems apply design principles so these properties apply at all levels of scale, making them composable. The largest systems in the world rely upon architectures based on these properties and serve the needs of billions of people daily. It is time to apply these design principles consciously from the start instead of rediscovering them each time.

Tags: reading   distribution  

Last modified 09 December 2022