Building software is harder than ever. As a developer, you not only have to chase ever-changing technological trends but also need to understand the business domains behind the software. This practical book provides you with a set of core patterns, principles, and practices for analyzing business domains, understanding business strategy, and, most importantly, aligning software design with its business needs.
Author Vlad Khononov shows you how these practices lead to robust implementation of business logic and help to future-proof software design and architecture. You'll examine the relationship between domain-driven design (DDD) and other methodologies to ensure you make architectural decisions that meet business requirements. You'll also explore the real-life story of implementing DDD in a startup company.
With this book, you'll learn how to:
- Analyze a company's business domain to learn how the system you're building fits its competitive strategy
- Use DDD's strategic and tactical tools to architect effective software solutions that address business needs
- Build a shared understanding of the business domains you encounter
- Decompose a system into bounded contexts
- Coordinate the work of multiple teams
- Gradually introduce DDD to brownfield projects
Table of contents
- I. Strategic Design
- 1. Analyzing Business Domains
- 2. Discovering Domain Knowledge
3. Managing Domain Complexity
- Inconsistent Models
- What Is a Bounded Context?
- Bounded Contexts Versus Subdomains
- Bounded Contexts in Real Life
- 4. Integrating Bounded Contexts
- II. Tactical Design
- 5. Implementing Simple Business Logic
- 6. Tackling Complex Business Logic
- 7. Modeling the Dimension of Time
8. Architectural Patterns
- Business Logic Versus Architectural Patterns
- Layered Architecture
- Ports & Adapters
- Command-Query Responsibility Segregation
- 9. Communication Patterns
- III. Applying Domain-Driven Design in Practice
- 10. Design Heuristics
11. Evolving Design Decisions
- Changes in Domains
- Strategic Design Concerns
- Tactical Design Concerns
- Organizational Changes
- Domain Knowledge
- What Is EventStorming?
- Who Should Participate in EventStorming?
- What Do You Need for EventStorming?
- The EventStorming Process
- When to Use EventStorming
- Facilitation Tips
- 13. Domain-Driven Design in the Real World
- IV. Relationships to Other Methodologies and Patterns
- What Is a Service?
- What Is a Microservice?
- Domain-Driven Design and Microservices’ Boundaries
- Compressing Microservices’ Public Interfaces
15. Event-Driven Architecture
- Event-Driven Architecture
- Designing Event-Driven Integration
16. Data Mesh
- Analytical Data Model Versus Transactional Data Model
- Analytical Data Management Platforms
- Data Mesh
- Closing Words
- A. Applying DDD: A Case Study
- B. Answers to Exercise Questions
- Title: Learning Domain-Driven Design
- Release date: October 2021
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781098100131
You might also like
Designing Data-Intensive Applications
Data is at the center of many challenges in system design today. Difficult issues need to …
Learning Test-Driven Development
Your code is a testament to your skills as a developer. No matter what language you …
Head First Design Patterns, 2nd Edition
What will you learn from this book? You know you don't want to reinvent the wheel, …
Domain-Driven Design Distilled, 1/e
Domain-Driven Design (DDD) software modeling delivers powerful results in practice, not just in theory, which is …