
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 how the standard thread model fails encapsulation, introduces synchronization pain, and complicates delegation and debugging. Embrace actors with Akka to simplify concurrency.
Explore the Akka actor model, modeling code as message driven actors you can't access directly, using asynchronous messaging to simplify object interactions and address threading challenges.
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 Akka actors in Scala, building simple actors, handling immutable, serializable messages, using context, self, and sender to communicate in a non-blocking, asynchronous system.
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.
Discover how to revert to previous actor behaviors in akka using context become with true or false, build a stack of message handlers, and use unbecome to pop back.
Learn to change actor behavior with context become by rewriting stateful actors as stateless receive handlers. Explore a counter exercise and a simplified voting system to demonstrate the pattern.
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.
Configure akka with inline strings and external files, explore namespaces and multiple actor systems, and load json, properties, and conf configurations with log level examples.
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.
Explore test probes in Akka with Scala, using test kit to simulate master-slave word-count flow, sending work, handling work completed, and reporting results.
Learn how to implement timeboxed assertions with within and receive while to validate timed Akka test kit scenarios, and use test probes to verify actor behavior.
Learn to use Akka TestKit's event filters to intercept log messages in integration tests, illustrated with a checkout flow and configurable log timing.
Explore synchronous testing of Akka actors using test actor refs and the calling thread dispatcher. Learn how this approach ensures deterministic message handling before assertions, reducing flaky tests.
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.
Explore the actor lifecycle in Akka classic with Scala, detailing actor instances, references, and paths, and explain start, suspend, resume, restart, and stop with lifecycle hooks.
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.
Explore how dispatchers control message handling in an actor system, configure custom dispatchers with thread pools and throughput, attach them to actors as execution contexts for futures and blocking calls.
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.
Learn how to implement stash in Akka with a resource actor: stash messages in closed state, switch to open with context become, and unstack all to replay messages.
Learn the ask pattern to obtain a reply from an actor using the question mark. Process futures with oncomplete or pipe, and avoid mutating state to preserve encapsulation.
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!