Focus

Domain-driven Design

Domain-driven design aligns the structure of software with an organization's business boundaries, using bounded contexts and a shared language between business and engineering.

Domain-Driven Design: From Business Domain to Software Architecture

Domain-driven design (DDD) is an approach to structuring complex software systems around business boundaries. Its core concepts include bounded contexts as clearly defined model boundaries, a ubiquitous language shared between business and engineering, and the distinction between strategic and tactical design.

In practice, DDD is often used to break large systems into independently developed building blocks such as microservices, organized around bounded contexts rather than purely technical layers. Our training Domain-driven Design in Practice goes deeper into applying this approach in your own projects.

This page brings together articles, podcasts, talks, and primers on domain-driven design.

Our Services

We advise honestly, think innovatively and love to build. The result: successful software solutions, infrastructures and business models.

Primers

Frequently Asked Questions

Do you have questions about Domain-driven Design? Here you will find answers to questions we are frequently asked.

When is Domain-driven Design a good fit?

Domain-driven Design is particularly useful for systems with complex business logic, multiple teams, or domains where terminology and rules are not clearly defined. DDD helps developers and domain experts build a shared understanding of the business and translate that understanding into the structure of the software. For straightforward CRUD applications or systems with little domain complexity, the additional modelling effort is often unnecessary. INNOQ uses DDD in architecture and development projects where domain complexity has a significant impact on system design: [Software Architecture and Development](https://www.innoq.com/en/services/softwarearchitektur-entwicklung/)

What is a bounded context, and how do I set the right boundaries?

A bounded context defines an area in which a particular domain model and its terminology have a clear and consistent meaning. Good boundaries are not determined by technical concerns such as databases or services alone. They emerge from business responsibilities, processes, and differences in how concepts are understood. Techniques such as EventStorming and Domain Storytelling can help teams make those boundaries visible and validate them collaboratively.

Our iSAQB® training course Domain-driven Design in Practice covers several approaches for identifying subdomains and designing bounded contexts systematically.

How are Domain-driven Design and microservices related?

DDD and microservices are separate concepts. DDD helps teams identify meaningful domain boundaries and models, while microservices are one possible technical way of implementing those boundaries. A bounded context therefore does not automatically have to map to a single microservice.

Strategic DDD can be particularly useful before splitting a system into microservices because it helps teams understand domain dependencies and avoid creating a distributed monolith.

How can Domain-driven Design help with legacy systems?

In legacy systems, DDD can help reveal domain structures that are no longer clearly reflected in the existing code. Instead of rebuilding the entire system at once, teams can identify domains, dependencies, and suitable interfaces, then restructure the system incrementally.

Bounded contexts can provide a target model for gradually decoupling parts of the system and planning modernization steps along meaningful domain boundaries.

For this use case, socreatory offers the workshop Domain-driven Design renovates Legacy.

How does INNOQ support teams with Domain-driven Design?

INNOQ helps teams understand complex domains, identify meaningful system boundaries, and translate those boundaries into software architecture and team structures. Depending on the situation, this can range from collaborative modelling and architecture work to hands-on support within an existing development project.

For knowledge transfer, we also offer the iSAQB® course Domain-driven Design in Practice. For broader strategic and organizational questions, DDD can also be part of our Architecture Strategy.