Architecture & System Design › Domain-Driven Design
Strategic vs Tactical DDD
Boundaries and team design vs code-level patterns.
Also known as: strategic vs tactical DDD, strategic design, tactical design
DDD splits in two: strategic design (where to draw boundaries — bounded contexts, context maps, distillation of the core domain) and tactical design (how to model inside one context — entities, values, aggregates, services, events). Strategy decides the shape of the system; tactics decide the shape of the model.
strategic: which contexts? how related? what's core vs generic?
tactical: entities? values? aggregates? (inside one context)
The failure mode is tactics-without-strategy: exquisite aggregates inside contexts drawn around org charts, databases or wishful thinking — perfect models of the wrong boundaries. Strategic work (event storming at scale, context mapping, core-domain distillation) earns the right to tactical modelling; big balls of mud get tactics applied to mud.
The classic mistakes:
- Tactics first. Aggregates and entities designed before contexts exist model confidently inside accidental boundaries. Map contexts, then model within.
- Big-bang bounded contexts. Drawing twelve contexts upfront from interviews fossilises guesses. Start with fewer, larger contexts; split on proven seams (see context map).
- Core vs generic unexamined. Lavishing modelling on commodity subdomains (auth, billing plumbing) while the differentiating core gets CRUD wastes DDD where it matters most. Distil the core; buy or borrow the generic.
- Strategic artefacts rotting. Context maps drawn once and never updated describe history within a year. Review boundaries with the same cadence as architecture.
- Tactical patterns everywhere. Aggregates and ACLs in generic subdomains add ceremony without complexity to protect. Apply tactical DDD proportional to domain richness.
- Conway blindness. Context boundaries ignoring team structures (or vice versa) fight organisation gravity perpetually. Align contexts with teams that own them.
- Distillation skipped. Treating all domains as equally deserving scatters modelling effort evenly — and thinly. Invest deeply in the core; contain the rest.
How to sequence: storm big (events across the business), map contexts, distil the core, model tactically inside — in that order, revisited as understanding grows. Strategy aims DDD; tactics execute it.