- Responsive: the system should respond in a timely manner
- Resilient: in case the system faces any failure, it should stay responsive
- Elastic: reactive systems can react to changes and stay responsive under varying workload
- Message-driven: reactive systems need to establish a boundary between components by relying on asynchronous message passing