This is a general introduction to reactive programming and reactive architectures and their rising role in modern systems.
Reactive programming: definition and context
Reactive programming: manifesto – message-driven
Reactive programming: manifesto – elasticity
Reactive programming: manifesto – resilience and responsiveness
1: What sort of programs is the reactive programming paradigm best suited for?
data flows orchestration and asynchronous events handling
computation-intensive algorithms and parallelization
database information retrieval and data mining
Millennium Falcon star charting and guidance system
2: What recent evolutions in computing favored the emergence of reactive programming?
the rise of cloud computing, exponential growth of web APIs and evolution towards massively distributed systems
multiplication of mobile devices and diversification of computing platforms
security breaches and cybercrime
AI resurgence and deep learning
3: What are the four most important charateristics of a reactive system?
message-driven, elastic, resilient and responsive
reacts to load, reacts to failures, reacts to users, reacts to temperature
4: What is Amdahl’s Law telling us?
contention is the enemy of scalability
speed-up of a program is proportional to the number of CPU cores
speed-up of a program is proportional to the number of threads
speed-up of a hyperdrive is proportional to the anti-matter supply throughput
5: Why is loose coupling essential to reactive systems?
it makes the architecture composable (more elastic), prevents cascading failures (more resilient), prevents wasting time and resources waiting on others (more responsive)
it elevates the level of abstraction of APIs
it makes testing components of the system easier
it reduces frictions between development teams