A professional's guide to solving complex problems while designing modern software
Key FeaturesLearn best practices for designing enterprise-grade software systems from a seasoned CTODeeper your understanding of system reliability, maintainability, and scalabilityElevate your skills to a professional level by learning the most effective software design patterns and architectural conceptsBook DescriptionAs 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.
What you will learnExplore architectural patterns to create anti-fragile systems that thrive with changeFocus on DevOps practices that empower self-sufficient, full-stack teamsBuild enterprise-scale serverless systemsApply microservices principles to the frontendDiscover how SOLID principles apply to software and database architectureCreate event stream processors that power the event sourcing and CQRS patternDeploy a multi-regional system, including regional health checks, latency-based routing, and replicationExplore the Strangler pattern for migrating legacy systemsWho this book is forThis 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.
Table of ContentsArchitecting for Innovation Defining Boundaries and Letting Go Taming the Presentation TierTrusting Facts and Eventual ConsistencyTurning the Cloud into the Database A Best Friend for the FrontendBridging Intersystem GapsReacting to Events with More EventsChoreographing Deployment and DeliveryDon't Delay, Start Experimenting
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!