This article is a part of a series about Domain-Driven Design with Angular:

  • Part 1: Strategic Design - Methodology
  • Part 2: Strategic Design - Implementation
  • Part 3: Tactical Design (this article)

Business and industrial applications are usually long-lived. These applications include customer-facing applications layered with complex backend services and systems. Many of these applications are now implemented with web frontends using JavaScript.

So how can we build and maintain such software systems?

Domain Driven Design (DDD) provides the answer! Best of all, it is especially suitable for complex Angular solutions.

In this article we will learn:

  • How Tactical Design (DDD) helps to organize our source code as smaller, manageable, coherent parts.
  • How monorepos help implementing them
  • How Facades help with isolating your domain logic
  • How client-side DDD paves the way to micro frontends

All these topics are also part of our advanced Angular Architecture workshop. Have a look at it if you’re implementing business or industrial software with Angular!

As always, the examples used can be found in my GitHub account.

Big thanks to Thomas Burleson who deeply reviewed this article and contributed to it.

Domain Decomposition

Let’s consider a consumer travel web application we are building. We have several domains that we can identify:

image

To manage complexity of these domains, we should leverage Domain-Driven Design and best practices from the Angular community.

Domain Driven Design comes with the two types of design

While the former one is about identifying domains and the communication between them, tactical design deals with structuring these domains.

I’ve already written about the use of Strategic Design in Angular applications. Have a look at this article for foundational understandings. Hence, here, I’ll focus on Tactical Domain Design.

#unkategorisiert #tactical domain #angular #monorepos

Tactical Domain-Driven Design with Angular and Monorepos?
13.35 GEEK