Markdown Editor

Data Mesh Design Template

Mesh fit test, current state, domain map and ownership rules, data products and quality tests, self-serve platform, federated governance policies, standards, metrics, roadmap

ArchitectureFullData mesh principles (Dehghani, names only); ODPS v1.1.0; ODCS v3.2.0datameshdesign

How to use: Use it when a central data team has become the bottleneck and domains are ready to own analytical data. Fill the fit assessment and the domain map first, then the product acceptance tests and the global policies the platform enforces. The main pitfall is renaming existing tables as products without owners, contracts, consumers or a funded platform.

Preview

Data Mesh Design: [Organisation or data estate]

Architecture design for a data mesh: the decision that a mesh fits, the domains that own data, the data products they publish, the self-serve data platform that makes publishing cheap, the federated computational governance that keeps products interoperable, the interoperability standards, the logical architecture, the operating model, metrics and the adoption roadmap. The structure follows the four data mesh principles named by Zhamak Dehghani (martinfowler.com, 2020), cited by name only. Product and contract metadata use the Bitol Open Data Product Standard (ODPS) v1.1.0 and Open Data Contract Standard (ODCS) v3.2.0 through the linked templates. Replace every [bracketed] value and every row marked Example.

Document control

FieldValue
Document ID[DMD-001]
Organisation or data estate[Corvid Commerce analytical estate]
Accountable executive[@chief-data-officer]
Design authority[@data-architect]
Platform owner[@data-platform-lead]
Version[0.1]
Status[Draft / In review / Approved / Superseded]
Approvers/reviewers[@cdo], [@chief-architect], [@ciso], [@domain-leads]
Last updatedYYYY-MM-DD
Next scheduled reviewYYYY-MM-DD
Classification[Internal / Confidential]
Governance model reference[data/data-governance-operating-model document ID and version]
Standards versionsODPS [v1.1.0], ODCS [v3.2.0], lineage [OpenLineage version]

Approvals

RoleNameDecisionDate
Accountable executive[@name][Approve / Approve with conditions / Reject]YYYY-MM-DD
Data governance council chair[@name][Decision]YYYY-MM-DD
Chief information security officer[@name][Decision]YYYY-MM-DD
Domain leads (each pilot domain)[@names][Decision]YYYY-MM-DD

Revision history

VersionDateAuthorChange summary
0.1YYYY-MM-DD[@name]First draft after fit assessment
0.2YYYY-MM-DD[@name]Example: Domain map agreed with Sales, Fulfilment and Finance
1.0YYYY-MM-DD[@name]Example: Global policies and platform capabilities approved for the pilot

Contents

1. Purpose, drivers and fit

1.1 Drivers

IDDriverEvidenceOwner
DRV-01 (Example)Central data team backlog delays new datasetsMedian 34 days from request to first usable dataset over the last two quarters[@cdo]
DRV-02 (Example)Analysts do not trust shared tablesThree incidents last quarter where finance and sales reported different order counts[@head-of-finance]
DRV-03 (Example)Domain teams already own operational systems end to endSix product teams with on-call for their services[@cto]
DRV-[NN][Driver][Evidence][@owner]

1.2 Fit assessment

A mesh moves data ownership to the teams that know the data. That has a cost: every domain needs data skills, and the organisation needs a platform and shared standards. Answer each question with evidence.

QuestionAnswerEvidenceFit signal
Are there several distinct business domains producing analytical data?[Yes / No][Domain list]Mesh fits better with more domains
Is the central team the main bottleneck rather than data quality at source?[Yes / No][Backlog data]Bottleneck at the centre supports a mesh
Can domain teams take on data product ownership with funding and skills?[Yes / No / Partly][Staffing plan]No means start with a central team and domain stewards
Is there budget for a platform team for at least two years?[Yes / No][Budget line]No platform means each domain rebuilds the same tooling
Do leaders accept global policies enforced automatically?[Yes / No][Council minutes]Without this, the mesh becomes isolated silos

Example: Corvid Commerce answers yes to four questions and "partly" to domain skills. It adopts the mesh for three pilot domains and keeps a central team for the remaining three until their skills plan is funded.

1.3 Out of scope

[Operational databases, transactional integration (see architecture/integration-design), master data management (see architecture/master-data-management-design), and any area left centrally managed.]

2. Current state

AreaCurrent stateProblemEvidence
Storage and compute (Example)Lakehouse on Apache Iceberg tables in one cloud accountShared namespace, unclear ownership of 610 tablesCatalogue export
Transformation (Example)One dbt project with 900 models owned by the central teamChanges queue behind each otherPull request lead time
Access (Example)Ticket-based grants by the central teamTwo to five days per grantTicket data
Quality (Example)Tests on some models, no published service levelsConsumers find issues firstIncident log
Metadata (Example)Catalogue populated by crawler, few descriptionsLow discoverySearch analytics
[Area][State][Problem][Evidence]

Link the platform baseline to architecture/data-platform-architecture if one exists.

3. Domain-oriented ownership

The first principle moves ownership of analytical data to the business domains closest to it. Use the bounded contexts from domain-driven design where they exist (architecture/context-map, architecture/bounded-context-canvas), so operational and analytical ownership line up.

3.1 Domain map

Domain IDDomainOwning teamBounded contextsSource systemsData product ownerMesh status
DOM-01 (Example)SalesCheckout teamOrdering, PaymentsOrder service, payment gateway events[@sales-dpo]Pilot
DOM-02 (Example)CatalogueCatalogue teamProduct information, PricingProduct service[@catalogue-dpo]Wave 2
DOM-03 (Example)FulfilmentFulfilment teamWarehousing, ShippingWarehouse system, carrier events[@fulfilment-dpo]Pilot
DOM-04 (Example)CustomerAccounts teamIdentity, ProfilesAccount service[@customer-dpo]Wave 2
DOM-05 (Example)FinanceFinance systems teamLedger, BillingERP, billing service[@finance-dpo]Pilot
DOM-06 (Example)MarketingGrowth teamCampaigns, AttributionMarketing tools[@marketing-dpo]Central for now
DOM-[NN][Domain][Team][Contexts][Sources][@owner][Status]

3.2 Ownership rules

Rule IDRuleRationale
OWN-01 (Example)The team that changes a source system owns the source-aligned products built from itChanges and meaning stay with the people who cause them
OWN-02 (Example)Aggregate products are owned by the domain that uses them most, or by a named consumer-aligned teamAvoids orphaned cross-domain tables
OWN-03 (Example)Every product has one accountable data product owner; shared ownership is not allowedClear escalation
OWN-[NN][Rule][Rationale]

4. Data as a product

The second principle treats each published dataset as a product with consumers, a roadmap, quality promises and an owner. Dehghani's 2019 article names qualities such as discoverable, addressable, trustworthy, self-describing, interoperable and secure; the 2020 article adds understandability and explorability, and the book (2022) extends the list with natively accessible and valuable on its own. The table below uses those quality names with original acceptance tests. Specify each product in data/data-product-specification and each output port in data/data-contract.

4.1 Product qualities and acceptance tests

QualityAcceptance test for a product to go live
DiscoverableListed in the catalogue with description, owner, domain and tags; appears in search for its business terms
AddressableEach output port has a stable, versioned identifier and location
Understandable (self-describing)Every property has a description; business terms link to the glossary; at least one example query
TrustworthyPublished service levels (freshness, availability) and quality checks run on every load, results visible to consumers
Natively accessibleReadable through at least one port suited to its main consumers (SQL table, file, API or stream)
InteroperableUses the global identifiers, time zone, currency and code lists in section 7
SecureAccess by policy from classification; personal data masked by default
Valuable on its ownAt least one named consumer and use case before build starts

4.2 Product inventory

Product IDProductDomainTypeOutput portsContract IDsNamed consumersStatus
DP-SAL-01 (Example)OrdersDOM-01Source alignedorders 2.1.0 (Iceberg table)corvid-orders-ordersFinance, Fulfilment, BIActive
DP-SAL-02 (Example)PaymentsDOM-01Source alignedpayments 1.0.0corvid-payments-paymentsFinanceDraft
DP-FUL-01 (Example)ShipmentsDOM-03Source alignedshipments 1.2.0corvid-shipments-shipmentsSales, Customer serviceActive
DP-FUL-02 (Example)Delivery performanceDOM-03Aggregatedelivery_daily 1.0.0corvid-delivery-performance-dailyOperations dashboardsDraft
DP-FIN-01 (Example)Recognised revenueDOM-05Consumer alignedrevenue_monthly 1.0.0corvid-revenue-monthlyBoard reportingProposed
DP-[DOM]-[NN][Product][Domain][Source aligned / Aggregate / Consumer aligned][Ports][IDs][Consumers][Status]

The type values follow ODPS v1.1.0 (sourceAligned, aggregate, consumerAligned). Product IDs in this document are design references; the ODPS id in each specification is the system identifier.

4.3 Product lifecycle

Every product moves through the same states. The platform records the state in the product specification (ODPS status) and the catalogue shows it to consumers.

5. Self-serve data platform

The third principle provides shared, self-service capabilities so that domain teams can build, publish and run products without specialist infrastructure work. Dehghani describes the platform in planes: the 2020 article names a data infrastructure provisioning plane, a data product developer experience plane and a data mesh supervision plane, and the book (2022) renames them the infrastructure utilisation, data product experience and mesh experience planes. This design groups capabilities by the book's plane names. Treat the platform as a product with its own roadmap (architecture/internal-developer-platform-charter, architecture/platform-golden-path).

Cap IDCapabilityPlaneSelf-service interfaceMandatory for productsStatus
PLT-01 (Example)Storage and compute provisioning per domain (Iceberg namespace, warehouse, budget)InfrastructureTemplate repository and pipelineYesLive
PLT-02 (Example)Product scaffold: dbt project, tests, CI, ODPS and ODCS filesProduct experiencecreate-data-product commandYesPilot
PLT-03 (Example)Contract validation in CI against the ODCS v3.2.0 JSON schemaProduct experienceCI stepYesPilot
PLT-04 (Example)Quality checks and service level monitoring with consumer-visible resultsProduct experienceDeclared in the contractYesPilot
PLT-05 (Example)Access policies from classification tags, masking by defaultInfrastructurePolicy as codeYesLive
PLT-06 (Example)Catalogue registration and search from product metadataMesh experienceAutomatic on publishYesPilot
PLT-07 (Example)Lineage collection with OpenLineage eventsMesh experienceAutomatic from orchestratorYesPlanned
PLT-08 (Example)Cost reporting per productMesh experienceDashboardNoPlanned
PLT-[NN][Capability][Plane][Interface][Yes / No][Status]

Platform service levels:

MeasureTarget (Example)
Time for a trained domain team to publish a new source-aligned product10 working days
Access grant through policy (no ticket)Within 1 hour
Platform availability during business hours[Target]

6. Federated computational governance

The fourth principle combines a federated decision body (domain representatives, platform, security, legal and privacy) with policies that the platform enforces automatically. Membership, decision rights and the RACI belong in data/data-governance-operating-model; this section lists the policies and how each one is enforced.

6.1 Global and local policies

Global policies apply to every product and are few. A policy is global only if inconsistency between domains would break interoperability, security or legal compliance. Everything else is local.

Policy IDPolicyScopeEnforcement pointModeEvidence
POL-G-01 (Example)Every output port has a valid ODCS v3.2.0 contract with owner and service levelsGlobalCI contract validation (PLT-03)Block publishCI logs
POL-G-02 (Example)Properties holding personal data carry a classification tag and are masked unless the consumer role allowsGlobalPolicy engine (PLT-05)Block accessAccess logs
POL-G-03 (Example)Shared identifiers use the global formats in section 7GlobalContract lintingBlock publishLint report
POL-G-04 (Example)Breaking changes need a new major version and a deprecation notice period of at least [N] daysGlobalContract diff checkBlock mergePull request record
POL-G-05 (Example)Retention follows the data retention standardGlobalTable maintenance jobsDetect and alertRetention report
POL-L-01 (Example)Sales freshness target for orders is hourlyLocal (DOM-01)Contract service levelMonitorService level dashboard
POL-[G/L]-[NN][Policy][Global / Local][Point][Block / Detect / Monitor][Evidence]

Link retention and classification policies to data/data-retention-deletion-standard and data/data-classification-policy, and quality rules to data/data-quality-standard.

6.2 Exceptions

Exception IDPolicyProductReasonCompensating controlApproved byExpires
EXC-01 (Example)POL-G-03DP-FIN-01ERP customer number cannot be changed before migrationMapping table published with the productGovernance group, YYYY-MM-DDYYYY-MM-DD
EXC-[NN][Policy][Product][Reason][Control][Body, date]YYYY-MM-DD

7. Interoperability standards

Std IDAreaStandardVersionApplies to
STD-01 (Example)Product metadataBitol Open Data Product Standard (ODPS)v1.1.0Every product specification
STD-02 (Example)Port contractsBitol Open Data Contract Standard (ODCS)v3.2.0Every output port
STD-03 (Example)Lineage eventsOpenLineage[Version]Every pipeline run
STD-04 (Example)Table formatApache Iceberg[Format version]All table ports
STD-05 (Example)Customer identifiercustomer_id as issued by DOM-04, string, never reusedInternal v1All products with customer data
STD-06 (Example)TimestampsUTC, ISO 8601, with a separate local date where business days matterInternal v1All products
STD-07 (Example)CurrencyISO 4217 code with amounts in minor unitsInternal v1All monetary properties
STD-[NN][Area][Standard][Version][Scope]

Keep the glossary of business terms in architecture/data-dictionary or the catalogue, and refer to it from contracts.

8. Logical architecture

Read the diagram as follows: each product reads its inputs through the output ports of other products (Delivery performance reads Orders and Shipments), never from another domain's internal tables. Dotted lines show platform services the product uses at publish time. Consumers read through the policy engine, which applies POL-G-02.

9. Operating model and teams

TeamTypeResponsibilitiesInteraction with others
Domain product teams (Example)Stream alignedBuild and run their data products, answer consumersUse the platform as a service
Data platform team (Example)PlatformBuild and run PLT capabilities as a productOffer self-service; collaborate with pilot domains for the first quarter
Data enablement team (Example)EnablingCoach domains, run the data product owner trainingTime-boxed engagement per domain
Governance group (Example)Federated bodyAgree global policies and exceptionsMeets every [two weeks]; decisions recorded

Team types follow the vocabulary of Team Topologies (Skelton and Pais), used by name only. Document each team's interfaces with architecture/team-api.

Funding: [domain budgets fund product teams; platform funded centrally; cost reporting per product from PLT-08].

10. Metrics and economics

Metric IDMetricDriverBaseline (Example)Target (Example)Source
MET-01Median days from request to first usable productDRV-013410Request tracker
MET-02Share of active output ports with a valid contractDRV-0275% (18 of 24)100%Contract registry
MET-03Share of active products with at least one named consumer querying in the last 30 daysDRV-0183% (20 of 24)90%Query logs
MET-04Incidents where consumers found a quality issue before the producerDRV-023 per quarter0 to 1 per quarterIncident log
MET-05Platform cost per active product per yearEconomicsEUR 40,000 (EUR 960,000 for 24 products)EUR 24,000 at 40 productsFinance

Example arithmetic: the platform team costs EUR 960,000 a year. With 24 active products that is EUR 960,000 / 24 = EUR 40,000 per product; at the target of 40 products it falls to EUR 24,000. The 24 products are spread across domains as Sales 5, Catalogue 4, Fulfilment 5, Customer 4, Finance 3 and Marketing 3. Use the same figures in every report.

11. Adoption roadmap

WavePeriodDomainsPlatform capabilities neededExit criteria
0 (Example)YYYY-QnNonePLT-01, PLT-05Fit assessment approved, global policies POL-G-01 to POL-G-03 agreed
1 (Example)YYYY-QnDOM-01, DOM-03, DOM-05PLT-02 to PLT-04, PLT-06Five products active, MET-02 at 100% for pilot products
2 (Example)YYYY-QnDOM-02, DOM-04PLT-07MET-01 below 15 days
3 (Example)YYYY-QnDOM-06PLT-08Central team reduced to enablement and platform roles
[N][Period][Domains][Capabilities][Criteria]

12. Risks and anti-patterns

Risk IDRisk or anti-patternLikelihoodImpactMitigationOwner
RSK-01 (Example)Domains publish tables without consumers or service levelsMediumMediumAcceptance tests in 4.1, MET-03[@governance-chair]
RSK-02 (Example)Platform lags behind domain needs, domains build their own toolingHighHighPlatform roadmap reviewed with domains every quarter[@platform-lead]
RSK-03 (Example)Global policies grow until the governance group becomes a central bottleneckMediumHighGlobal test in 6.1; policy count reviewed yearly[@governance-chair]
RSK-04 (Example)Duplicate products for the same concept in two domainsMediumMediumCatalogue search before Proposed; ownership rules OWN-01 to OWN-03[@data-architect]
RSK-05 (Example)Domain teams lack data engineering skillsHighHighEnablement team, wave sequencing, funded roles[@cdo]
RSK-[NN][Risk][L][I][Mitigation][@owner]

13. Decisions and traceability

13.1 Decisions

ADR IDDecisionDateStatus
ADR-D01 (Example)Adopt ODPS v1.1.0 and ODCS v3.2.0 for product and contract metadataYYYY-MM-DDAccepted
ADR-D02 (Example)Keep Marketing central until wave 3YYYY-MM-DDAccepted
ADR-[NN][Decision]YYYY-MM-DD[Status]

13.2 Traceability

DriverPrincipleDesign elementsPoliciesMetrics
DRV-01 (Example)Domain ownership, self-serve platformSection 3.1, PLT-01, PLT-02POL-G-01MET-01, MET-03
DRV-02 (Example)Data as a product, federated governanceSection 4.1, PLT-03, PLT-04POL-G-01, POL-G-03, POL-G-04MET-02, MET-04
DRV-03 (Example)Domain ownershipOWN-01 to OWN-03NoneMET-01
[Driver][Principle][Elements][Policies][Metrics]

14. Glossary and references

14.1 Glossary

TermMeaning in this document
Data meshA socio-technical approach where business domains own and publish analytical data as products on a shared platform under federated governance
DomainA business area with its own language, systems and team, usually aligned with a bounded context
Data productData plus code, metadata, contracts and service levels, owned by a domain and offered to consumers through ports
Output portA versioned interface through which consumers read a product
Data product ownerThe person accountable for a product's value, roadmap and promises
Self-serve data platformShared capabilities that let domain teams build and run products without specialist tickets
Federated computational governanceGovernance by a group of domain and specialist representatives, with policies enforced automatically by the platform
Global policyA policy that applies to every product because inconsistency would break interoperability, security or compliance
Source aligned, aggregate, consumer alignedProduct types by closeness to a source, combination of sources, or fit to one family of uses

14.2 References

ReferenceVersion or date checkedUse
Zhamak Dehghani, "Data Mesh Principles and Logical Architecture", martinfowler.com/articles/data-mesh-principles.htmlPublished 3 December 2020, checked 2026-10-30Names of the four principles, earlier platform plane names (no text used)
Zhamak Dehghani, "How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh", martinfowler.com/articles/data-monolith-to-mesh.htmlPublished 20 May 2019, checked 2026-10-30Names of data product qualities (no text used)
Zhamak Dehghani, Data Mesh: Delivering Data-Driven Value at Scale, O'Reilly, 2022Book, cited by namePlatform plane names and two added quality names (no text used)
Bitol Open Data Product Standard (ODPS), github.com/bitol-io/open-data-product-standardv1.1.0, released 2026-09-08, checked 2026-10-30Product type values and product metadata
Bitol Open Data Contract Standard (ODCS), github.com/bitol-io/open-data-contract-standardv3.2.0, released 2026-09-08, checked 2026-10-30Contract validation and service levels
Matthew Skelton and Manuel Pais, Team TopologiesBook, cited by nameTeam type names in section 9
Related templates: data/data-product-specification, data/data-contract, data/data-governance-operating-model, data/data-quality-standard, data/data-classification-policy, data/data-retention-deletion-standard, architecture/data-dictionary, architecture/data-platform-architecture, architecture/context-map, architecture/team-apiCurrent versionsDetail for each part of the design

Standard and licence note

Structure aligned with the four data mesh principles named by Zhamak Dehghani in "Data Mesh Principles and Logical Architecture" (martinfowler.com, 3 December 2020) and her book Data Mesh (O'Reilly, 2022): domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. The principles, quality names and platform plane names are cited by name only; no text, figures or tables from the article or the book are reproduced. Product and contract metadata refer to the Bitol Open Data Product Standard v1.1.0 and Open Data Contract Standard v3.2.0, published by the Bitol project under the Apache License 2.0. Team type names follow Team Topologies by name only. All explanatory text, tables and examples are original. Corvid Commerce is fictional. Check the current versions of each standard before use. Template licence: MIT.

Related templates