
Reactive Programming & Applications
Software environments can change multiple times during the lifetime of an application or product. This often leads to scalability issues or incompatibility between different technologies.
“In computing, reactive programming is a programming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model will automatically propagate changes through the data flow.” – Wikipedia
“Reactive applications are fundamentally different to the traditional web-based or mobile applications seen today and are distinguished by having one or more of the following defining traits:
Event-Driven: Enables parallel, asynchronous processing of messages or events with ease.
Scalable: Can scale within and across nodes elastically to provide compute power on-demand when it’s needed.
Resilient: The ability to recover and repair itself automatically in order to provide seamless business continuity.
Responsive: Rich, engaging, single page user interfaces that provide instant feedback based on user interactions and other stimuli.
Historically, the more of these traits required by an application, the more difficult it becomes to take disparate technologies and make them work together; developers first have an integration project on their hands before they can even start developing an application.” – TypeSafe
Over the period of 4 years we have made several changes to some of the frameworks and technologies used in our products and often had the scenario where multiple api libraries are used to address specific limitations. This affected the scalability of our applications and impacted the development time to a large extend. Reactive applications provided a flexible implementation for our existing code by using event-and-data-driven patterns.
Benefits:
- Faster development
- Improved Stability and Scalability
- Improved Performance
- Improved Compatibility between different platforms and devices