Programming Reactive Systems


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

What you will learn

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

What’s included