Chapter 5. Toward Reactive Microsystems

Ever since I helped coauthor the Reactive Manifesto in 2013, Reactive has gone from being a virtually unknown technique for constructing systems—used by only fringe projects within a select few corporations—to become part of the overall platform strategy in numerous big players in the industry. During this time, Reactive has become an overloaded word, meaning different things to different people. More specifically there has been some confusion around the difference between “Reactive Programming” and “Reactive Systems” (a topic covered in depth in this O’Reilly article, “Reactive programming vs. Reactive systems”).

Reactive Programming is a great technique for making individual components performant and efficient through asynchronous and nonblocking execution, most often together with a mechanism for backpressure. It has a local focus and is event-driven—publishing facts to 0–N anonymous subscribers. Popular libraries for Reactive Programming on the Java Virtual Machine (JVM) include Akka Streams, Reactor, Vert.x, and RxJava.

Reactive Systems takes a holistic view on system design, focusing on keeping distributed systems responsive by making them resilient and elastic. It is message-driven—based upon asynchronous message-passing, which makes distributed communication to addressable recipients first class—allowing for elasticity, location transparency, isolation, supervision, and self-healing.

Both are equally important to understand how, ...

Get Reactive Microsystems 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.