A professional's guide to solving complex problems while designing modern software As businesses are undergoing a digital transformation to keep up with competition, it is now more important than ever for IT professionals to design systems to keep up with the rate of change while maintaining stability. This book takes you through the architectural patterns that power enterprise-grade software systems and the key architectural elements that enable change (such as events, autonomous services, and micro frontends), along with showing you how to implement and operate anti-fragile systems. First, you'll divide up a system and define boundaries so that your teams can work autonomously and accelerate innovation. You'll cover low-level event and data patterns that support the entire architecture, while getting up and running with the different autonomous service design patterns. Next, the book will focus on best practices for security, reliability, testability, observability, and performance. You'll combine all that you've learned and build upon that foundation, exploring the methodologies of continuous experimentation, deployment, and delivery before delving into some final thoughts on how to start making progress. By the end of this book, you'll be able to architect your own event-driven, serverless systems that are ready to adapt and change so that you can deliver value at the pace needed by your business. This book is for software architects who want to learn more about different software design patterns and best practices. This isn't a beginner's manual – you'll need an intermediate level of programming proficiency and software design to get started. You'll get the most out of this software design book if you already know the basics of the cloud, but it isn't a prerequisite.
I wanted a book about serverless solutions, but I didn’t expect so many fresh ideas about how to approach event sourcing in a highly distributed system. The structure of the book is a bit inconvenient, mostly because of too frequent expression like “we will learn more about it in chapter X Y Z”. Still it shows a very innovative vision and leaves a lot of food for thought.
The architecture described in the book is great, I'm not going to review the technical part as obviously I'm not experienced enough as the author who has a lot more insights about architecture in such large scale. The first chapters started off really nicely and I could easily follow his thought process. What I was missing though was a solid practical example that can evolve from the very first chapter throughout the whole book. This way it would feel way more comprehensible to me as I love the practical side of things. The practical examples in the next few chapters were great but they were imo rapidly developed and could have been introduced a bit slower from the start so that the reader can understand easier the nuts and bolts of the architecture. Although I understood the most of it, it was quite a hard read to get a good grasp of the BFFs, ESGs and so on. Please keep in mind that I don't have a lot of experience with cloud architecture and architecture in really large scale in general so that is of course my own opinion.
I liked how the author included his own opinions and experiences, it was cool to read about the troubles he's had when designing systems in the past and how it evolved to today.
A very good book, touching on all aspects of modern software development from an architect's POV. I think the part with "Serverless Systems" is a bit of a click-bait (read-bait? :), as the book is not really oriented towards serverless. Nevertheless, it's an awesome book that gave me lots of insights. I highly recommend it!