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
Clean Code: A Handbook of Agile Software Craftsmanship
Even bad code can function. But if code isn't clean, it can bring a development organization …
40 Algorithms Every Programmer Should Know
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental …
Dominated by streaming data and events, the next generation of software development optimizes not only how …
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition
Through a series of recent breakthroughs, deep learning has boosted the entire field of machine learning. …