Foreword xiii
Preface xvii
Acknowledgments xxv
About the Authors xxxiPart I: Transformational Strategic Learning through Experimentation 1Executive Summary 3
Chapter 1: Business Goals and Digital Transformation 7Digital Transformation: What Is the Goal? 8
Why Software Goes Wrong 11
Your Enterprise and Conway's Law 18
(Re)Thinking Software Strategy 24
Are Monoliths Bad? 30
Are Microservices Good? 31
Don't Blame Agile 34
Getting Unstuck 36
Summary 37
References 38
Chapter 2: Essential Strategic Learning Tools 39Making Decisions Early and Late, Right and Wrong 40
Culture and Teams 43
Modules First 51
Deployment Last 55
Everything in Between 57
Where Is Your Spaghetti and How Fast Does It Cook? 70
Strategic Architecture 70
Applying the Tools 72
Summary 75
References 75
Chapter 3: Events-First Experimentation and Discovery 77Commands and Events 78
Rapid Learning with EventStorming 81
Applying the Tools 92
Summary 99
References 100
Part II: Driving Business Innovation 101Executive Summary 103
Chapter 4: Reaching Domain-Driven Results 109Domains and Subdomains 111
Summary 115
References 116
Chapter 5: Contextual Expertise 117Bounded Context and Ubiquitous Language 117
Core Domain 121
Supporting Subdomains, Generic Subdomains, and Technical Mechanisms 123
Business Capabilities and Contexts 125
Not Too Big, Not Too Small 128
Summary 129
References 130
Chapter 6: Mapping, Failing, and Succeeding--Choose Two 131Context Mapping 131
Topography Modeling 151
Ways to Fail and Succeed 154
Applying the Tools 158
Summary 163
References 164
Chapter 7: Modeling Domain Concepts 165Entities 166
Value Objects 167
Aggregates 168
Domain Services 169
Functional Behavior 170
Applying the Tools 173
Summary 173
References 174
Part III: Events-First Architecture 175Executive Summary 177
Chapter 8: Foundation Architecture 181Architectural Styles, Patterns, and Decision Drivers 183
Quality Attributes 196
Applying the Tools 206
Summary 207
References 208
Chapter 9: Message- and Event-Driven Architectures 211Message- and Event-Based REST 216
Event-Driven and Process Management 220
Event Sourcing 223
CQRS 227
Serverless and Function as a Service 229
Applying the Tools 231
Summary 231
References 232
Part IV: The Two Paths for Purposeful Architecture 233
Executive Summary 235
Chapter 10: Building Monoliths Like You Mean It 239Historical Perspective 241
Right from the Start 244
Right from Wrong 253
Keeping It Right 264
Summary 265
References 266
Chapter 11: Monolith to Microservices Like a Boss 267Mental Preparation with Resolve 267
Modular Monolith to Microservices 271
Big Ball of Mud Monolith to Microservices 275
Unplugging the Legacy Monolith 286
Summary 287
References 288
Chapter 12: Require Balance, Demand Strategy 289Balance and Quality Attributes 289
Strategy and Purpose 291
Conclusion 297
References 298
Index 299