Learning Domain-Driven Design

by Vlad Khononov

Software Development

Book Details

Book Title

Learning Domain-Driven Design

Author

Vlad Khononov

Publisher

O'Reilly Media

Publication Date

2021

ISBN

9781098100131

Number of Pages

447

Language

English

Format

PDF

File Size

3.9MB

Subject

Domain-Driven Design;Software Architecture

Table of Contents

  • Foreword
  • Preface
  • Introduction
  • I. Strategic Design
  • Chapter 1. Analyzing Business Domains
  • What Is a Business Domain?
  • What Is a Subdomain?
  • Domain Analysis Examples
  • Who Are the Domain Experts?
  • Conclusion
  • Exercises
  • Chapter 2. Discovering Domain Knowledge
  • Business Problems
  • Knowledge Discovery
  • Communication
  • What Is a Ubiquitous Language?
  • Language of the Business
  • Model of the Business Domain
  • Conclusion
  • Exercises
  • Chapter 3. Managing Domain Complexity
  • Inconsistent Models
  • What Is a Bounded Context?
  • Bounded Contexts Versus Subdomains
  • Boundaries
  • Bounded Contexts in Real Life
  • Conclusion
  • Exercises
  • Chapter 4. Integrating Bounded Contexts
  • Cooperation
  • Customer–Supplier
  • Separate Ways
  • Context Map
  • Conclusion
  • Exercises
  • II. Tactical Design
  • Chapter 5. Implementing Simple Business Logic
  • Transaction Script
  • Active Record
  • Be Pragmatic
  • Conclusion
  • Exercises
  • Chapter 6. Tackling Complex Business Logic
  • History
  • Domain Model
  • Conclusion
  • Exercises
  • Chapter 7. Modeling the Dimension of Time
  • Event Sourcing
  • Event-Sourced Domain Model
  • Frequently Asked Questions
  • Conclusion
  • Exercises
  • Chapter 8. Architectural Patterns
  • Business Logic Versus Architectural Patterns
  • Layered Architecture
  • Ports & Adapters
  • Command-Query Responsibility Segregation
  • Scope
  • Conclusion
  • Exercises
  • Chapter 9. Communication Patterns
  • Model Translation
  • Integrating Aggregates
  • Conclusion
  • Exercises
  • III. Applying Domain-Driven Design in Practice
  • Chapter 10. Design Heuristics
  • Heuristic
  • Bounded Contexts
  • Business Logic Implementation Patterns
  • Architectural Patterns
  • Testing Strategy
  • Tactical Design Decision Tree
  • Conclusion
  • Exercises
  • Chapter 11. Evolving Design Decisions
  • Changes in Domains
  • Strategic Design Concerns
  • Tactical Design Concerns
  • Organizational Changes
  • Domain Knowledge
  • Growth
  • Conclusion
  • Exercises
  • Chapter 12. EventStorming
  • What Is EventStorming?
  • Who Should Participate in EventStorming?
  • What Do You Need for EventStorming?
  • The EventStorming Process
  • Variants
  • When to Use EventStorming
  • Facilitation Tips
  • Conclusion
  • Exercises
  • Chapter 13. Domain-Driven Design in the Real World
  • Strategic Analysis
  • Modernization Strategy
  • Pragmatic Domain-Driven Design
  • Selling Domain-Driven Design
  • Conclusion
  • Exercises
  • IV. Relationships to Other Methodologies and Patterns
  • Chapter 14. Microservices
  • What Is a Service?
  • What Is a Microservice?
  • Domain-Driven Design and Microservices’ Boundaries
  • Compressing Microservices’ Public Interfaces
  • Conclusion
  • Exercises
  • Chapter 15. Event-Driven Architecture
  • Event-Driven Architecture
  • Events
  • Designing Event-Driven Integration
  • Conclusion
  • Exercises
  • Chapter 16. Data Mesh
  • Analytical Data Model Versus Transactional Data Model
  • Analytical Data Management Platforms
  • Data Mesh
  • Conclusion
  • Exercises
  • Closing Words
  • A. Applying DDD: A Case Study
  • B. Answers to Exercise Questions
  • References
  • Index