Chapter 3. The Dark Side of Distributed Systems

Now that you have a better understanding of Reactive and had a brief overview of Quarkus, let’s focus on why you would want to use them and, more specifically, build reactive systems. The reason emanates from the cloud and, more generally, the need to build better distributed systems. The cloud has been a game changer. It’s making the construction of distributed systems easier. You can create virtual resources on the fly and use off-the-shelf services. However, easier does not mean straightforward. Building such systems is a considerable challenge. Why? Because the cloud is a distributed system, and distributed systems are complicated. We need to understand the kind of animal we are trying to tame.

What’s a Distributed System?

There are many definitions of distributed systems. But let’s start with a loose one, written by professor emeritus Andrew Tanenbaum, and see what we can learn:

A distributed system is a collection of independent computers that appears to its users as a single coherent system.

This definition highlights two important aspects of distributed systems:

  • A distributed system is composed of independent machines that are autonomous. They can be started and stopped at any time. These machines operate concurrently and can fail independently without affecting the whole system’s uptime (in theory, at least).

  • Consumers (users) should not be aware of the system’s structure. It should provide a consistent experience. ...

Get Reactive Systems in Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.