AOE Technology RadarAOE Technology Radar

Reactive Programming

Adopt

The reactive style of programming promotes event-based thinking and modeling - and by that assists in creating more decoupled solutions.

Synergies arise, when people understand the concepts of this pattern: by using marble diagrams, which are a de-facto standard in visualizing algorithms in a reactive style, a common ground for communication is available regardless of the programming language used.

When appropriate, we choose more explicitly the Reactive Programming pattern and therefore moved this to "adopt".

Trial

Classic (web-)applications typically consist of transactions that submit large forms to the server side, which then processes these and, in response, returns HTML for the browser to render. Today's applications have more and more fine-grained 'real-time'-like aspects: A simple modification of a form field could trigger a complete round trip to the server including other services and persistence. Naturally, all of these transactions should respect the expectations of a user who wants a highly interactive application.

"Reactive Programming" tries to provide an answer to the challenges mentioned above by raising the level of abstraction. This allows you to focus on the stream of events that make up your business logic in a responsive, asynchronous fashion.

There are various descriptions of what Reactive Programming actually is - at the most general level it is programming with asynchronous data streams and contains tools to create, manipulate, combine and filter these streams. Under the term "Reactive Programming", we summarize the principles and implementations that underlie ReactiveX and the Reactive Manifesto.

"Reactive Programming" is employed in many of our services – frontend and backend – but not always as an explicitly chosen pattern. As different platforms have different means to tackle this style of programming, we choose to include "Reactive Programming" as a general Method and Patterns Item in addition to concrete libraries and APIs such as Rx.JS or Akka Streams to highlight the importance of the approach in general.