Abstract:
The demands and expectations for applications have changed dramatically in recent years. Applications today are deployed on a wide range of infrastructure; from mobile devices up to thousands of nodes running in the cloud—all powered by multi-core processors. They need to be rich and collaborative, have a real-time feel with millisecond response time and should never stop running. Additionally, modern applications are a mashup of external services that need to be consumed and composed to provide the features at hand.
We are seeing a new type of applications emerging to address these new challenges—these are being called Reactive Applications. In this talk we will discuss four key traits of Reactive; Responsive, Resilient, Elastic and Message-Driven—how they impact application design, how they interact, their supporting technologies and techniques, how to think when designing and building them—all to make it easier for you and your team to Go Reactive.
Intended Audience:
Programmers, architects, CIO/CTOs and everyone with a desire to challenge the status quo and expand their horizons on how to tackle the current and future challenges in the computing industry.
6. 3
Yesterday Today
Single machines Clusters of machines
Single core processors Multicore processors
7. 3
Yesterday Today
Single machines Clusters of machines
Single core processors Multicore processors
Expensive RAM Cheap RAM
8. 3
Yesterday Today
Single machines Clusters of machines
Single core processors Multicore processors
Expensive RAM Cheap RAM
Expensive disk Cheap disk
9. 3
Yesterday Today
Single machines Clusters of machines
Single core processors Multicore processors
Expensive RAM Cheap RAM
Expensive disk Cheap disk
Slow networks Fast networks
10. 3
Yesterday Today
Single machines Clusters of machines
Single core processors Multicore processors
Expensive RAM Cheap RAM
Expensive disk Cheap disk
Slow networks Fast networks
Few concurrent users Lots of concurrent users
11. 3
Yesterday Today
Single machines Clusters of machines
Single core processors Multicore processors
Expensive RAM Cheap RAM
Expensive disk Cheap disk
Slow networks Fast networks
Few concurrent users Lots of concurrent users
Small data sets Large data sets
12. 3
Yesterday Today
Single machines Clusters of machines
Single core processors Multicore processors
Expensive RAM Cheap RAM
Expensive disk Cheap disk
Slow networks Fast networks
Few concurrent users Lots of concurrent users
Small data sets Large data sets
Latency in seconds Latency in milliseconds
73. The Role of Immutable State
• Great to represent facts
• Messages and Events
• Database snapshots
• Representing the succession of time
30
74. The Role of Immutable State
• Great to represent facts
• Messages and Events
• Database snapshots
• Representing the succession of time
• Mutable State is ok if local and contained
• Allows Single-threaded processing
• Allows single writer principle
• Feels more natural
• Publish the results to the world as Immutable State
30
80. • Mobile
• Cloud Services, REST etc.
• NOSQL DBs
• Big Data
35
Distributed Computing
is the
new normal
81. What is the essence of
distributed systems?
36
82. What is the essence of
distributed systems?
To try to overcome that
1. Information travels at the speed of light
2. Independent things fail independently
36
87. 39
Graveyard of distributed systems
• Distributed Shared Mutable State
EVIL N
• (where N is number of nodes)
88. 39
Graveyard of distributed systems
• Distributed Shared Mutable State
EVIL N
• (where N is number of nodes)
• Serializable Distributed Transactions
89. 39
Graveyard of distributed systems
• Distributed Shared Mutable State
EVIL N
• (where N is number of nodes)
• Serializable Distributed Transactions
• Synchronous RPC
90. 39
Graveyard of distributed systems
• Distributed Shared Mutable State
EVIL N
• (where N is number of nodes)
• Serializable Distributed Transactions
• Synchronous RPC
• Guaranteed Delivery
91. 39
Graveyard of distributed systems
• Distributed Shared Mutable State
EVIL N
• (where N is number of nodes)
• Serializable Distributed Transactions
• Synchronous RPC
• Guaranteed Delivery
• Distributed Objects
• “Sucks like an inverted hurricane” - Martin Fowler
101. 45
Typesafe Reactive Platform
• Purely asynchronous and non-blocking
web framework
• No container required, no inherent
bottlenecks in session management
• Actors are lightweight, isolated and and
communicate via asynchronous message
passing
• Supervision and clustering in support of
fault tolerance
• Asynchronous and immutable
programming constructs
• Composable abstractions enabling
simpler concurrency and parallelism