Skip to main content

Command Palette

Search for a command to run...

Domain Driven Design Resurgence - Why now?

Domain Driven Design is about effective decomposition

Updated
10 min read
Domain Driven Design Resurgence - Why now?
S

Sudarshan leads the platform engineering capability within Deloitte Cloud & Engineering. He enjoys leading high-talent-density teams that architect, build and operate platforms that have an outsized impact on organisational performance indicators. He combines product management, architecture and engineering skills to build consensus across business units and organisational levels by showcasing a strong correlation between technology decisions and business drivers. Writings and opinions my own.

Key takeaways

  • Domain Driven Design (DDD) is a set of modelling techniques to enable effective decomposition.

  • We must break down big problems into smaller sub-problems, and the dimensions along which they are decomposed have an outsized impact on the outcomes. DDD provides proven techniques to reason about this decomposition at the strategic and tactical levels.

  • The slowing of Moore’s law and uptick in digital adoption is fuelling cloud adoption across the enterprise. The cloud favours distributed architectures, forcing enterprises to re-look at how they decompose their technology landscapes.

  • As businesses strive to optimise for both innovation and efficiency, they are taking a closer look at differentiating vs utility capabilities. They are challenging technology to be nimble and innovate for differentiating capabilities while staying cost-effective for their utility capabilities. These often opposing requirements from the business require technology to revisit how they recompose their monolithic, homogenous landscapes into business capability-aligned services.

  • Most organisations generate limited value from their transformation efforts because they locally optimise along the multiple interacting dimensions of business strategy, product, org design and tech strategy. DDD and Cynefin help deconstruct the complex interactions between these dimensions and provide a decision-making framework for optimising the whole, enabling organisations to make more targeted investment decisions.

Why Domain-Driven Design?

The slowing down of Moore's law, along with the uptick in digital adoption, has fuelled cloud adoption across sectors, cloud best supports distributed architectures, and this raises the question of how organisations should be decomposing their technology landscapes.

As businesses have grown in complexity, there is consensus that not all parts of a business have the same impact on organisational metrics, and execs want to double down on the differentiating capabilities within their business.

This recognition has fueled the need for heterogeneous technology architectures composed of:

  • Agile software solutions to power differentiating capabilities,

  • While leveraging commodity software to service utility domains.

In summary, there are now technology and business drivers for decomposition. DDD is a set of time-tested techniques (20+ years now) to enable business and technology alignment through effective decomposition.

Pre-DDD thinking

Here technology is the primary dimension of decomposition and little to no attention is given to aligning technology architectures with business domains to optimise organisational performance.
The Gartner PACE layered approach is a popular example of this outdated mental model.

We must revisit the idea that technology layers are self-contained as most business changes cut across layers. For example, adding new product categories to a website is not just about having an easy-to-change Content Management System; you must also update the database, integration points, warehouse systems, etc.
It is far more helpful to think about some business capabilities needing to be more responsive than others. For example, the digital touchpoints for a neobank (internet-only bank) need to be far more nimble than their internal payroll system.
The digital touchpoints are a differentiating capability, and the internal payroll system is a utility capability.

Strategic DDD thinking

Identify and categorise business capabilities

The DDD strategic patterns start by identifying differentiating capabilities vs utility capabilities.

Strictly speaking, DDD takes a more rigorous approach, referring to business capabilities as subdomains, where a subdomain is a fine-grained area of business activity and categorising them into Core (Differentiating), Supporting (supports a differentiating subdomain) and Generic (utility).

CategoryDescriptionExample
CoreA core subdomain is what a company does differently from its competitors. An organisation can succeed (or even exist) only by being exceptionally good in its core domain.For a hypothetical ride-sharing company, the rider-to-driver match-making subdomain could be one of its core domains.
SupportingSupporting subdomains support the company’s business. However, contrary to the core subdomains, supporting subdomains do not provide any competitive advantage for the company. They simply support the company’s core business.For our hypothetical ride-sharing company, driver management could be a supporting subdomain.
GenericGeneric subdomains may require deep techno-functional skills but do not provide any competitive advantage. There is no need for innovation or optimisation here: battle-tested implementations are widely available.And finally, the payments capability could be one of the generic subdomains.

This visualisation helps brings these concepts together. The core subdomain is the area that provides a competitive advantage and requires deep techno-functional expertise. This organisational expertise is difficult to replicate and a crucial factor that sets the business apart from competitors.

subdomains and business capabilities are not synonymous, but for the purposes of this article the distinction is immaterial and so they are used interchangeably.

Leverage Cynefin framework to aid decision making

Identifying the core subdomain(s) is a dark science. Intuition and experience will inform some of these decisions, but leveraging complexity science, particularly the Cynefin framework, can help get better results by:

  • Deepening the thinking behind these decisions.

  • Providing consistent language to communicate the rationale across a diverse stakeholder group.

  • Identifying appropriate management strategies for each subdomain.

The Cynefin framework groups problems into four categories

Simplified Cynefin framework

When these are overlayed on the subdomain categories they enable us to validate our categorisation and provide tested techniques for addressing the unique needs of each subdomain category

Cynefin CategoryDescriptionExamplesSubdomain CategoryAppropriate Responses
ComplexThe domain of emergent practices and creative thinkingSpaceX recognised that it was dealing with a complex problem (as opposed to complicated) and optimised for discovery by running various safe-to-fail experiments to accelerate breakthrough knowledge acquisition.CoreOptimise to minimise opportunity cost. Optimise for Experimentation and knowledge acquisition. Adopt iterative and incremental (agile) software development methodologies. Adopt a Product mindset.
ComplicatedThe domain of good practices and expert thinkingLarge engineering projects like constructing dams, bridges, and buildings can be classified as complicated. These projects require specialised knowledge and expertise. While there are always multiple good practices to choose from, and one expert might do things differently than another, both would achieve the goals in the end. Fundamentally, the outcomes are still predictable.Supporting and GenericOptimise for cost and efficiency. Assemble a panel of experts and apply rigorous analysis techniques. Adopt linear and sequential (waterfall) software development methodologies. Adopt a Project mindset.
ClearThe domain of best practices and entrained thinkingHeavily process-oriented domains like support centres can be classified as clear. Call centre executives can resort to clear & well-defined processes to handle problems. There is unanimous agreement about the best course of action, and the response tends to be a process. Adhering to best practices and standard operating procedures delivers effective outcomes.GenericOptimise for cost and efficiency. Develop automation and standard operating processes. Adopt standard operating procedures supported by technology.
The domain of rapid response and action biasThe early days of the COVID-19 pandemic and the incubation phases of many start-ups can be classified as chaotic. People are most receptive to novelty and directive leadership in this context, and many innovations have emerged from chaotic situations.N/A. Early stages of innovation, discovering product/market fit. Not yet an established subdomain.Leverage design thinking and lean start-up techniques to validate product/market fit.

Applying DDD and Cynefin to connect business and technology strategies

The primary dimension of decomposition is business capabilities, and the secondary dimension of decomposition could be technology.

Business Strategy

Business strategy involves identifying the core, supporting and generic business capabilities and developing necessary organisational conditions to maximise competitive advantage in the core subdomain, e.g. crafting new growth strategies while driving efficiencies in the supporting and generic subdomains, e.g. cost optimisation through vendor consolidation.

Capability strategy

Once subdomains have been categorised, we apply the Cynefin framework to derive the most appropriate management responses for each capability.

Business Capability/ Subdomain CategorySuccess IndicatorsManagement response
CoreDelivers sustained competitive advantage. Minimises opportunity cost. The cost of pursuing opportunity is correlated with opportunity costCynefin category - Complex Encourage knowledge discovery through fail-to-safe experiments, and challenge industry best practices.
SupportingDelivers the required supporting capabilities for the core subdomain. Stable to lowering total cost of ownership balanced with agility needs of the core subdomainCynefin category - Complicated Favour battle-tested solutions and strongly consider adopting industry best practices.
GenericStable to lowering total cost of ownership while delivering required operational capabilities.Cynefin category - Complicated or Clear Adopt battle-tested solutions, adopt industry best practices.

Talent sourcing and team mindset

In this section, we’ll address the most appropriate talent-sourcing strategies and team mindsets for each subdomain category.

Business Capability/ Subdomain CategoryTalent sourcing modelTeam structure
CoreFavour insourcing over partnering and outsourcing. Where organisations don’t have the appropriate skills, structure blended teams with a trusted partner and create incentives to develop the necessary skillsets.Stable outcome-oriented, cross-functional (combined business and technology skills).
SupportingFavour blended teams over outsourcing. Create blended teams with in-house leadership, leverage contract and/or partner talent for staff augmentation.Scalable, task-oriented project teams. A skeleton team performs operations and steady-state activities.
GenericFavour outsourcing. Minimal involvement of in-house technology talentOutsourced project teams with little to no in-house technology team involvement.

Technology

In this section, we’ll address facets across technology for each subdomain category.

Business Capability/ Subdomain CategorySuccess IndicatorsBuy vs BuildKey Architectural characteristicsKey Engineering practices
CoreOptimised for speed and stability to cater for high volatility and business criticality.Build.Speed is a competitive differentiator in this subdomain; hence evolvability over time (not just at a point in time) is a critical architectural characteristic.Optimising for speed and stability calls for the most advanced engineering practices, e.g. Chaos engineering, CI/CD, A/B testing, and GitOps.
SupportingOptimised for stability with just enough speed to cater for high business criticality and medium to low volatility.Build or buy and customise.Typically supporting subdomains have lower responsiveness demands than core subdomains; hence they value reliability and just enough evolvability while balancing the total cost of ownership.Optimising for stability calls for good engineering practices, e.g. CI/CD, IaC.
GenericOptimised for just enough stability to cater for medium business criticality and low volatility.Buy.While generic subdomains can be complicated, they have low volatility and business differentiation; hence they value reliability and low total cost of ownership over evolvability.It's ideal to outsource this solution fully, but if that's not possible, it's important to practice basic engineering techniques such as Continuous Integration.

Conclusion

Domain Driven Design combined with Cynefin framework enables organisations to make informed decisions across business strategy, organisational design and technology strategy using a set of proven techniques.

Business Capability/ Subdomain CategoryDescriptionCynefin CategoryCapability Success indicatorsAppropriate solution responseTalent sourcing modelTeam mindsetTechnology success indicatorsBuy vs BuildKey Architectural characteristicsKey Engineering practices
CoreA core subdomain is what a company does differently from its competitors.ComplexDelivers sustained competitive advantage and minimises opportunity costEncourage knowledge discovery, through fail-to-safe experiments, challenge industry best practicesFavour insourcing over partnering and outsourcing.Adopt a product mindset.Optimised for speed and stabilityBuild.Optimise for Evolvability and Reliability trading-off cost.Most advanced engineering practices e.g. Chaos engineering, CI/CD, A/B testing, GitOps
SupportingSupporting subdomains support the company’s business. However, contrary to the core subdomains, supporting subdomains do not provide any competitive advantage for the company.ComplicatedDelivers the required supporting capabilities for the core subdomainFavour battle-tested solutions, and strongly consider adopting industry best practices.Favour blended teams over outsourcing.Adopt a blended team project mindset.Optimised for stabilityBuild or buy and customise.Optimise for reliability and just enough evolvability while balancing the total cost of ownership.Good engineering practices e. g. CI/CD, IaC
GenericGeneric subdomains may require deep techno-functional skills but do not provide any competitive advantage.Complicated OR ClearDelivers required operational capabilities.Adopt battle-tested solutions, adopt industry best practicesFavour outsourcingAdopt an outsourced team project mindset.Optimised for just enough stabilityBuyOptimise for reliability and low total cost of ownership trading-off evolvability.Basic engineering practices (if any) like Continuous integration should be practised

References

HBR Article on Decision Making

Learning Domain-Driven Design

Gartner Pace-layered application strategy

Core Domain Patterns