Reactive Principles: Why we contributed

October 1st 2020 by Dr. Roland Kuhn

The Reactive Foundation has published the Reactive Principles, a companion to the Reactive Manifesto that was published in 2013 and has received nearly 30'000 signatures to date. In both cases I contributed a significant part of the text, which was as inspiring as it was pleasant — working with Jonas Bonér and the Reactive crew is a great way to refine ideas and get to their core. After the text for the Principles was written, edited, and re-edited, every author got to answer the following questions — I liked them so much that I’m sharing this interview with you, enjoy!

How did you get introduced to Reactive Programming and Reactive Systems?

RK: After I had built some computing clusters for physics experiments and then hacked on Akka for some years I became more and more aware of the need for a better story than “distributed systems are hard”. When Jonas then sparked the Reactive movement I immediately started contributing because Reactive ties the hard parts back to the reasons why we are researching and using distributed systems in the first place.

What makes the Reactive principles and patterns so important for building distributed systems?

RK: While it is possible to sell good tools for building dependable distributed systems, it is not possible to outsource the understanding of the nature of distributed systems to some tool maker. If you want to reap the benefits like fault tolerance and scalability, or better yet, resilience and elasticity, then you will have to understand some of the basic tradeoffs that make these features possible. The Reactive principles represent these tradeoffs; and the patterns that arise from the application of the principles serve not only to illustrate the workings of Reactive systems but also get you started in the right direction with some best practices.

What practical challenges do the Reactive principles and patterns solve in everyday enterprise environments?

RK: The Reactive principles give clear guidance on the important points you need to consider when the goal is to build an IT system that needs to be better than a single computer can be. These breadcrumbs help everyone navigate the labyrinth of architecture and tool choices, from designing the provided services down to setting the algorithms and protocols in code. One often neglected challenge is the effective communication of the reasons behind the decisions taken in such a project, and here the principles and patterns may aid by offering a common vocabulary for a clearly defined set of ideas.

In your opinion, what makes the Reactive principles and patterns such a good fit for cloud native applications?

RK: The Reactive principles were distilled from decades of experience in building and operating distributed systems, over the last decade predominantly in the cloud. You could say that the fit is natural because these principles have grown up in and have been educated by the cloud environment. Over the past few years, we have seen these same principles fit perfectly to the seemingly different domain of edge native applications and mobile devices: while autoscaling in the cloud sense is not relevant here, all the tradeoffs for achieving reliable distributed systems apply in the same way. This is why edge native applications naturally give rise to the Reactive principles as well.

How do you recommend software architects and developers get started using these principles and patterns?

RK: Practical experience beats everything else: my recommendation is to pick a project that requires a dependable distributed system for its implementation, pick up a tool like Akka or ActyxOS, and get started. Having read the Reactive principles will add more depth to the tool’s documentation as you work through it, you will find yourself referring back to them from time to time. The description of the Reactive principles is abstract — as it needs to be — so you will form the necessary intuition by applying the principles, guided by one of the existing implementations and using it as a foundation. Later, you will be able to add your own pieces of Reactive tooling. And if you wish you may round off the experience by reading Reactive Design Patterns.

Latest posts