This is the foreword I wrote for Duncan DeVore’s and Sean Walsh’s great book on Reactive Application Development.
Available from Manning here.
In the last 5 years, we have seen Reactive progress from a virtually unacknowledged technique used only by fringe projects within a select few corporations to a part of the overall platform strategy of numerous big players in many different fields, including middleware, financial services, retail, social media, and betting/gaming. Its usage has moved beyond early adopters and distributed systems experts to be the foundation of some of the most interesting emerging technologies today, including Cloud Computing, Microservices, Streaming/Fast Data, and the Internet of Things.
The Reactive Manifesto—that I helped co-author in 2013—defines Reactive as a set of architectural design principles that are geared toward meeting the demands that systems face today, and tomorrow. These principles are not new but can be traced back to the ’70s and ’80s and the groundbreaking work by Jim Gray and Pat Helland on the Tandem System, and Joe Armstrong and Robert Virding on Erlang. However, these pioneers were ahead of their time, and it was not until the past 5-10 years that the technology industry at large was forced to rethink current best practices for enterprise system development and learned to apply the hard-won knowledge of the Reactive principles to today’s world of distributed systems and multicore architectures.
I think that this learning experience—running into the limitations and constraints of “traditional” system design, being forced to challenge, rethink, and relearn current practices, and eventually reaping the benefits of a Reactive design—is probably how Duncan, Sean, and Brian, would describe their journey. I first met Duncan and Sean in 2012 when they were working at a startup in Philadelphia, building a product in the Smart Energy space, allowing customers to reduce their energy costs by interacting proactively with the electric grid. They were about a year into the development of the platform, which they had built on Akka, following the principles of Reactive systems, and were in the middle of building out their persistence story using Event Sourcing and CQRS. I remember how enthusiastic they were, and that their passion was contagious. Later Sean and Duncan both joined Lightbend where they have helped many customers around the world to build highly concurrent, resilient, and elastic systems using the Reactive design principles.
This book makes it clear that the authors have been there, getting their hands dirty, learning by doing. It is packed with hard-won wisdom and practical advice that will set you on the right path towards effective Reactive Applications Development. Along the way, you will learn how Bounded Contexts, Domain Events, Futures, Actors, Streaming, and Event Sourcing/CQRS compose into highly responsive, scalable, and available systems while keeping complexity under control. It is a working book, and you have a lot of work in front of you, and if you put in the hours you will be rewarded in spades.
I hope you’ll enjoy the ride. I know I did.
—Jonas Bonér, Founder, and CTO of Lightbend, Creator of Akka