

Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures [Ford, Neal, Richards, Mark, Sadalage, Pramod, Dehghani, Zhamak] on desertcart.com. *FREE* shipping on qualifying offers. Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures Review: Wish this book was published five years ago - I have been a CTO for ten years for companies big and small and have had to face the “legacy architect refactoring” challenge outlined in this book multiple times. This book would have saved us a lot of pain. While the tech and tooling for distributed architectures has gotten better and better the process for getting there hasn’t. The playbook outlined here is a must have for anyone facing the architecture modernization challenge. A few things that would make this book even better - Integrating DDD concepts especially around aggregates - Adding additional and/or more detailed decision dimensions for the people aspect (skills, org size and ability to grow, org design, etc), operations architecture, and development architecture. When making decisions these things have to be accounted for and these aspects seemed underplayed a bit. Overall though this is one of the most pragmatic books on tech I have read in a long time. A must read. Review: Great book - This is a great book. I enjoyed it far more than the fundamentals book. If you can master Kleppmann for the infrastructure grounding and this for real life use cases you'll be well on your way. I really appreciated the fact that they point out tradeoffs *everywhere*. That's part of the job and it can be hard to see them when we gravitate toward one option because it feels right or because of groupthink. Some minor criticisms: * the Data Mesh chapter felt tacked on, underdeveloped and in some places was incorrect or at least confusing (e.g. it says data warehouses cause loss of domain partitioning which is not true) * The book talked about tradeoffs so much it wasn't always clear why they thought taking a certain path would hurt a certain quality attribute. "Because there is more coupling scalability will suffer", etc. Perhaps. But explaining how would be great. The book hints at some relationships between quality attributes. If that were more well-developed that could be a way to better understand these statements too. * While I'm sure it wasn't meant for effect, there is only one woman in the story portions, she is somewhat naive, a bossy PITA and has to be dragged along most of the time. Having the *only woman* play that role stood out to me as potentially insensitive.


















| Best Sellers Rank | #28,420 in Books ( See Top 100 in Books ) #2 in Software Testing #3 in Software Design Tools #4 in Computer Systems Analysis & Design (Books) |
| Customer Reviews | 4.5 4.5 out of 5 stars (679) |
| Dimensions | 7 x 0.75 x 9.25 inches |
| Edition | 1st |
| ISBN-10 | 1492086894 |
| ISBN-13 | 978-1492086895 |
| Item Weight | 7.4 ounces |
| Language | English |
| Print length | 459 pages |
| Publication date | November 30, 2021 |
| Publisher | O'Reilly Media |
D**N
Wish this book was published five years ago
I have been a CTO for ten years for companies big and small and have had to face the “legacy architect refactoring” challenge outlined in this book multiple times. This book would have saved us a lot of pain. While the tech and tooling for distributed architectures has gotten better and better the process for getting there hasn’t. The playbook outlined here is a must have for anyone facing the architecture modernization challenge. A few things that would make this book even better - Integrating DDD concepts especially around aggregates - Adding additional and/or more detailed decision dimensions for the people aspect (skills, org size and ability to grow, org design, etc), operations architecture, and development architecture. When making decisions these things have to be accounted for and these aspects seemed underplayed a bit. Overall though this is one of the most pragmatic books on tech I have read in a long time. A must read.
J**H
Great book
This is a great book. I enjoyed it far more than the fundamentals book. If you can master Kleppmann for the infrastructure grounding and this for real life use cases you'll be well on your way. I really appreciated the fact that they point out tradeoffs *everywhere*. That's part of the job and it can be hard to see them when we gravitate toward one option because it feels right or because of groupthink. Some minor criticisms: * the Data Mesh chapter felt tacked on, underdeveloped and in some places was incorrect or at least confusing (e.g. it says data warehouses cause loss of domain partitioning which is not true) * The book talked about tradeoffs so much it wasn't always clear why they thought taking a certain path would hurt a certain quality attribute. "Because there is more coupling scalability will suffer", etc. Perhaps. But explaining how would be great. The book hints at some relationships between quality attributes. If that were more well-developed that could be a way to better understand these statements too. * While I'm sure it wasn't meant for effect, there is only one woman in the story portions, she is somewhat naive, a bossy PITA and has to be dragged along most of the time. Having the *only woman* play that role stood out to me as potentially insensitive.
J**H
great and try to stick with it
I thought that this book was the sequel. It’s not. Similar topics are followed. The authors did deep into the weeds. I think that some material could have been reduced and presented more tightly. There were a few times when I thought: just get to the point. The real benefit of this book is that the authors try to provide thought leadership to architects who have to make decisions found in this book. I really like that the authors intentionally state that architecture is a lot more than a design pattern and the choices architects face are not boilerplate in terms of picking one pattern instead of another.
S**N
An abstract analysis of distributed computing systems
A software architect foresees potential issues in a design and judges which way will instill the most business success in the long run. Unfortunately, in almost every scenario, trade offs permeate every option. As the saying goes, the devil is in the details. Learning to anticipate problems with wisdom set great software architects apart from merely experienced ones. In this book, several experienced authors look at those trade offs in the context of distributed software systems that are so fashionable these days. Distributed systems and microservices are used in large systems that integrate for innovative results. When the computing is parsed, each system becomes its own special service, and breaking up the systems with minimal “coupling” between them becomes a challenge. In addition, businesses inevitably need to see the big picture of their work. Integrating the distributed system must happen, but no perfect way exists to implement integration. These sort of challenges require the careful wisdom this work offers. This book is extremely abstract because software architecture is abstract by its nature. It covers some of the most challenging topics in distributed systems. I chose to listen to an audiobook format and somewhat regret the choice. Instead, I would have preferred to read the book in print for several reasons. First, tables would be easier to parse. Second, some sections are lists of different combinations, and listening to these was extremely boring. Finally, the text is so abstract that I would have liked to hover my eyes over a word or look up past definitions. None of these are facilitated by an audiobook format, unfortunately. The content itself is good, but it only addresses a niche audience. I’ve never designed a distributed system from scratch, so this text helped me think through potential pitfalls. Via these principles, I mentally redesigned some of the smaller systems I work with so that I could see what a more distributed system might look like if we ever have to go that route. This book is not an introduction to software architecture but meant for more advanced practitioners. Still, the careful thought dwelling in these pages can prevent shortsighted mistakes, cut lost employee effort, and lessen company expenses.
P**L
Invaluable knowledge
Love this book. The authors share their invaluable experience and knowledge in the book that worth every penny. I personally built a number of check-lists that I'm going to use in my trade-off analysis. The book is very well written. The authors carefully worked out every single paragraph to make it clear and easy to understand. The writing style and real world examples make the book very easy to read (well, maybe except the section about Data Mesh, which seems too abstract to me). If you liked "Fundamentals of Software Architecture" from Mark Richards and Neal Ford, you will certainly enjoy this one as a logical continuation of the latter.
E**D
great book
great content, worthy of Orielly .. very easy read for someone very familiar with all the concepts .. great reference and very practical - really cool .. thank you i bought three more titles because of this one :)
O**.
Very good. Yes
T**E
Awesome book. Great overview and some deep dives into the many trade off dimensions architects are challenged with every day
M**A
o'reilly publishing sucks. I wish authors self-published. I would buy that instead.
A**X
This is one of the best books I've ever read. I recommend it for every software architect
J**Y
This is a great book! It is a sequel to the authors' prior book, "Fundamentals of Software Architecture" (which isn't a prerequisite to this book, but is helpful). I liked that book. This one is way better. Where the first book stayed fairly high level and abstract, and focused on working as an architect in a company, this book is all about actual tough architecture decisions in practice. It applies some of the the first book's approaches and patterns (and a whole bunch of new ones) towards a fictional example application which a dev team is tasked to completely refactor. Basically, the book is structured as a narrative about a team breaking down a faulty outdated monolithic application into a modern microservices-based architecture. Each chapter essentially compares different aspects of how a monolithic architecture might have been written to do something in the past, then how a modern microservice architecture could do the same thing today. Along the way the authors offer terrific advice and approaches for effective tradeoff analysis (and countless suggestions and tips) that you can use when refactoring a large monolith app (or when building microservices from scratch), detailing at every level how you might sort out a tangled mess of dependencies into a clean microservices stack - from shared code libs/components/modules, to shared database tables and schemas, to various network concerns, etc. There is nearly no code (it's not an implementation book), but the descriptions of each example scenario, pattern, diagram, and everything around it are extensive and detailed. The authors don't actually offer any definitive "best practice" in any of the scenarios they consider, but rather present all the pros and cons of each approach you might consider - which all together support their overall thesis that there are no right or wrong answers in architecture, only tradeoffs to weigh and consider for any given design challenge and possible architectural solution. I give this book my highest recommendation - it's a winner.
Trustpilot
2 weeks ago
5 days ago