Reactive SystemsBlog Category :Published on: 26 July 2019
“Create Systems, Not Individual Services”
By means of an asynchronous, non-blocking, message- driven approach, highly resilient and elastic systems can be formed, resulting in a consistently responsive user experience
- Responsive —high-performance, providing instant feedback based on user and API interactions in all circumstances. So that means that Reactive systems need to be responsive under load at peak periods.
- Elastic—able to scale up and down predictably and elastically on-demand, across cores, nodes, and clusters.
- Resilient—self-healing: recovering and repairing themselves automatically for seamless business continuity.
- Message-Driven—processing messages in parallel, asynchronously, without blocking, ensuring loose coupling, isolation and location transparency.
Benefits of Reactive Systems
Reactive Systems allow teams to be just as scalable as the technology itself. LinkedIn scaled up their engineering teams from ~50 to ~500 individuals. They couldn’t have done that if they’d needed complex coordination and cooperation amongst teams developing their systems.
Primary Benefits of Reactive Systems
- Improved system performance
- Reduced infrastructure footprint
- Protected from the risk of expensive downtime
- Able to scale elastically when needed
- A more flexible, scalable stack
- From monolith to microservices
- Monoliths to distributed systems
- Clean “Message-Driven” model
- Event sourcing and CQRS by default
- Intelligent self-healing
- Highly performant & responsive
- Get value from real-time data analysis
- Modelling complex, highly concurrent software systems without using locks, threads, race conditions or any of the other challenges presented by more traditional software development methodologies.
- Developers working on isolated, autonomous, event-driven systems where their changes aren’t at risk of causing cascading failures that bring down an entire system.
- Launching an entire development environment in a matter of minutes, or taking seconds to see code changes reflected in a running system (automatically, when you recompile).
- Real-time feedback from monitoring tools that effortlessly integrate so deeply into your programming model that they help you prevent and solve issues before they’re even checked into source control.
Customers coming from a more traditional software development approach are surprised by how fast deployment is when working with the Reactive Platform. Going from a release every one or two weeks to deploying dozens of times a day is not uncommon. Releases that used to take hours, days, or longer now happen in minutes.
New features are built and shipped fast, allowing organisations already dominant in a business area to stay dominant, defending their territory against smaller, more agile competitors.
Decrease in Infrastructure Cost
PayPal processes over one billion streaming events per day on just 8 VMs, where previously they needed over 100 VMs.
T-Mobile in the US moved from using 144 machines, each processing 13,000 messages/second, to just 12 machines, each processing 5 million messages/second.
Reactive Systems provide opportunities for dramatic cost savings on infrastructure.
At least 50% infrastructure reduction is reported by all customers, and most experience much greater improvement. This is due to the asynchronous, non-blocking, message-driven nature of the underlying Actor Model runtime of Akka.
Zalando scales 100x every day in order to support the system load brought about by their daily sales promotions. Then they scale back down when the sales are over and use only the infrastructure required to support current load. Zalando’s business model would be completely unaffordable with a more traditional development approach.
Reactive Systems are able to scale to a degree that, until now, simply wasn’t possible.
Verizon chose to rebuild their customer-facing system with Play and Akka after experiencing regular outages during high-load events, like iPhone launches and Black Friday. They expected 43 million customers to upgrade to the new iPhone when it was launched and they mandated zero down time. Their new system has experienced no downtime at all since its launch.
Walmart Canada also experienced outages at vital times until they bolstered critical parts of their system with Reactive technology. They experienced their first Black Friday without any downtime, and needed ~50% less infrastructure.
Reactive Systems are able to self-heal and continue operating in the face of inevitable failures that occur in production environments
Verizon was able to increase responsiveness to their customer’s way beyond the industry average of 6 or 7 seconds. They cut response time to just 2.4 seconds.
Walmart Canada supports millions of requests per hour they receive from customers with ease.
Increasing Resilience and Elasticity naturally increases responsiveness. No matter what is happening your system can respond in a meaningful way to users. This responsiveness means users continue to trust your application. Even if their experience is degraded in some way, no failure affects the entire system.
Total Cost of Ownership
There are several reasons why Reactive Systems offer a reduction in TCO compared to systems developed in a more traditional manner.
- Reducing infrastructure costs and increasing responsiveness
- Reducing the frequency and impact of failure
- Increasing Time-to-Value and launching new features more quickly
The Right Approach
We live in a world where we need to respond very quickly to users, to meet the needs for a modern digital retail solution it needs to be Cloud Native, API first, Reactive, Events first Domain Driven Design, Distributed and Microservices based.