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 software architecture

Hear from Neal Ford and Mark Richards, co-authors of the book as they share their thoughts with Rebecca Parsons on what prompted them to write yet another book talking about architecture, and why did they scope it to the hard parts.

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

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

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 

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

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