DjangoCon 2022 | A use case of implementing Domain-Driven Design (DDD) in Django

Implement Domain-Driven Design in Django by modeling the business domain, reducing coupling, and increasing testability, and discover how it improves software quality and facilitates communication between business and technical teams.

Key takeaways
  • DDD is a design approach that focuses on modeling software to match the domain, matching business needs
  • Business and technical people must communicate in the same language
  • DDD improves the quality of code by reducing coupling and increasing testability
  • It’s not about modeling the entire software, but about modeling the business domain
  • DDD is a large-scale architecture, not a micro-architecture
  • Bounded context, a key concept in DDD, means separating concerns into small parts
  • GDD (German-driven design) is not about German or language, but about using a German sausage analogy to explain the concept
  • GDD helps to understand that the business domain is not just a technical concept, but a business reality
  • Use cases, a concept in DDD, are actions or behaviors that a user or API would do
  • Repository and presenter are two major components in DDD; repository is used for data access and presenter is used for business logic
  • Command and query separated (CQS) is a pattern that separates commands and queries in DDD
  • Shared kernel is a common pattern in DDD, where data is shared among different parts of the system
  • Ubiquitous language is a key concept in DDD, where everyone uses the same language to communicate
  • GDD is not for all projects, but for those that require a long-term approach to software development