Akka Streams with Scala

The power of Reactive Streams in your hands. Learn to implement reactive data-rich systems at any scale, and write in 10 lines what other people write in 3000.

 

Plug and play.

If you're reading this, I probably don't need to talk to you about the reactive manifesto or the Reactive Streams initiative. The terms are fancy but they lay down powerful principles, which have been proven and sent to production in many many many places. The idea is simple: water tap, pipes, sink, plug all and go. Except we call those data sources, transformers and data sinks.

This course is for the Scala & Akka developer who wants to write scalable asynchronous data pipelines quickly, also known as "fast data" or "reactive" systems.

You'll learn to write fault-tolerant async data pipelines at scale, in as many lines as it takes Java to write "hello world".

After this course, you'll be able to:

  • use the principles of the reactive manifesto in your applications
  • read, transmit and process data with high performance, at scale, with streaming components
  • describe massive streams of any shape and size with the Graph DSL, without needing to care about concurrency
  • use backpressure to control the flow of data through your system
  • use streams materialization, a difficult concept understood only by the very best
    (half-joke: one of my students posted that the Akka Streams API was invented by the Lightbend folks just for themselves)
  • use graph cycles in your streams to your advantage
  • create your own streaming components with as much control as you like
  • integrate Akka Streams with normal actors
  • avoid concurrency pitfalls
  • circumvent cyclical streaming deadlocks
  • maintain data integrity in the face of disproportional demand or supply


Plus some extra perks:

  • You'll have access to the entire code I write on camera (all 2100 lines of it)
  • You'll be invited to our private Slack room where I'll share latest updates, discounts, talks, conferences, and recruitment opportunities
  • (soon) You'll have access to the takeaway slides
  • (soon) You'll be able to download the videos for your offline view
 

Skills you'll get:

  • Reactive Streams and Akka Streams principles
    • understand what "reactive" means
    • use streaming components
    • understand and use stream materialization
    • control the data flow in your streams with backpressure
    • test Akka streams
  • The Akka Streams Graph DSL
    • describe streaming architectures of any shapes and size
    • create composite components and use them atomically in other graphs
    • obtain materialized values from any streaminng graph
    • use and control graph cycles
  • Akka Streams best practices
    • integrate streams with Akka actors
    • integrate streams with (general) external services
    • reliably test Akka streams with the Akka Streams TestKit
    • achieve fault-tolerance in your streams
  • Advanced techniques with Akka Streams used by the very best
    • split data into parallelizable substreams
    • manage Akka streams at runtime
    • use the powerful GraphStage API to create your own components

all with live runnable examples and practiced with exercises.

 

Get started now!



Your Instructor


Daniel Ciocîrlan
Daniel Ciocîrlan

I'm a software engineer and the founder of Rock the JVM. I started the Rock the JVM project out of love for Scala and the technologies it powers - they are all amazing tools and I want to share as much of my experience with them as I can.

As of February 2024, I've taught Java, Scala, Kotlin and related tech (e.g. Cats, ZIO, Spark) to 100000+ students at various levels and I've held live training sessions for some of the best companies in the industry, including Adobe and Apple. I've also taught university students who now work at Google and Facebook (among others), I've held Hour of Code for 7-year-olds and I've taught more than 35000 kids to code.

I have a Master's Degree in Computer Science and I wrote my Bachelor and Master theses on Quantum Computation. Before starting to learn programming, I won medals at international Physics competitions.


 

Frequently Asked Questions


How long is the course? Will I have time for it?
The course is ~8 hours in length, with lectures around 20-30 minutes each. I recommend at least 1 hour of focused learning at one time.
How is a typical lesson like?
Code is king, and we write it from scratch (all 1500+ lines of it). In a typical lesson I'll explain some concepts, either briefly on a diagram or directly in the code. We then run live examples, and usually I'll finish the lesson with some exercises, which I then solve on camera after you've tried them yourself.
Can I expense this at my company?
Of course! You'll get a detailed receipt with your purchase, including VAT (if applicable to you), which you can take to your employer to reimburse. Most (wise) companies will reimburse courses like this.
Is this course hard?
The hardest part is materialization, which is the most abstract and the most poorly understood concept in general, but we crack it with live code, exercises and very cute diagrams. Otherwise, I've designed the course to give you a challenge, but not too much that it becomes frustrating. In case you struggle with something, we have a whole group on Slack for discussions, and I'm responsive.
I've never written Scala before. Should I take this course?
You shouldn't. The course is for Scala programmers. Even though we do a bit of a recap at the beginning of the course to make sure we're all on the same page, that part is not enough to give you confident skills with Scala if you've never seen it before.
I haven't worked with Akka actors but I need Akka Streams. Can I take this course?
I... would not recommend it, BUT we don't talk actors _too_ much during the course, because the components hide away much of the (actor-based) implementation.
I'm comfortable with Scala and threads and I'm curious about this actor model. Should I take this course?
I don't recommend it. You should at least understand what threads are and how a normal computer can do multiple things at the same time. Otherwise a lot of what we talk about here is going to be overwhelming.
I'm comfortable with Scala and I need Akka Streams (or I'm really curious about this). Should I take this course?
Yes! This course is made for you.
Daniel, I want to join but I can't afford it.
For a while, I offered discounts for the Rock the JVM courses to whomever needed them. But then I looked at the stats: almost nobody who took them actually completed any course. The full-price students were 3x as likely to complete the course. So I'm not offering discounts anymore. This course will pay off if you commit.
What if I don't like the course?
Then I want to give your money back. Email me at [email protected] with your receipt, and I will refund you. Less than 1% of the Rock the JVM students have refunded a course, and the refund took less than 72 hours.