Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures 1st Edition
| Price | New from | Used from |
|
Audible Audiobook, Unabridged
"Please retry" |
$0.00
| Free with your Audible trial | |
- Kindle
$41.79 Read with our free app -
Audiobook
$0.00 Free with your Audible trial - Paperback
$43.998 Used from $35.00 26 New from $39.99
Purchase options and add-ons
There are no easy decisions in software architecture. Instead, there are many hard parts--difficult problems or issues with no best practices--that force you to choose among various compromises. With this book, you'll learn how to think critically about the trade-offs involved with distributed architectures.
Architecture veterans and practicing consultants Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani discuss strategies for choosing an appropriate architecture. By interweaving a story about a fictional group of technology professionals--the Sysops Squad--they examine everything from how to determine service granularity, manage workflows and orchestration, manage and decouple contracts, and manage distributed transactions to how to optimize operational characteristics, such as scalability, elasticity, and performance.
By focusing on commonly asked questions, this book provides techniques to help you discover and weigh the trade-offs as you confront the issues you face as an architect.
- Analyze trade-offs and effectively document your decisions
- Make better decisions regarding service granularity
- Understand the complexities of breaking apart monolithic applications
- Manage and decouple contracts between services
- Handle data in a highly distributed architecture
- Learn patterns to manage workflow and transactions when breaking apart applications
- ISBN-101492086894
- ISBN-13978-1492086895
- Edition1st
- PublisherO'Reilly Media
- Publication dateNovember 30, 2021
- LanguageEnglish
- Dimensions7 x 0.75 x 9.25 inches
- Print length459 pages
Frequently bought together

More items to explore
From the brand
-
-
Sharing the knowledge of experts
O'Reilly's mission is to change the world by sharing the knowledge of innovators. For over 40 years, we've inspired companies and individuals to do new things (and do them better) by providing the skills and understanding that are necessary for success.
Our customers are hungry to build the innovations that propel the world forward. And we help them do just that.
From the Publisher
From the Preface
When two of your authors, Neal and Mark, were writing the book Fundamentals of Software Architecture, we kept coming across complex examples in architecture that we wanted to cover but that were too difficult. Each one offered no easy solutions but rather a collection of messy trade-offs. We set those examples aside into a pile we called “The Hard Parts.” Once that book was finished, we looked at the now gigantic pile of hard parts and tried to figure out: why are these problems so difficult to solve in modern architectures?
We took all the examples and worked through them like architects, applying trade-off analysis for each situation, but also paying attention to the process we used to arrive at the trade-offs. One of our early revelations was the increasing importance of data in architecture decisions: who can/should access data, who can/should write to it, and how to manage the separation of analytical and operational data.
To that end, we asked experts in those fields to join us, which allows this book to fully incorporate decision making from both angles: architecture to data and data to architecture.
The result is this book: a collection of difficult problems in modern software architecture, the trade-offs that make the decisions hard, and ultimately an illustrated guide to show you how to apply the same trade-off analysis to your own unique problems.
|
|
|
|---|---|---|
| Fundamentals of Software Architecture | Building Evolutionary Architectures | |
| Related Titles: | An Engineering Approach | Support Constant Change |
Editorial Reviews
About the Author
Mark Richards is an experienced, hands-on software architect involved in the architecture, design, and implementation of microservices architectures, service-oriented architectures, and distributed systems in a variety of technologies. He has been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. Mark is the founder of DeveloperToArchitect.com, a free website devoted to helping developers in the journey to becoming a software architect. He is the author of numerous technical books and videos, as well as a conference speaker and trainer, having spoken at hundreds of conferences and user groups around the world on a variety of enterprise-related technical topics.
Product details
- Publisher : O'Reilly Media; 1st edition (November 30, 2021)
- Language : English
- Paperback : 459 pages
- ISBN-10 : 1492086894
- ISBN-13 : 978-1492086895
- Item Weight : 1.65 pounds
- Dimensions : 7 x 0.75 x 9.25 inches
- Best Sellers Rank: #33,181 in Books (See Top 100 in Books)
- #3 in Software Design Tools
- #8 in Computer Systems Analysis & Design (Books)
- #10 in Software Testing
- Customer Reviews:
Important information
To report an issue with this product, click here.
About the authors

Neal is Director, Software Architect, and Meme Wrangler at ThoughtWorks, a software company and a community of passionate, purpose-led individuals, who thinks disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. He is an internationally recognized expert on software development and delivery, especially in the intersection of agile engineering techniques and software architecture. Neal has authored magazine articles, eight books (and counting), dozens of video presentations, and spoken at hundreds of developers conferences worldwide. His topics include software architecture, continuous delivery, functional programming, cutting edge software innovations, and includes a business-focused book and video on improving technical presentations

Zhamak Dehghani is a technologist, focusing on distributed systems and data architecture in large and complex environments. She’s a member of multiple technology advisory boards. Zhamak is an advocate for the decentralization of all things, including architecture, data, and ultimately power. She is the founder of data mesh.

Mark Richards is an experienced, hands-on software architect involved in the architecture, design, and implementation of microservices architectures, service-oriented architectures, and distributed systems in a variety of technologies. He has been in the software industry since 1983 and has significant experience and expertise in application, integration, and enterprise architecture. Mark is the founder of DeveloperToArchitect.com, a free website devoted to helping developers in the journey to becoming a software architect. He is the author of numerous technical books and videos as well as a conference speaker and trainer, having spoken at hundreds of conferences and user groups around the world on a variety of enterprise-related technical topics.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonReviews with images
Submit a report
- Harassment, profanity
- Spam, advertisement, promotions
- Given in exchange for cash, discounts
Sorry, there was an error
Please try again later.-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
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.
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.
But w.r.t. the content - typical Java-Enterprise-camp OOP/DDD stuff: too high level to be applicable or useful in real life. It will make you feel smarter for a moment if you have no existing insights, but you'll forget it in a week anyway, and when the time comes to actually building anything, you won't remember anything, and make clueless decisions anyway. And if you do have some clue and experience, you'll easily see that there's nothing really insightful in it.
These books are mostly written to get reputation as a subject expert, which helps score well paid enterprise consulting contracts, not to make you learn anything practically useful. Like most OOP/Java/DDD/enterprise SWE ones. That's why there's so many of them, while the down to earth and dense in information SWE books are so few.
Go read Designing Data-Intensive Applications instead.
Top reviews from other countries
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.
You will read a story about breaking a monolith into distributed services by considering options in each stage of the process and explaining the decisions made. Also, it presents various architecture style and technologies available.
I recommend this book. Also, don't expect to find each topic described and explained in depth (some topics can be mini-books on their own).
This book helps navigate the difficult and treacherous decision making process in a structured manner. For someone who is looking at engineering a modern system or breaking a monolith should definitely read this . This book is a gold mine for you.
For practitioners who are already in the process of figuring out how to break monoliths this book may give you structure to cover your bases and present your arguments. Its a good read for you . Be warned though that the reading speed will increase several fold somewhere 25-30% into the book as you start to encounter concepts you are already dealing with. ACID vs BASE or SYNC vs ASYNC etc.,
Overall a good book and an easy recommend
It won't solve the challenge straight away, yet the learnt analyzing technique and mindset set me on a right path.
In doing so, the authors acknowledge that there is no such thing as “best practice” in how to design a system since every organisation has their own requirements and existing baggage to deal with. Designing a system fit for purpose is unique and hard. The book presents different options how to tackle most common problems and the associated trade-offs (e.g. data consistency vs. responsiveness).
The red line throughout this book is a fictitious company where the IT department needs to re-architect the existing system. Each chapter starts with a discussion (i.e., meeting) of the problems that needs to be tackled. Then, the theoretical aspects are described. At the end of the chapter, the team makes a decision which seem to be appropriate for their specific situations based on trade-off analysis discussed in the theoretical part.
This makes the book a very useful as one gets a pretty comprehensive understanding of various methodologies as well as possible practical applications.


















