We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Succeeding at Reactive Architecture - Ian Cooper - NDC London 2023
Discover the principles and practices of reactive architecture, an approach to building resilient, elastic, and responsive distributed systems through actor models, flow-based programming, and more.
- Reactive architecture is about creating systems that are resilient, elastic, and responsive.
- It’s an approach to building distributed systems that views them as a collection of actors that communicate with each other.
- Actor models, flow-based programming, and reactive systems are key concepts in reactive architecture.
- Actor models are a way of thinking about systems as collections of autonomous components that communicate with each other.
- Flow-based programming is similar to actor models, but is more focused on the flow of data between components.
- Reactive systems are designed to be responsive, partly because they don’t have a global state.
- Components in a reactive system are designed to be able to crash, but the system as a whole remains responsive.
- The “let it crash” philosophy is central to reactive architecture.
- Components should not retain state, but instead, the state should be kept in a log.
- This allows components to crash and restart without losing state.
- Consumer-driven contracts are used to define the interface between components.
- The concept of “streaming” is central to reactive systems, as it allows data to be processed in real-time.
- Flow-based programming is similar to data flow programming, but is more focused on the flow of data between components.
- The “pull” model of data flow is used in reactive systems, where components request data from each other.
- The “push” model is also used, where components send data to each other without being requested to do so.
- The “ hot” and “cold” terms are used to describe whether data is being processed in real-time or not.
- Event sourcing is a technique used to manage state in a distributed system.
- It involves storing the history of all events that have occurred in the system, and using that history to determine the current state of the system.