Enable javascript in your browser for better experience. Need to know to enable it? Go here.
Hero Banner
Hero Banner

Software Architecture: The Hard Parts

Software Architecture: The Hard Parts

Neal Ford, Mark Richards, Pramod Sadalage and Zhamak Dehghani

All software architecture involves trade offs. But traditional analysis tools don’t work well for today’s distributed systems.

This book provides techniques to help you discover and weigh the trade-offs as you confront the issues you face as an architect. It investigates why architecture is so difficult and provides proven mechanisms to address these complex problems and make them understandable. Co-authors Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani 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.

This book is not just for software architects — data architects, DBAs, product managers and others will glean valuable insights into some of the complex issues architects face every day.

Architecture is full of hard parts; by tracing the common reasons and applying lessons more universally, we can make it softer.

[Podcast] The hard parts of data architecture

Podcast host Rebecca Parsons | Podcast guest Zhamak Dehghani and Pramod Sadalage
December 02, 2021 | 40m

Listen on these platforms

Brief summary

Following on from our earlier episode on the Software Architecture: the hard parts, we’re joined by the other two co-authors of that book to explore issues around data architecture and how that fits into these broader concepts of architecture. We discuss how it is that what looks like a software decision is frequently influenced by data.

[Podcast] The hard parts of software architecture

Podcast host Rebecca Parsons | Podcast guest Neal Ford and Mark Richards
October 07, 2021 | 37 min 39 sec

Brief summary

In today’s modern distributed systems are by their very nature complex. The decisions you need to make — around the wiring of your services, what size should the services be, and how should they call one another — are uniquely complex. In Software Architecture: the hard parts, the authors explore the rough edges of software architecture and look at how you can effectively do trade analyses that work for you. We catch up with two of the book’s co-authors.

Read a free chapter


One of the difficult problems in modern architectures such as microservice is deciding what size to make the services — in other words, what is the appropriate granularity of services? Make your services too ‘micro’ and you risk creating a host of problems: communication overhead, transactional behavior, coordination and the like. Build your services too large, and you’ll miss out on many of microservices’ benefits. 

This chapter suggests guidelines for teams that enable them to iterate towards the appropriate level of service granularity for their set of trade-offs. In so doing, it illustrates the types of trade offs that are common in those hard architectural decisions.

What readers say

Software Architecture: The Hard Parts provides the reader with valuable insight, practices, and real-world examples on pulling apart highly coupled systems and building them back up again. By gaining effective trade-off analysis skills, you will start to make better architecture decisions.
Joost van Wenen
Managing Partner & Cofounder, Infuze Consulting
Access the entire book via O'Reilly's online learning platform

Register on O’Reilly's online learning platform and get a 30-day free trial to the entire book.


Neal Ford
Neal Ford

Director, Software Architect and Meme Wrangler at Thoughtworks

He is also the designer and developer of applications, articles, video presentations, and author and/or editor of an increasingly large number of books spanning a variety of subjects and technologies, that includes two most recent Fundamentals of Software Architecture and Building Evolutionary Architectures. His professional focus includes designing and building of large-scale enterprise applications. He is also an internationally known speaker, speaking at over 700 developer conferences worldwide, delivering more than 3000 presentations.

Mark Richards
Mark Richards

Software Architect and Published Author

Mark is a hands-on software architect with over 30 years experience in the industry, with more than 20 of those years having played the role of an application architect, integration architect, and enterprise architect. He has experience creating and delivering microservices architectures, service-based architectures, and service-oriented architectures. He's a published author, conference speaker, trainer, and founder of DeveloperToArchitect.com. 

Pramod J. Sadalage
Pramod J. Sadalage

Director at Thoughtworks

Pramod enjoys the rare role of bridging the divide between database professionals and application developers. He works with clients with particularly challenging data needs, which require new technologies and techniques. He is a contributing author for Building Evolutionary Architectures - Support Constant Change, co-author of Refactoring Databases, co-author of NoSQL Distilled, author of Recipes for Continuous Database Integration and continues to speak and write about the insights he garners.

Zhamak Dehghani
Zhamak Dehghani

Technical Director of Emerging Technologies in North America

Zhamak works with Thoughtworks as the technical director of emerging technologies in North America, with a focus on distributed systems and data architecture, and decentralized platform strategies. She is a member of the Thoughtworks Technology Advisory Board and contributes to the creation of the Thoughtworks Technology Radar.

Explore the latest volume of the Technology Radar