Technologies
Concepts
Services
wolkenkit
Learning
Company
Domain-driven design
Concepts
Domain-driven design (DDD) is a method for interdisciplinary teams to shape a common language to avoid ambiguous terminology.

DDD – shaping the ubiquitous language

DDD is a method for interdisciplinary teams to get a collective understanding of a domain and to shape a common language for it. This way you model and develop software that represents the original intentions as precisely as possible. Invented in 2003, it has become a valuable building block for modern software development, especially in combination with CQRS and event-sourcing. For us, DDD is at the heart of any web and cloud application we design and build.

Interdisciplinary teams

Modeling a domain usually takes place in an interdisciplinary team, with each discipline contributing its own domain language. Although this is challenging, DDD focuses on the advantages that emerge from this synergy.

Real-world problems

Software is not an end in itself, but gets developed to solve actual real-world problems. For that reason DDD focuses on the domain itself, not the technological aspects of writing the code.

Ubiquitous language

To bridge the language gap between domain and technological experts, DDD asks you to shape a common language, the so-called ubiquitous language. This helps to simplify the communication about a domain.

Consulting

How to use DDD to evaluate, shape, and refine an idea? How to structure aggregates and bounded contexts? How to decide whether to complement DDD with CQRS and event-sourcing? How to map DDD to micro-services? How to implement commands, domain events, and state? These and similar questions arise frequently in every DDD project. If you face these questions, too, we are there to help by sharing our experience and giving advise. Let's get in touch!

Shaping visions

As DDD encourages you to focus on the domain itself, it sets the stage to evaluate, shape, and refine ideas. We help our customers to shape their visions by using event-storming and other modeling techniques.

Modeling domains

Modeling a domain means defining bounded contexts, aggregates, state, commands, domain events, and way more. We help teams to set up an efficient and creative modeling environment.

Evaluating technologies

Although DDD is a terrific method, it is no magic silver bullet that works for all projects equally well. We help our customers to identity whether to use DDD, and whether to combine it with CQRS and event-sourcing.

Designing architectures

Since bounded contexts are subject-specific boundaries in DDD, they can be easily mapped to microservices. Even if following other architectural patterns, it's worth thinking about the domain's structure.

Building applications

When building an application based on a DDD model, you need to write commands, domain events, state, and so on. Hence we help our customers to implement these concepts in a simple and efficient way.

Let's get in touch

We would like to get to know you, and to learn about your current situation. Together, we can figure out how to empower you, and find answers to your individual visions, ideas, and questions. Let's get in touch!
Want answers to your questions?Let's get in touch!

Workshops

Learn how to use DDD to evaluate, shape, and refine ideas. Become an expert in structuring aggregates and bounded contexts. Learn how to decide whether to complement DDD with CQRS and event-sourcing. Map DDD to micro-services. And finally, implement commands, domain events, and state. You can learn all of this in our workshops, which of course are also available tailor-made, suitable to your individual needs – remote or on-site. Let's get in touch!

On demand – remote or on-site

You define place and time

An advanced introduction to DDD

In English or German

Learn about the fundamentals of DDD and how to tell better business stories. In a small group you will experience the theoretical basics as well as the hands-on usage.

This workshop includes

  • Understanding the language gap
  • Introducing commands and domain events
  • Managing state with aggregates
  • Identifying bounded contexts
  • Shaping the ubiquitous language
  • Using long-running processes
  • Implementing a domain with wolkenkit
  • And much more…
Susanna Roden
Let's get in touch

On demand – remote or on-site

You define place and time

Implementing an idea – from vision to code

In English or German

Learn how to use DDD, CQRS, event-sourcing, and wolkenkit to bring an idea from vision to code. In a small group you will experience the theoretical basics as well as the hands-on usage.

This workshop includes

  • Exploring and evaluating ideas
  • Verifying the business model
  • Shaping a domain model
  • Implementing the domain model using wolkenkit
  • Testing the application
  • Deploying into production
  • Discussing where to go from here
  • And much more…
Golo Roden
Let's get in touch

On demand – remote or on-site

You define place and time

Your individual DDD workshop

In English or German

Do you need an individual DDD workshop? In close collaboration with you we setup a tailor-made agenda that addresses what's most important to your individual project requirements.

This workshop includes

  • Tailor-made agenda
  • Balanced mix of theory and hands-on
  • Your place, your time
  • Close collaboration with the speaker
  • Group size according to your wishes
  • Follow-up support from our experts
  • Everything according to your needs
  • And much more…
Sophie van Sky
Let's get in touch

Development

Regardless of the conceptual effort you have already put into a project, sometimes you just don't have the people with the required experience to move things forward. We at the native web do not only have many years of experience with DDD, we also have extensive knowledge about the development and architecture of web and cloud applications in general. Whatever you are looking for, we will be the right development partner for you. Let's get in touch!

Web APIs

We apply DDD to model web APIs that use commands and domain events as their core elements. This enables us to represent the original intentions and requirements as precisely as possible, using a ubiquitous language.

Open-source

We develop wolkenkit, a CQRS and event-sourcing framework based on Node.js. It supports JavaScript and TypeScript, and is available under an open-source license. Additionally, there are also enterprise add-ons.

Cloud applications

We develop cloud applications for the enterprise, based on DDD, CQRS, and event-sourcing. This combination of concepts has proven to be a reliable foundation for software that fulfills its customers' needs.
Have a project in mind?Let's get in touch!

Your journey to DDD

We believe that having the chance to learn and to evolve every day is a valuable privilege that we are very thankful for. Having a deep desire for knowledge, we take hard problems as welcome challenges, not vice versa. Hence, we would like to empower you by sharing the following resources on DDD.

Let's go

When getting started with DDD, first learn about commands and domain events. Understand how they rely on and affect state, and how the state's transactional consistency is managed by aggregates.

En route

Next, learn about bounded contexts, and how they define the ubiquitous language. For managing long-running processes, read about workflows and sagas. Understand the relationship of DDD to CQRS and event-sourcing.

No limits

Gain experience in different modeling techniques, such as event-storming or domain story telling, to discover one that fits best for your needs. Finally, model a domain of your choice, and implement it using wolkenkit.
Need help on your way?Let's get in touch!