
A Practical Guide to Domain-Driven Design
Description
Book Introduction
How to implement DDD in the field!
Based on experience in actual projects
We present how to put DDD into practice!
Guides you on how to model and implement domains in real projects.
From core concepts like aggregates and repositories to event-driven architecture and microservices, we provide a practical guide that can be applied immediately in the field.
It provides specific examples of how to apply domain concepts to projects to solve complex business problems, and easily explains the core concepts of DDD with examples and source code.
Additionally, it helped us find practical solutions for each project environment by integrating DDD into various architectures.
A practical guide for developers to design robust software that accurately reflects business requirements and grow to the next level.
Based on experience in actual projects
We present how to put DDD into practice!
Guides you on how to model and implement domains in real projects.
From core concepts like aggregates and repositories to event-driven architecture and microservices, we provide a practical guide that can be applied immediately in the field.
It provides specific examples of how to apply domain concepts to projects to solve complex business problems, and easily explains the core concepts of DDD with examples and source code.
Additionally, it helped us find practical solutions for each project environment by integrating DDD into various architectures.
A practical guide for developers to design robust software that accurately reflects business requirements and grow to the next level.
- You can preview some of the book's contents.
Preview
index
Chapter 1: Introduction to Domain-Driven Design: Understanding Concepts and Design Methods
1.1 What is Domain-Driven Design?: Basic Knowledge for Understanding Design Concepts
____1.1.1 Before entering
____1.1.2 Understanding the concept of domain-driven design
____1.1.3 Leveraging the domain model
____1.1.4 Internalizing domain knowledge
____1.1.5 Using a common language when communicating
____1.1.6 Connecting Models and Implementations
____1.1.7 Application Development and Domain-Driven Design
____1.1.8 Domain-Driven Design and Object-Oriented Programming
____1.1.9 Domain-Driven Design and Agile Software Development
____1.1.10 Summary
1.2 Understanding the Domain Model: A Concept for Accurately Representing Business Knowledge in Software
____1.2.1 Three Uses of the Domain Model
____1.2.2 Comparing Methods of Describing Business Logic
____1.2.3 Modeling Business Activities
____1.2.4 Basic knowledge for creating a domain model
____1.2.5 Components of Model-Driven Design
____1.2.6 Evolving the Domain Model
1.3 Distributed Architecture and Domain-Driven Design: Three Design Patterns for Bridging Models and Implementations
____1.3.1 Strategic Design
____1.3.2 What is a distributed architecture?
____1.3.3 Introducing Domain-Driven Design
____1.3.4 Inter-service integration and domain-driven design
____1.3.5 Focus on core domains
____1.3.6 Summary
1.4 Incorporating Domain-Driven Design into the Development Process: Four Perspectives from Different Fields
____1.4.1 What is an easy development method to apply domain-driven design?
____1.4.2 Four perspectives when introducing it into the development process
____1.4.3 Creating an environment that makes it easy to acquire domain knowledge
____1.4.4 Effectively deriving business rules
____1.4.5 Sharing domain knowledge across teams
____1.4.6 Continuing to apply domain-driven design within real-world constraints
____1.4.7 Application Case ① - Appropriate Team Composition
____1.4.8 Application Case ② - Writing a detailed design document in a programming language
____1.4.9 Application Case ③ - Study on Schedule Management Method
1.5 Domain-Driven Design Pattern Names and Glossary: A Guide to Interpreting Terminology
____1.5.1 Thinking about the meaning of words
____1.5.2 Patterns and Terminology Related to Domain Models
____1.5.3 Patterns and Terminology Related to Strategic Design
____1.5.4 Patterns and Terminology Using Domain Models
Chapter 2: Domain-Driven Design Practice Guide: Developing Applied Skills Before Theory
2.1 Overview of Domain-Driven Design: Revisiting its Original Purpose and Moving Away from Lightweight DDD
____2.1.1 What is Domain-Driven Design?
____2.1.2 Characteristics of Domain-Driven Design
____2.1.3 Understanding the design techniques of domain-driven design
____2.1.4 Lightweight DDD
____2.1.5 Focus on original domain-driven design
____2.1.6 Basic Design Techniques
____2.1.7 Core Design Techniques
____2.1.8 Design techniques that link the whole
____2.1.9 Summary
2.2 Ubiquitous Language: Understanding its Definition and Effects and Putting It into Practice in Your Team
____2.2.1 Before entering
____2.2.2 What is a ubiquitous language?
____2.2.3 Implementing the introduction of ubiquitous language
____2.2.4 Creating a Ubiquitous Language
____2.2.5 Promoting the Benefits of Ubiquitous Language
____2.2.6 Decide on a ubiquitous language with your team members
____2.2.7 Typifying the establishment of a ubiquitous language
____2.2.8 Finally
2.3 Event Storming: Interpreting the Domain to Create a Model
____2.3.1 Modeling through Event Storming
____2.3.2 The Big Picture
____2.3.3 Business Process Modeling
____2.3.4 Software System Modeling
____2.3.5 Feedback Loop
____2.3.6 Summary
2.4 Event Sourcing: Implementing Based on Event Storming Diagrams
____2.4.1 Event Storming Diagram Example
____2.4.2 Implementation that does not assume events
____2.4.3 Event-driven implementation
____2.4.4 Implementation via Event Sourcing
____2.4.5 Event Storming and Event Sourcing
____2.4.6 Infrastructure Configuration
____2.4.7 Summary
Chapter 3: What is Clean Architecture?: Understanding the Core Design Principles for Development
3.1 Clean Architecture Terminology: Understanding the Meaning of Terms in Blogs, Books, and Historical Context
____3.1.1 What is Clean Architecture?
____3.1.2 Architecture and Software Design
____3.1.3 Domain-Driven Design and Clean Architecture
3.2 Approaching the essence of clean architecture: separation of concerns, concentric circles, and the core of the SOLID principles.
____3.2.1 Separation of Concerns
____3.2.2 A typical example of clean architecture
____3.2.3 Understanding the Key Points of the SOLID Principles
____3.2.4 Ensuring testability
____3.2.5 Architecture Design Case
____3.2.6 Conclusion
3.3 Understanding with Source Code: Deriving the Core of Clean Architecture from Typical Scenarios
____3.3.1 Typical Scenario 189
____3.3.2 Change Leading to Action 200
____3.3.3 Summary 204
3.4 Understanding through Applications: Experiencing Strong Coupling → Loose Coupling → Clean Architecture 205
____3.4.1 Before entering
____3.4.2 Application Examples
____3.4.3 Structure and Challenges of Strongly Coupled Applications
____3.4.4 The Challenge of Strong Coupling
____3.4.5 Loose Coupling and Refactoring
____3.4.6 Challenges of the B-Clean Architecture
____3.4.7 Refactoring toward Clean Architecture
____3.4.8 Unstable and Stable Clean Architectures
____3.4.9 Summary
3.5 Practical Mobile App Development: Thinking Practical Based on the App Architecture Guide
____3.5.1 Before entering
____3.5.2 App Architecture Guide
____3.5.3 MVVM Architecture
____3.5.4 Modularization
____3.5.5 Clean Architecture in Android Apps
____3.5.6 Summary
1.1 What is Domain-Driven Design?: Basic Knowledge for Understanding Design Concepts
____1.1.1 Before entering
____1.1.2 Understanding the concept of domain-driven design
____1.1.3 Leveraging the domain model
____1.1.4 Internalizing domain knowledge
____1.1.5 Using a common language when communicating
____1.1.6 Connecting Models and Implementations
____1.1.7 Application Development and Domain-Driven Design
____1.1.8 Domain-Driven Design and Object-Oriented Programming
____1.1.9 Domain-Driven Design and Agile Software Development
____1.1.10 Summary
1.2 Understanding the Domain Model: A Concept for Accurately Representing Business Knowledge in Software
____1.2.1 Three Uses of the Domain Model
____1.2.2 Comparing Methods of Describing Business Logic
____1.2.3 Modeling Business Activities
____1.2.4 Basic knowledge for creating a domain model
____1.2.5 Components of Model-Driven Design
____1.2.6 Evolving the Domain Model
1.3 Distributed Architecture and Domain-Driven Design: Three Design Patterns for Bridging Models and Implementations
____1.3.1 Strategic Design
____1.3.2 What is a distributed architecture?
____1.3.3 Introducing Domain-Driven Design
____1.3.4 Inter-service integration and domain-driven design
____1.3.5 Focus on core domains
____1.3.6 Summary
1.4 Incorporating Domain-Driven Design into the Development Process: Four Perspectives from Different Fields
____1.4.1 What is an easy development method to apply domain-driven design?
____1.4.2 Four perspectives when introducing it into the development process
____1.4.3 Creating an environment that makes it easy to acquire domain knowledge
____1.4.4 Effectively deriving business rules
____1.4.5 Sharing domain knowledge across teams
____1.4.6 Continuing to apply domain-driven design within real-world constraints
____1.4.7 Application Case ① - Appropriate Team Composition
____1.4.8 Application Case ② - Writing a detailed design document in a programming language
____1.4.9 Application Case ③ - Study on Schedule Management Method
1.5 Domain-Driven Design Pattern Names and Glossary: A Guide to Interpreting Terminology
____1.5.1 Thinking about the meaning of words
____1.5.2 Patterns and Terminology Related to Domain Models
____1.5.3 Patterns and Terminology Related to Strategic Design
____1.5.4 Patterns and Terminology Using Domain Models
Chapter 2: Domain-Driven Design Practice Guide: Developing Applied Skills Before Theory
2.1 Overview of Domain-Driven Design: Revisiting its Original Purpose and Moving Away from Lightweight DDD
____2.1.1 What is Domain-Driven Design?
____2.1.2 Characteristics of Domain-Driven Design
____2.1.3 Understanding the design techniques of domain-driven design
____2.1.4 Lightweight DDD
____2.1.5 Focus on original domain-driven design
____2.1.6 Basic Design Techniques
____2.1.7 Core Design Techniques
____2.1.8 Design techniques that link the whole
____2.1.9 Summary
2.2 Ubiquitous Language: Understanding its Definition and Effects and Putting It into Practice in Your Team
____2.2.1 Before entering
____2.2.2 What is a ubiquitous language?
____2.2.3 Implementing the introduction of ubiquitous language
____2.2.4 Creating a Ubiquitous Language
____2.2.5 Promoting the Benefits of Ubiquitous Language
____2.2.6 Decide on a ubiquitous language with your team members
____2.2.7 Typifying the establishment of a ubiquitous language
____2.2.8 Finally
2.3 Event Storming: Interpreting the Domain to Create a Model
____2.3.1 Modeling through Event Storming
____2.3.2 The Big Picture
____2.3.3 Business Process Modeling
____2.3.4 Software System Modeling
____2.3.5 Feedback Loop
____2.3.6 Summary
2.4 Event Sourcing: Implementing Based on Event Storming Diagrams
____2.4.1 Event Storming Diagram Example
____2.4.2 Implementation that does not assume events
____2.4.3 Event-driven implementation
____2.4.4 Implementation via Event Sourcing
____2.4.5 Event Storming and Event Sourcing
____2.4.6 Infrastructure Configuration
____2.4.7 Summary
Chapter 3: What is Clean Architecture?: Understanding the Core Design Principles for Development
3.1 Clean Architecture Terminology: Understanding the Meaning of Terms in Blogs, Books, and Historical Context
____3.1.1 What is Clean Architecture?
____3.1.2 Architecture and Software Design
____3.1.3 Domain-Driven Design and Clean Architecture
3.2 Approaching the essence of clean architecture: separation of concerns, concentric circles, and the core of the SOLID principles.
____3.2.1 Separation of Concerns
____3.2.2 A typical example of clean architecture
____3.2.3 Understanding the Key Points of the SOLID Principles
____3.2.4 Ensuring testability
____3.2.5 Architecture Design Case
____3.2.6 Conclusion
3.3 Understanding with Source Code: Deriving the Core of Clean Architecture from Typical Scenarios
____3.3.1 Typical Scenario 189
____3.3.2 Change Leading to Action 200
____3.3.3 Summary 204
3.4 Understanding through Applications: Experiencing Strong Coupling → Loose Coupling → Clean Architecture 205
____3.4.1 Before entering
____3.4.2 Application Examples
____3.4.3 Structure and Challenges of Strongly Coupled Applications
____3.4.4 The Challenge of Strong Coupling
____3.4.5 Loose Coupling and Refactoring
____3.4.6 Challenges of the B-Clean Architecture
____3.4.7 Refactoring toward Clean Architecture
____3.4.8 Unstable and Stable Clean Architectures
____3.4.9 Summary
3.5 Practical Mobile App Development: Thinking Practical Based on the App Architecture Guide
____3.5.1 Before entering
____3.5.2 App Architecture Guide
____3.5.3 MVVM Architecture
____3.5.4 Modularization
____3.5.5 Clean Architecture in Android Apps
____3.5.6 Summary
Detailed image

Into the book
Compared to the pace of change in IT technology, an organization's development methodologies and culture often change relatively slowly.
These gaps often lead to inefficient development and conflicts between numerous stakeholders.
Having worked on development projects large and small over the past 20 years, I've always wondered how to ensure the organizations involved in a project are aligned and collaborate effectively.
Domain-driven design provides a direction in that regard.
Rather than simply relying on technical innovations or tools, it provides thoughtful insights into how developers and practitioners can collaborate and grow together.
In particular, the book's content, which summarizes the author's thoughts and insights from extensive practical experience in the form of examples, serves as a bridge between theory and practice, allowing readers to naturally acquire practical strategies.
Although the concept of domain-driven design has been around for quite some time, many companies and organizations still hesitate to adopt it or struggle to apply it due to its complex concepts and the gap between practical application and practice.
This book goes beyond simply introducing concepts and tools for domain-driven design. It also presents better principles and practical directions for conducting efficient development projects in the ever-changing IT development environment.
I believe this will be a valuable guide not only for those familiar with methodologies like Agile and DevOps, but also for those new to domain-driven design.
These gaps often lead to inefficient development and conflicts between numerous stakeholders.
Having worked on development projects large and small over the past 20 years, I've always wondered how to ensure the organizations involved in a project are aligned and collaborate effectively.
Domain-driven design provides a direction in that regard.
Rather than simply relying on technical innovations or tools, it provides thoughtful insights into how developers and practitioners can collaborate and grow together.
In particular, the book's content, which summarizes the author's thoughts and insights from extensive practical experience in the form of examples, serves as a bridge between theory and practice, allowing readers to naturally acquire practical strategies.
Although the concept of domain-driven design has been around for quite some time, many companies and organizations still hesitate to adopt it or struggle to apply it due to its complex concepts and the gap between practical application and practice.
This book goes beyond simply introducing concepts and tools for domain-driven design. It also presents better principles and practical directions for conducting efficient development projects in the ever-changing IT development environment.
I believe this will be a valuable guide not only for those familiar with methodologies like Agile and DevOps, but also for those new to domain-driven design.
--- From the Translator's Note
Publisher's Review
Less theory, more experience!
Learn domain-driven design through vivid project examples!
How can domain-driven design be applied in practice? This book is an introductory guide designed to help developers understand and utilize domain-driven design, focusing on real-world situations they encounter in the workplace.
Rather than simply explaining the theory, it guides you through specific examples and code, based on experience from actual projects, on how to create a domain model and how to collaborate between teams.
As you follow the process of transitioning from a functional-centric development approach to a domain-centric approach, you will naturally learn the core concepts of DDD.
This article outlines the step-by-step process of introducing DDD within an organization and applying it to actual systems.
It consists of a practical guide that developers can refer to from the beginning to the end of a project, including collaboration methods with domain experts, context mapping strategies, and code refactoring points.
It explains how to use it in various development environments without being tied to a specific technology.
This is a must-read for readers looking for a practical, practical guide to DDD that can be applied directly to practice, not just theory.
[Beta Reader Review]
In an increasingly complex service environment, we cover design principles for developing based on a clear understanding of processes and rules for each business domain.
In addition, it describes an approach that simplifies and streamlines the perspectives needed to more easily develop and modify services based on changing business policies.
In particular, the purpose and utilization of the domain model covered in the book, as well as the design, hierarchy, and architecture, are explained through source code with actual examples to help understanding.
Based on the contents of this book, it will help you understand the domain model by applying it to your work, and through this, you will be able to separate and isolate the domain logic for each business unit, thereby increasing effective development productivity.
Choi In-joo_SSG.com
The key to domain-driven design is to deeply understand "what to design and why to design it" rather than "how to implement it."
When developing software, we have to make the most important decisions at the most opaque and unknown times.
Therefore, it is important to understand the domain more thoroughly than the code, design it around business logic, and enable incremental improvements.
This book provides a clear understanding of domain-focused thinking and design strategies, clearly informing us where to focus and what criteria to use for judgment in complex business environments.
In particular, it emphasizes ubiquitous language-based collaboration with stakeholders and domain-centric problem-solving, and presents concrete methods for developing realistic designs with teams in the field.
I hope that through this book, many people will empathize with the core values of domain-driven design and gain an easier introduction.
Lee Yoon-seon, backend developer
The practical examples and real-world experiences were well-integrated, making it easier to understand the core concepts of domain-driven design. The specific explanations of DDD theory, tailored to real-world situations, motivated me to apply them immediately.
Jang Seong-il_DONGKUK SYSTEMS
This book provides a clear overview of the core concepts needed to understand and apply domain-driven design.
Beyond a simple explanation, it persuasively explains why DDD is necessary and how to approach it, using various examples.
I was also impressed by the way it presented methods and directions for introducing DDD even within realistic constraints.
Seo Jae-wan, Front-end Developer
The concrete examples and clear explanations made domain-driven design easy to understand.
We expect that the various example codes and process flows will be naturally connected, making it helpful to readers of various experience levels.
Overall, it is a good book that I would like to recommend to developers working in the field, as it is full of rich content.
Lee Ki-ha, OPDC Strategy Team Leader
There are many books about DDD.
But no book has ever explained domains so easily, concisely, and clearly.
If Eric Evans's "Domain-Driven Design" is abstract, this book is concrete and clear.
Above all, it explains the core points concisely and easily.
If you find domain-driven design vague or difficult, this book will change your mind.
This book will help you 'properly' learn the core of domain-driven design.
Kim Dong-woo, Startup Backend Development and PM
Learn domain-driven design through vivid project examples!
How can domain-driven design be applied in practice? This book is an introductory guide designed to help developers understand and utilize domain-driven design, focusing on real-world situations they encounter in the workplace.
Rather than simply explaining the theory, it guides you through specific examples and code, based on experience from actual projects, on how to create a domain model and how to collaborate between teams.
As you follow the process of transitioning from a functional-centric development approach to a domain-centric approach, you will naturally learn the core concepts of DDD.
This article outlines the step-by-step process of introducing DDD within an organization and applying it to actual systems.
It consists of a practical guide that developers can refer to from the beginning to the end of a project, including collaboration methods with domain experts, context mapping strategies, and code refactoring points.
It explains how to use it in various development environments without being tied to a specific technology.
This is a must-read for readers looking for a practical, practical guide to DDD that can be applied directly to practice, not just theory.
[Beta Reader Review]
In an increasingly complex service environment, we cover design principles for developing based on a clear understanding of processes and rules for each business domain.
In addition, it describes an approach that simplifies and streamlines the perspectives needed to more easily develop and modify services based on changing business policies.
In particular, the purpose and utilization of the domain model covered in the book, as well as the design, hierarchy, and architecture, are explained through source code with actual examples to help understanding.
Based on the contents of this book, it will help you understand the domain model by applying it to your work, and through this, you will be able to separate and isolate the domain logic for each business unit, thereby increasing effective development productivity.
Choi In-joo_SSG.com
The key to domain-driven design is to deeply understand "what to design and why to design it" rather than "how to implement it."
When developing software, we have to make the most important decisions at the most opaque and unknown times.
Therefore, it is important to understand the domain more thoroughly than the code, design it around business logic, and enable incremental improvements.
This book provides a clear understanding of domain-focused thinking and design strategies, clearly informing us where to focus and what criteria to use for judgment in complex business environments.
In particular, it emphasizes ubiquitous language-based collaboration with stakeholders and domain-centric problem-solving, and presents concrete methods for developing realistic designs with teams in the field.
I hope that through this book, many people will empathize with the core values of domain-driven design and gain an easier introduction.
Lee Yoon-seon, backend developer
The practical examples and real-world experiences were well-integrated, making it easier to understand the core concepts of domain-driven design. The specific explanations of DDD theory, tailored to real-world situations, motivated me to apply them immediately.
Jang Seong-il_DONGKUK SYSTEMS
This book provides a clear overview of the core concepts needed to understand and apply domain-driven design.
Beyond a simple explanation, it persuasively explains why DDD is necessary and how to approach it, using various examples.
I was also impressed by the way it presented methods and directions for introducing DDD even within realistic constraints.
Seo Jae-wan, Front-end Developer
The concrete examples and clear explanations made domain-driven design easy to understand.
We expect that the various example codes and process flows will be naturally connected, making it helpful to readers of various experience levels.
Overall, it is a good book that I would like to recommend to developers working in the field, as it is full of rich content.
Lee Ki-ha, OPDC Strategy Team Leader
There are many books about DDD.
But no book has ever explained domains so easily, concisely, and clearly.
If Eric Evans's "Domain-Driven Design" is abstract, this book is concrete and clear.
Above all, it explains the core points concisely and easily.
If you find domain-driven design vague or difficult, this book will change your mind.
This book will help you 'properly' learn the core of domain-driven design.
Kim Dong-woo, Startup Backend Development and PM
GOODS SPECIFICS
- Date of issue: August 22, 2025
- Page count, weight, size: 240 pages | 460g | 183*235*15mm
- ISBN13: 9791140715534
You may also like
카테고리
korean
korean