Chapter 3. Distributed Domain-Driven Design
As you explore the tools and techniques that Akka offers, you will find a need for something to tie all of the concepts together. You need a guiding set of principles that will help you design not just your actors, but also the larger components that make up an entire system. As you learn about new concepts like clustering, it will become apparent that you need a way to divide your application into smaller subsystems. You need to understand the boundaries for those subsystems and how they interact. The guiding principles we will use for this come from domain-driven design (DDD). When put together in a distributed Akka system, we will use the term distributed domain-driven design (DDDD).
DDD is a widely adopted concept initially created by Eric Evans. We will be covering some of the basics, but if you are interested in pursuing DDD further, you should look for Evans’ original book1 or some of the follow-up books by people like Vaughn Vernon.2
DDD is a set of guiding principles for software architecture. The principles of DDD are not revolutionary. In fact, a common reaction to people hearing them for the first time is “well, of course. That’s obvious.” It is not the principles themselves that are so powerful; rather, it’s how they are applied and how they are combined. Applying them consistently throughout a project can transform that project from something that is cumbersome and awkward into one that is elegant and considerably ...