Technology Radar TemplateTechnology Radar Template

Reactive Programming

This item was not updated in last three versions of the Radar. Should it have appeared in one of the more recent editions, there is a good chance it remains pertinent. However, if the item dates back further, its relevance may have diminished and our current evaluation could vary. Regrettably, our capacity to consistently revisit items from past Radar editions is limited.
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.