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