• The Internet had 1 billion users.
• Facebook had 5.5 million users.
• YouTube was a new born.
• Netﬂix had yet to introduce video streaming (2007)
• The internet has 2.95 billion users.
• Facebook has 1.393 billion monthly active users.
• YouTube has 1 billion users with 6 billions of hours of video/
• Twitter has 270 million users.
• Netﬂix has 57.4 million digital subscriber with 1 billion
hours of video/month
• A set of ideas and principles to manage complexity in the world
of highly responsive, asynchronous, scalable applications.
• The goal of reactive programming is to build responsive, ﬂexible,
and highly scalable applications without managing the complexity
• The system responds in a timely manner if at all possible.
• Responsive systems focus on providing rapid and consistent
response times, establishing reliable upper bounds so they
deliver a consistent quality of service.
Responsiveness is the cornerstone of usability and utility, but more
than that, responsiveness means that problems may be detected
quickly and dealt with eﬀectively.
• Message-driven architectures are share-nothing by design.
• No shared mutable state between components.
• Avoid single-point-of-failures by partitioning+replication.
SCALE UP/DOWN AND OUT/IN
AuthService x = getAuthService(/* local or remote*/)
x.sendMessage(new Login("asoliman", "password"))
• Abstraction over location of components enables you to scale out
and up in the same way.
• The underlying message-passing system should handle all the
plumbing and the optimization for the message delivery
• Foundation of scalable, resilient, and ultimately responsive systems.
• Immutable by design
• Loose Coupling
• Concurrency Control
• Everything is a stream of messages