Getting started with Reactive Systems

Reactive systems is a term used to describe an architectural style that enables applications composed of multiple microservices to work together as a single unit in order to better react to their surroundings and one another. Reactive systems are already in use in a wide variety of industries and use cases. But, what makes them reactive systems? How is this defined, and what makes a reactive system truly reactive?

In 2013, the Reactive Manifesto was created to lay out the key, high-level characteristics of reactive systems: responsiveness, elasticity, resiliency, and message-driven. The manifesto defines reactive systems as the following:

Systems built as Reactive Systems are more flexible, loosely-coupled, and scalable. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure, and when failure does occur, they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.

Get started with Reactive architecture

Designing cloud-native systems and microservices in a truly reactive manner requires architects and teams to think differently. The ebook Reactive systems explained provides a succinct and clear summary of reactive systems: what they are; when it’s best to use them; key patterns used when designing and creating them; and what frameworks and toolkits are available to help build them.

If you’re looking for a more hands-on experience to learn how to think about Reactive Systems from design through to production, then check out the “Lightbend Reactive Architecture” course.

Build Reactive microservices today

There are many different ways to implement a reactive system. Each framework achieves concurrency, parallelism, resiliency, and messaging in a variety of ways, and interacts with the underlying infrastructure differently. So, it’s important to fully understand the capabilities of the implementation you choose.

Reactive Messaging for MicroProfile is an open-source specification that provides asynchronous messaging support based on MicroProfile Reactive Streams. MicroProfile Reactive Messaging provides a very easy-to-use way to send, receive, and process messages, and is well-suited to writing applications that process streams of events. Reactive Messaging uses a model of annotated methods that are connected by named channels. In the blog post “Sending and receiving messages between microservices with MicroProfile Reactive Messaging” (Open Liberty), Andrew Rouse and Gordon Hutchison describe how to send and receive messages between microservices using MicroProfile Reactive Messaging. MicroProfile Reactive messaging, although not an end-to-end reactive solution, enables non-blocking, asynchronous message passing between services, giving them the ability to scale, fail, and evolve independently, and to remain unaffected by each other’s availability. MicroProfile Reactive Messaging can be used alongside IBM’s open-source application server, Open Liberty, to create reactive systems.

Vert.x is an open-source, polyglot, event-driven toolkit for building reactive systems. It is highly modular, with the toolkit providing many abstract classes, which can be extended and implemented as needed. Vert.x uses an event bus to communicate with different parts of the application. Vert.x supports multiple JVM and non-JVM languages, like Java, Groovy, Scala, Kotlin, Python, and JavaScript. The Vert.x toolkit can be used to create end-to-end reactive systems.

Akka (from Lightbend) is an open-source toolkit “for building highly concurrent, distributed, and resilient message-driven applications for Java and Scala.” Akka supports multiple programming models for concurrency, but emphasizes actor-based concurrency. The Reactive in practice (IBM Developer) tutorial series guides you through how to build a reactive system using Akka. Akka can be used alongside Lagom and Play to create end-to-end reactive systems. The Lightbend Platform can be used in the IBM Cloud Pak for Data.

Improve your Reactive skills

Reinforce your Reactive knowledge with the following resources:

Bring your skills in line with the new Reactive development landscape with the following resources: