Description
Today, many software projects fail. There are various surveys and reports that show this, some of which report anywhere from 30 to 50 percent failure rates. This number doesn’t count those projects that delivered but with distress or that fell short of at least some of the prerequisite success criteria. These failures, of course, include projects for the enterprise. See the Chaos Report [Chaos Report], Dr. Dobb’s Journal [DDJ], and Scott Ambler’s survey results [Ambysoft].
At the same time, some notable successes can be found among companies that use Scala and Akka to push the limits of performance and scalability [WhitePages]. So, there is not only success but success in the face of extreme nonfunctional requirements. Certainly it was not Scala and Akka alone that made these endeavors successful, but at the same time it would be difficult to deny that Scala and Akka played a significant role in those successes. I am also confident that those who make use of these tools would stand by their platform decisions as ones that were key to their successes.
For a few years now it has been my vision to introduce the vast number of enterprises to Scala and Akka in the hopes that they will find similar successes. My goal with this book is to make you familiar with the Actor model and how it works with Scala and Akka. Further, I believe that many enterprise architects and developers have been educated by the work of Gregor Hohpe and Bobby Woolf. In their book, Enterprise Integration Patterns [EIP], they provide a catalog of some 65 integration patterns that have helped countless teams to successfully integrate disparate systems in the enterprise. I think that leveraging those patterns using the Actor model will give architects and developers the means to tread on familiar turf, besides that the patterns are highly applicable in this space.
When using these patterns with the Actor model, the main difference that I see is with the original motivation for codifying the patterns. When using the Actor model, many of the patterns will be employed in greenfield applications, not just for integration. That is because the patterns are first and foremost messaging patterns, not just integration patterns, and the Actor model is messaging through and through. You will also find that when implementing through the use of a Domain-Driven Design [DDD, IDDD] approach that some of the more advanced patterns, such as Process Manager (292), will be used to help you model prominent business concepts in an explicit manner.
Who This Book Is For
This book is for software architects and developers working in the enterprise and any software developer interested in the Actor model and looking to improve their skills and results. Although the book is definitely focused on Scala and Akka, Appendix A provides the means for C# developers on the .NET platform to make use of the patterns as well.