Wednesday, November 6, 2013

What is Reactive Programming?



In the recent years the application requirements have changed dramatically. For the system integration based on cloud computing technologies, the change is more then obvious.

A few years ago a large application was built by tens of servers, used gigabytes of data, the response time was counted in seconds and the offline maintenance has been accepted.

Available technologies in cloud computing area have changed the rules. Applications are running cross the platforms from mobile devices to cloud-based clusters. We are talking about thousands of servers, using petabytes of data, with expected response times in milliseconds without any downtime.


A new system architectures have evolved to let developers conceptualize and build applications and frameworks that satisfy today’s demands - Reactive Applications.





All this is reason enough for me to look at this topic more in detail. I have subscribed to the online course “Principles of Reactive Programming” at Coursera.




Reactive Programming is the next evolution after the observer pattern. If you are currently using the observer pattern and are observing more than one thing then you will more than likely be seeing state bugs. Reactive Programming is a simple set of tools that manage state and therefore eliminate state bugs.




Reactive Applications should be capable to:

  • React to events: the event-driven nature enables the following qualities.
  • React to load: focus on scalability rather than single-user performance.
  • React to failure: build resilient systems with the ability to recover at all levels.
  • React to users: combine the above traits for an interactive user experience.

The relationships can be seen at the picture below:






What is the coolest thing?

This new paradigm enables us to develop application which scale from one mobile phone up to thousands of servers.