
Master the actor model and build fault-tolerant, concurrent Akka applications in Scala, exploring actors, supervision, streams, remoting, clustering, and serialization across 45+ hours of content.
Follow the course in order with a deconstructed sequence and exercises you solve yourself to boost retention; use lifetime access, stay focused 1–2 hours, and have fun coding.
Recap the Scala features: values and variables, expressions, types and unit, functions, tail recursion, object oriented concepts, generics, case classes, exceptions, and tools like map, for comprehensions, and pattern matching.
Master advanced Scala concepts with partial functions, lifting, and or else, plus type aliases and implicits. Explore implicit values, conversions, and scope rules in relation to Akka and multithreading.
Explore creating and managing threads in the JVM with runnable, start, and join; understand thread safety through synchronized and volatile, and harness Scala futures with map, flatMap, filter and onComplete.
Explore Akka's actor model in code by creating an actor system, defining actors with receive, and sending asynchronous messages via tell using actor references, props, and companion objects.
Explore two akka classic exercises in scala: a counter actor with increment, decrement, and print, and a bank account actor with deposit, withdraw, and statement.
Explore how Akka schedules actors on a thread pool, enqueues messages in mailboxes, and guarantees single-threaded, atomic processing per actor. Understand at most once delivery and per-pair message order.
Explore how Akka actors change behavior over time with a mom and fuzzy kid scenario, using vegetable and chocolate messages and using context become to swap handlers.
Explore Akka's child actors, context-based creation, and guardian hierarchies, then learn actor selection by path and the importance of not exposing mutable state or this reference.
Leverage Akka child actors to implement a master–worker word counting exercise with round-robin task distribution and task IDs. Track original senders with a request map to return correct counts.
Explore actor logging in Akka, using explicit logging or the actor logging trait, with messages at debug, info, warn, and error levels; learn parameter interpolation and async stdout logging.
Learn to test akka actor systems with test kit by creating a test suite, an actor system, and basic specs. Explore asynchronous assertions, expect messages, and perform teardown.
Learn to use Akka TestKit's event filters to intercept log messages in integration tests, illustrated with a checkout flow and configurable log timing.
Learn to start and stop actors in akka classic with scala, using context.stop for children and self, plus poison pill, kill, and death watch for termination awareness.
Learn how Akka supervision controls actor failures to build fault-tolerant systems. Use one-for-one and all-for-one strategies to restart, resume, stop, or escalate, with death watch.
Learn the backoff supervisor pattern in Akka to avoid mass restarts when external resources recover; use exponential delays and randomness to stagger retries for failing actors.
Explore akka schedulers and timers to run code after a delay or at intervals, using schedule once and schedule with interval, plus timers for self messages and cancellation.
Explore Akka routers to delegate work across multiple actors using round robin, pool, and group routing, with manual, config-based, and group approaches demonstrated in Scala.
Learn how Akka mailbox systems manage actor messages by building a custom priority mailbox and a control aware mailbox, then configure dispatchers and observe processing order.
Akka finite state machines simplify complex actor logic using a vending machine controller example, with stateful transitions, messages, and test suites.
Learn to rewrite a vending machine as an Akka FSM, defining vending states and data, using go to, stay, and initialize, with state timeout handling.
Celebrate the shift from threads and locks to actors and messages. Review handlers, supervision, dispatchers, mailboxes, routers, and schedulers as you build robust Scala Akka applications.
In this course, we will learn how to write concurrent and resilient applications using Akka actors. You'll write 2000+ lines of Akka code yourself, with guidance, and you will become a rockstar.
This course is for Scala programmers who need to design complex and scalable concurrent applications.
Why Akka:
it speeds up the development of concurrent applications by as much as 10x
its demand has exploded
it's a highly marketable skill
it's incredibly fun - once tasted Akka, you'll never want to get back to threads
I like to get to the point and get things done. This course
deconstructs all concepts into the critical pieces you need
selects the most important ideas and separates them into what's simple but critical and what's powerful
sequences ideas in a way that "clicks" and makes sense throughout the process of learning
applies everything in live code
The end benefits are still much greater:
a completely new mental model around parallel applications
significantly more marketable resume
more enjoyable work - Akka is fun!
This course is for established programmers with experience with Scala and with functional programming at the level of the Rock the JVM Scala beginners course. I already assume a solid understanding of general programming fundamentals.
This course is NOT for you if
you've never written Scala code before
you've never worked with threads
The course is comprehensive, but you'll always see me get straight to the point. So make sure you have a good level of focus and commitment to become a badass programmer.
I believe both theory and practice are important. That's why you'll get lectures with code examples, real life code demos and assignments, plus additional resources, instructions, exercises and solutions. At the end of the course, you'll have written thousands of lines of Akka.
I've seen that my students are most successful - and my best students work at Google-class companies - when they're guided, but not being told what to do. I have exercises waiting for you, where I offer my (opinionated) guidance but otherwise freedom to experiment and improve upon your code.
Definitely not least, my students are most successful when they have fun along the way!
So join me in this course and let's rock the JVM!