The Reactive Manifesto
Principles for systems that are responsive, resilient, elastic, and message-driven.
The Reactive Manifesto was published in 2013 (with version 2.0 in 2014) by Jonas Bonér, Dave Farley, Roland Kuhn, and Martin Thompson, articulating principles for distributed systems that need to remain responsive under load, partial failures, and varying network conditions. The four characteristic properties: Responsive (the system responds in a timely manner if at all possible — responsiveness is the cornerstone of usability and utility); Resilient (the system stays responsive in the face of failure through replication, containment, isolation, and delegation); Elastic (the system stays responsive under varying workload through reactive scaling); Message Driven (asynchronous message-passing as the foundation for the other three, providing loose coupling, isolation, and location transparency). The manifesto is closely associated with the Akka actor framework (Bonér's project), Reactive Streams specification (which became the JDK Flow API and influenced RxJava, Reactor, and similar libraries), and the broader functional-reactive programming movement. The framework's influence extends to microservices design, stream-processing architectures, and event-driven systems, with the four characteristic properties widely cited even where the specific Reactive Manifesto label is not invoked.
Core components
- Four characteristic properties: Responsive, Resilient, Elastic, Message Driven
- Asynchronous message-passing as foundation
- Connection to actor model (Akka, Erlang/Elixir)
- Reactive Streams specification (JDK Flow, RxJava, Reactor, Project Reactor)
- Backpressure handling
- Location transparency through messaging
- Replication, containment, isolation, delegation as resilience mechanisms
Primary use case
Distributed systems requiring high availability and elasticity; foundation for actor-based and stream-processing systems; influence on microservices design particularly around resilience and asynchronous communication; basis for reactive programming libraries across JVM, .NET, JavaScript ecosystems; reference framework in distributed-systems education.
Common criticisms
- Manifesto-style format produces high-level principles with limited operational specificity
- substantial overlap with established distributed-systems principles raises questions about distinct contribution
- commercial association with Lightbend (Bonér's company) and the Akka ecosystem has limited some independent assessment
- reactive programming has become more complex than initial enthusiasm suggested — backpressure, resource management, debugging async code remain hard
- recent Akka licensing changes (2022 BSL move) have prompted re-evaluation of reactive-programming dependencies
- many systems labeled 'reactive' adopt the vocabulary without genuine architectural commitment
- competing frameworks (CQRS, Event Sourcing, EDA) overlap with reactive principles, creating which-when ambiguity.
Lineage
- Siblings
- Event-Driven Architecture, Microservices