Modern distributed applications run in environments that may include thousands of processors, web and mobile clients, hybrid cloud deployments, and petabytes of data. The traditional patterns and practices for enterprise application development simply can't deliver the millisecond response times and near-perfect reliability these systems require. Reactive applications meet these demands by employing a loosely-coupled system of independent, isolated components that communicate via asynchronous message passing. These systems are highly responsive to changes in load, extremely fault tolerant through self-healing, and designed to elastically scale. For developers working in JVM-based systems, the Typesafe stack, anchored by the Java and Scala programming languages and the Akka toolkit and runtime, gives developers the tools to build a production-ready reactive application platform.
Reactive Application Development teaches you how to build reactive applications using the Typesafe stack. The book starts with an architectural overview that teaches you how a reactive application works and shows you where the various technologies you'll use fit into the system. Then you'll tackle the many moving pieces of a reactive application, learning to apply patterns such as CQRS, Event Sourcing, Microservices and more. Along the way, you'll learn how to build distributed domain models for reactive applications and clustered actor systems for elasticity and resilience, as well as how to integrate reactive systems with traditional architectures. You'll also pick up techniques for testing reactive applications, refactoring existing systems, and designing RESTful APIs.
Duncan DeVore works at Typesafe, is a committer on the original event-sourced project that became Akka Persistence, and maintains the Akka Persistence Mongo Plugin.
I like this book a lot but unfortunately by the time I got to read it in 2020, Akka has moved on and some of the content is getting dated.
Specifically there is a lot of use of Akka Remoting, but scant coverage of Akka Cluster. The official Akka docs and other resources nowadays discourage direct use of Akka Remoting and point towards use of higher level Akka Cluster instead.
This book will help with understanding Akka concepts, and has some fun example programs, but you’ll want to check other resources to learn how to use Akka Cluster and other updated APIs.
The final chapter has a lot of useful pointers related to making your application production ready.