Using Akka Streaming for 'saving alerts'

The goal of the project was to notify users on store in a real time fashion of available coupons, so that they could use them more effectively on the spot and save money.

The challenge consisted in guaranteeing a performant consistent non-blocking streaming consuming application, that would maintain stability with back pressure and without single-point-of-failures, and at the same time provide some basic state consistency in order not to spam users with more than one reminder per day.

A combination of Akka streaming application developed in Scala to consume from an existing Kafka queue, and lightning fast in-memory database (Redis) for persistence delivered the job.