In this Ask Lightbend Anything blog series, my colleague Alexander Golubyev, Senior Consultant at Lightbend, compiled a list of the most frequently asked questions from our conversations with hundreds of enterprises. In our previous ALA, we discussed how to choose which application to rewrite using a Reactive approach.
But what about when? When do you know it’s time to build a Reactive application?
Many of you have probably already seen the Reactive Manifesto, signed by over 24,000 people and crafted by experts like Lightbend co-founder and Akka creator, Jonas Bonér. For those who haven’t checked it out yet, the Manifesto sets out 4 key principles for building systems that react to modern demands on distributed services at scale.
I know what you’re thinking; the change to asynchronous processing, stateful, data-driven services, and a cloud-native microservices architecture is not easy at any given time. There are challenges that you’ll face along the way.
For example, the architecture of your Reactive system will need to be based on the principles of Domain Driven Design (DDD), and include event sourcing and CQRS. You will also need to understand how data persistence works with eventual consistency (vs strong consistency) and duplicated data. These approaches are slightly different than standard DAO/Service/MVC and definitely require an open mind and focus on Reactive goals.
So it’s important to consider whether it’s time to bother making your system Reactive, because it’ll require a change in thinking and additional effort…
When do you need to take a closer look at whether your systems are in need of a Reactive transformation? What triggers do should you be looking for? Here is a short list of requirements that may resonate with you:
Here you can solve each problem separately with a solution of your own design; however, if you have several of these requirements, it may be easier to use a platform or framework that can aid in developing your application in a Reactive manner.
With a subscription to Lightbend Platform, you can design, build, run, and manage your Reactive microservices architectures and real time streaming applications. In addition to enterprise features and full application lifecycle support, the Lightbend Platform includes the following open source technologies:
These technologies can really help in building out your Reactive applications, but it’s important to recognize these triggers in the previous section before making a commitment to go Reactive.
Once that decision is made, you can consider using new development patterns (i.e. DDD, asynchronous messaging), new approaches (CQRS, event sourcing), and platforms and frameworks (Lightbend Platform, Akka, Play, Lagom) that will help you in shifting gears to make your application Reactive.
If you weren’t able to check out the first blog post of the Ask Lightbend Anything series where we discuss how to choose which application to rewrite using a Reactive approach, you can view it here: https://www.lightbend.com/blog/ask-lightbend-anything-which-app-should-we-rewrite