Course of Domain-Driven Design: DDD Applied

Javier FerrerRafa Gómez

By Javier Ferrer y Rafa Gómez Software Design and Architecture

Learn to model your applications focusing on your domain, define Bounded Contexts, aggregates, value objects, and much more. All in a practical way with code examples.

💸 First lesson available without registration!

In the Event-Driven Architecture course we analyze how the different services of our company communicate, but… How do we model the services and applications of our company?

If we want to model a complex system, we need to complement principles and techniques like the SOLID principles or Hexagonal Architecture with a strategic part. This is where Domain-Driven Design (DDD) comes in.

DDD acts as an umbrella grouping a whole series of concepts at a technical and strategic level to promote:

  • Collaboration between business or product and the technical team to model in code the specific problems of a certain domain (Bounded Contexts, Ubiquitous Language, Aggregates, Value Objects, Domain Events, Entities, Repositories…)
  • Focusing our application on the domain. Maintaining a high tolerance for change and evolution of systems over time
  • High testability of our business logic by decoupling from the infrastructure
  • Facilitating collaboration between different development teams

What we will see in this course:

  • How to define Bounded Contexts and Modules
  • Differences between Bounded Contexts, Subdomains, Modules, and Shared Kernel
  • Folder structure in a monorepository with multiple applications and Bounded Contexts
  • Implementation examples of monorepo in PHP, Java, and Scala
  • Hexagonal Architecture
  • Value Objects: Modeling our domain
  • What is an aggregate and what is it for
  • Aggregate root vs Entity
  • Repository Pattern
  • Role interfaces vs Header interfaces
  • Communication between Modules and Bounded Contexts
  • Migrating from legacy systems thanks to the Anti-Corruption Layer
  • Domain Events
  • Shared Kernel: What do we share between Bounded Contexts
  • CQRS in DDD
  • Read Model: Optimizing for read
  • Promoting a Module to Bounded Context
  • Ubiquitous Language: How to bring everyday jargon into code

This course is agnostic to programming language; however, to avoid it being pure theory, we will see implementation examples in PHP, Java, and Scala.

This course complements the courses on SOLID, Hexagonal Architecture, CQRS, Communication between [micro]services with Event-Driven Architecture, and CQRS and Event-Sourcing.

Therefore, we recommend that you first take the ones that interest you the most to have those concepts clear, and then delve into the more strategic concepts with this DDD course. For only €30, you have access to all courses!

Here is the first video of the course so you can get an idea of the quality of the content 😬

Videos of the course

Related courses

See full catalogue

Pay according to your needs

lite (only monthly)

19 €
per month
  • Access to a subset of courses to lay the foundation for maintainable, scalable, and testable code
  • Company invoice
Popular

standard

24,92 €
Save 121
Annual payment of 299
per month
  • Full course catalog
  • Design and architecture challenges
  • Highlighted solutions videos for challenges
  • Receive job offers verified by Codely
  • Company invoice

premium

41,58 €
Save 89
Annual payment of 499
per month
  • Everything above
  • More benefits coming soon

We won’t increase the price while your subscription is active