Designing a Serverless Application with Domain Driven Design Susanne Kaiser Independent Tech Consultant @suksr
Costs of Poor Software Quality in the US in 2018 (by CISQ report ) $2,840,000,000,000 TWOTRILLIONEIGHTHUNDREDFOURTYBILLION USD @suksr Source: https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report
Areas of Cost Relating To Poor Software Quality @suksr Source: https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report
Some Indicators for Poor Software Quality (extracted from CISQ report ) Defects t Increasing defect trend Lack of domain High amount of effort to knowledge Large inheritance depth understand piece of code 0% Low test coverage Communication and High degree of class Badly engineered coordination breakdowns coupling Cyclomatic complexity software in (large) teams @suksr Based on: https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2018-report
Domain Driven Design (DDD) Needs Business Domain Strategy Software Design @suksr
Domain Driven Design (DDD) – Terminology Problem Space Strategic Design Solution Space Tactical Design Bounded Context Core Subdomain Ubiquitous Language Supporting Subdomain Generic Subdomain Domain Model Entity Context Maps Value Object Anti-Corruption Layer Aggregate Shared Kernel Repository Open Host Service Factory Separate Ways Application Service Partnership Domain Service Customer-Supplier Domain Event Conformist @suksr
DDD & Wardley Maps Uncharted Industrialised e l b i s i V Value Chain n o i t i s o e P l b Evolution i Movement s i v n I Commodity Genesis Custom-Built Product (+rental) (+utility) @suksr
Wardley Maps BY SIMON WARDLEY Uncharted Industrialised e l b i s i V Visualisation of a value chain’s Value Chain evolution n o i t i s o P e Movement l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
Wardley Maps – VALUE CHAIN Who are your users? e l b i s i V Value Chain e l b i s i v n I @suksr
Wardley Maps – VALUE CHAIN Who are your users? e l b i s i V What are your users’ needs? Value Chain e l b i s i v n I @suksr
Wardley Maps – VALUE CHAIN Who are your users? e l b i s i V What are your users’ needs? Value Chain What are the components/activities to fulfill your users’ needs incl. dependencies? n o i t i s o P e l b i s i v n I @suksr
Wardley Maps – LANDSCAPE e l b i s i V Components along evolution axes Value Chain n o i t i s o P e Movement l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
Wardley Maps – PATTERNS Demand Competition Supply Competition Uncharted Industrialised e Everything evolves l b i s i V Value Chain Past Current Future e Movement l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
Wardley Maps – PATTERNS Characteristics change Uncharted Industrialised e l b i s i V Undefined market Forming market Growing market Mature market Uncertain Learning on use Learning on operation Known / accepted Unpredictable Increasing understanding Increasing education Stable Value Chain Rare Slowly increasing Rapidly increasing Widespread and stabilising consumption consumption Poorly understood Rapid increases in Rapid increase in use Commonly understood learning (in term of use) Past Current Future e l b Movement i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
Wardley Maps – PRINCIPLES Build in-house Use/buy off-the-shelf product Outsource to utility suppliers e l b i s i V Use appropriate methods per evolution stage Value Chain e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
Wardley Maps – PRINCIPLES Build in-house Use/buy off-the-shelf product Outsource to utility suppliers e l b i s i V Use appropriate methods per evolution stage Value Chain e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
Wardley Maps – PRINCIPLES Build in-house Use/buy off-the-shelf product Outsource to utility suppliers e l b i s i V Use appropriate methods per evolution stage Value Chain e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
Wardley Maps – PRINCIPLES Build in-house / Agile Use/buy off-the-shelf product / Lean Outsource to utility suppliers / Six Sigma e l b i s i V Know your users & focus on user needs Value Chain e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps Problem Domain Collaboration Domain Development Experts Teams e l b i s i V Domain Knowledge Understanding the problem domain first Value Chain Ubiquitous Language e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps Problem Domain DDD Patterns & Practices e Strategic Design Tactical Design l b i s i V Value Chain e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps Problem Domain DDD Patterns & Practices e Strategic Design Tactical Design l b i s i V Decomposing Analysing the into modular business components Value Chain domain (Bounded Contexts) Discovering Mapping Subdomains interaction Problem Space patterns between BC (Context Maps) e l Solution Space b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps Problem Domain DDD Patterns & Practices e Strategic Design Tactical Design l b i s i V Architecting a solution Decomposing Analysing the fitting the problem into modular business domain as closely as components Value Chain domain possible (Bounded Contexts (BC) Provides Discovering building blocks Mapping Subdomains to implement interaction Problem Space domain model patterns between BC Solution Space (Context Maps) e l Solution Space b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps STRATEGIC DESIGN (PROBLEM SPACE) Problem Domain Supporting Distilling the problem e Subdomain c a domain & discovering the p S Core m Generic core subdomain e l b Subdomain o e Subdomain l r b P i s i V Value Chain e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps STRATEGIC DESIGN (PROBLEM SPACE) Problem Domain Supporting Distilling the problem e Subdomain c a domain & discovering the p S Core m Generic core subdomain e l b Subdomain o e Subdomain l r b P i s i V Competitive advantage Value Chain Complex Changes often Build in-house e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps STRATEGIC DESIGN (PROBLEM SPACE) Problem Domain Supporting Distilling the problem e Subdomain c a domain & discovering the p S Core m Generic core subdomain e l b Subdomain o e Subdomain l r b P i s i V Competitive advantage No competitive advantage Value Chain Complex Quite simple Changes often Does not change often Build in-house Prefer to buy/use off-the-shelf e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps STRATEGIC DESIGN (PROBLEM SPACE) Problem Domain Supporting Distilling the problem e Subdomain c a domain & discovering the p S Core m Generic core subdomain e l b Subdomain o e Subdomain l r b P i s i V Competitive advantage No competitive advantage No competitive advantage Value Chain Complex Quite simple Generally complex Changes often Does not change often Does not change often Build in-house Prefer to buy/use off-the-shelf Buy/use off-the-shelf / outsource e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
DDD & Wardley Maps Model Driven Design STRATEGIC DESIGN (SOLUTION SPACE) Problem Domain Supporting e Subdomain c a p abstracted by S Core m Generic e l b Subdomain o Domain Model e Subdomain l r b P i s i V e c a Analysis Ubiquitous Code p S n Model Language Model o i t u l o Value Chain S Development Domain Teams Experts e l b i s i v n I Genesis Custom-Built Product (+rental) Commodity (+utility) Evolution @suksr
Recommend
More recommend