Reactive programming is a set of techniques for implementing scalable, resilient and responsive systems as per the Reactive Manifesto. Such systems are based on asynchronous message-passing, and their basic building-blocks are event handlers. This course teaches how to implement reactive systems in Scala and Akka by using high-level abstractions, such as actors, asynchronous computations, and reactive streams.
You will learn how to:
- use, transform and sequence asynchronous computations using Future values
- write concurrent reactive systems based on Actors and message passing, using untyped Akka and Akka Typed
- design systems resilient to failures
- implement systems that can scale out according to a varying workload
- transform and consume infinite and intermittent streams of data with Akka Stream in a non-blocking way
- understand how back-pressure controls flows of data
Overview
Syllabus
- Introduction, Recap and Asynchronous Programming
- This module shows you how to get started with the course. After setting up your machine to work on and to submit assignments, it will provide you with a recap of the basics of the Scala language. Finally, you will encounter the first topic of the course, asynchronous programming with Futures.
- The Actor Model
- This module presents the Actor model: after analyzing its advantages and strengths, you will learn the semantics and design principles of actor systems before learn how to concretely test actor-based programs
- Handling Failure and State
- This module further explores the Actor model by showing useful patterns used to create complex and resilient programs
- Distributed Computing
- Actors allow you to decouple a program in units that can be distributed on a single or on multiple machines. This module elaborates on the power and the consequences of distributed computation
- Typed Actors
- Now that you are familiar with the Actor model, this module shows how to leverage Scala's powerful type system to write programs with more confidence by using typed actor descriptions
- Stream Processing
- This module introduces the concept of data streams and the basic semantics of stream processing before showing how the Akka framework can be used to tackle common challenges in this domain
- Advanced Stream Processing
- This final module elaborates on more complex and powerful patterns in stream processing as well as how to the integrate the actor model to create custom nodes of data processing
Taught by
Roland Kuhn, Konrad Malawski, Martin Odersky and Julien Richard-Foy