Make Architecture Choices That Free You to Maximize Value and Innovation

"The heart of this book is a large set of thinking tools that will help you design a new architecture . . . and the organization needed to support that architecture. The book then offers ways to gradually move from your existing architecture toward the new one. . . . There is no formula for success other than the one offered [here]: highly skilled people, deep thinking, and constant experimentation."

--From the Foreword by Mary Poppendieck, coauthor, Lean Software Development

Strategic Microservices and Monoliths helps business decision-makers and technical team members collaborate to clearly understand their strategic problems and identify their optimal architectural approaches, whether these prove to be distributed microservices, well-modularized monoliths, or coarser-grade services partway between the two.

Leading software architecture experts Vaughn Vernon and Tomasz Jaskua show how to make balanced architecture decisions based on need and purpose, not hype so you can promote value and innovation, deliver more evolvable systems, and avoid costly mistakes. Using realistic examples, they show how to construct well-designed monoliths that are maintainable and extensible, and how to gradually tease out even the most tangled legacy systems into truly effective microservices.

  • Link software architecture planning to business innovation and digital transformation

  • Overcome communication problems to promote experimentation and discovery-based innovation

  • Master practices that support your value-generating goals and help you invest more strategically

  • Compare architectural styles that can lead to versatile, adaptable applications and services

  • Recognize when monoliths are your best option and how best to architect, design, and implement them

  • Learn when to move monoliths to microservices and how to do it, whether they're modularized or a "Big Ball of Mud"

Table of Contents

  1. Cover Page
  2. Title Page
  3. Contents
  4. Table of Contents
  5. Foreword
  6. Preface
  7. Acknowledgments
  8. About the Authors
  9. Part I: Transformational Strategic Learning through Experimentation
    1. Executive Summary
    2. 1. Business Goals and Digital Transformation
    3. Digital Transformation: What Is the Goal?
    4. Why Software Goes Wrong
    5. Your Enterprise and Conway’s Law
    6. (Re)Thinking Software Strategy
    7. Are Monoliths Bad?
    8. Are Microservices Good?
    9. Don’t Blame Agile
    10. Getting Unstuck
    11. Summary
    12. References
    13. 2. Essential Strategic Learning Tools
    14. Making Decisions Early and Late, Right and Wrong
    15. Culture and Teams
    16. Modules First
    17. Deployment Last
    18. Everything in Between
    19. Where Is Your Spaghetti and How Fast Does It Cook?
    20. Strategic Architecture
    21. Applying the Tools
    22. Summary
    23. References
    24. 3. Events-First Experimentation and Discovery
    25. Commands and Events
    26. Rapid Learning with EventStorming
    27. Applying the Tools
    28. Summary
    29. References
  10. Part II: Driving Business Innovation
    1. Executive Summary
    2. 4. Reaching Domain-Driven Results
    3. Domains and Subdomains
    4. Summary
    5. References
    6. 5. Contextual Expertise
    7. Bounded Context and Ubiquitous Language
    8. Core Domain
    9. Supporting Subdomains, Generic Subdomains, and Technical Mechanisms
    10. Business Capabilities and Contexts
    11. Not Too Big, Not Too Small
    12. Summary
    13. References
    14. 6. Mapping, Failing, and Succeeding—Choose Two
    15. Context Mapping
    16. Topography Modeling
    17. Ways to Fail and Succeed
    18. Applying the Tools
    19. Summary
    20. References
    21. 7. Modeling Domain Concepts
    22. Entities
    23. Value Objects
    24. Aggregates
    25. Domain Services
    26. Functional Behavior
    27. Applying the Tools
    28. Summary
    29. References
  11. Part III: Events-First Architecture
    1. Executive Summary
    2. 8. Foundation Architecture
    3. Architectural Styles, Patterns, and Decision Drivers
    4. Non-Functional Requirements
    5. Applying the Tools
    6. Summary
    7. References
    8. 9. Message- and Event-Driven Architectures
    9. Message- and Event-Based REST
    10. Event-Driven and Process Management
    11. Event Sourcing
    12. CQRS
    13. Serverless and Function as a Service
    14. Applying the Tools
    15. Summary
    16. References
  12. Part IV: The Two Paths for Purposeful Architecture
    1. Executive Summary
    2. 10. Building Monoliths Like You Mean It
    3. Historical Perspective
    4. Right from the Start
    5. Right from Wrong
    6. Keeping It Right
    7. Summary
    8. References
    9. 11. Monolith to Microservices Like a Boss
    10. Mental Preparation with Resolve
    11. Modular Monolith to Microservices
    12. Big Ball of Mud Monolith to Microservices
    13. Unplugging the Legacy Monolith
    14. Summary
    15. References
    16. 12. Require Balance, Demand Strategy
    17. Balance and Non-functional Requirements
    18. Strategy and Purpose
    19. Conclusion
    20. References