We use AWS to host all of our servers. Please contact @Camille Ricketts to get set up with the right credentials.
Reactive Manifesto
Previously, application architecture depended on maintained servers and containers
Now :
- React to events (event-driven)
- React to load (scalable)
- React to failures (resilient)
- React to users (responsive)
Event Driven
Traditionally, systems were composed of multiple threads which ommunciate with shared, synchronized state
Strong coupling, hard to compose
Systems are composed from loosely coupled event handlers
Decoupled
Scalable
An application is scalable if it is able to be expanded according to its usage
- Scale up:
- make use of parallelism in multi-core systems
- minimize shared mutable state
- Scale out:
- make use of multiple server nodes
- location transparency, resilience
Resilient
- An application is resilient if it can recover quickly from failures
- Failures can be software, hardware or connection failures
- Requires loose coupling, strong encapsulation of state, pervasive supervisor hierarchies
Responsive
An application is responsive if it provides rich, real time interaction with its users even under load and in presence of failures
Responsive applications:
- built on event driven, scalable and resilient architecture
- still need careful attention to algorithms, system design, back pressure and many other details