See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
The short answer
Implementing data mesh means moving ownership of analytical data from a central team to the domain teams that produce it, then building the platform that makes that survivable. In practice it runs in four phases over roughly two years. Months 1 to 3: pick two pilot domains with willing teams, write down what a data product means in your organisation, and fund a platform team. Months 3 to 6: those domains publish two or three real data products on the infrastructure that already exists, each with an owner, a contract and a catalog entry, even if the catalog is a spreadsheet. Months 6 to 12: the platform team turns what the pilots did by hand into templates, CI checks and automated policy, and three to five more domains onboard. Year 2 and beyond: most domains publish, cross-domain products appear, and the platform team's job becomes lowering the cost of the next product. The four principles underneath, defined by Zhamak Dehghani, are domain-oriented decentralized ownership, data as a product, self-serve data infrastructure as a platform, and federated computational governance. The sequencing matters more than the tooling: let a domain feel the pain of publishing by hand before the platform team decides what to automate, because a platform built first gets built for imagined users.
1. What Is Data Mesh, and What Problem Does It Solve?
Data mesh is a sociotechnical approach to data architecture that decentralizes data ownership to domain teams. Created by Zhamak Dehghani at ThoughtWorks in 2019, it addresses the scaling challenges of centralized data platforms.
It solves one problem in particular, and it is worth stating narrowly because the wide version sells a reorganisation nobody needs. The problem is that a central data team has become the single queue every analytical request waits in, and adding people to that team has stopped shortening the queue. Mesh redistributes the work to the teams that already hold the context, so throughput grows with the number of domains rather than with the size of one team. It does not reduce the total amount of work, and it adds coordination cost. If your queue is short, you are buying the cost without the benefit.
The Problem Data Mesh Solves
Centralized data teams become bottlenecks. They don't have domain context, so they build wrong things. Domains wait months for data. The monolithic data lake becomes a data swamp. Sound familiar?
Centralized vs. Data Mesh Architecture
Centralized (traditional)
- • One data team owns all data
- • Domains throw data "over the wall"
- • Central team lacks domain context
- • Single monolithic data lake
- • Long queues for new data requests
- • Data team = bottleneck
Data mesh
- • Domains own their data products
- • Data treated as a product with SLAs
- • Domain experts build domain data
- • Federated, interoperable data products
- • Self-serve platform enables autonomy
- • Scales with organization
Data Mesh Topology
Domain A
Orders
Data Product
Domain B
Customers
Data Product
Domain C
Inventory
Data Product
Self-Serve Data Platform
Infrastructure • Tooling • Governance as Code
Federated Computational Governance
Global policies • Interoperability standards
Domains own data products, platform enables, governance ensures interoperability
Key insight
Data mesh is not just about technology, it's an organizational change. You're redistributing ownership, accountability, and skills. If you treat it as only a technical project, you'll fail.
2. The Four Principles of Data Mesh, and What Each One Costs You
Data mesh stands on four pillars. Miss one and the whole thing collapses. They work together as a system: domain ownership without a self-serve platform produces four incompatible ingestion stacks, and data as a product without federated governance produces datasets nobody can join. Each card below adds the part most summaries leave out, which is the bill that comes with the principle. For the principles on their own, in the order Dehghani stated them, see the four principles of data mesh.
1. Domain-Oriented Ownership
The teams that generate and understand the data own it. Marketing owns marketing data. Sales owns sales data. Domain experts become data product owners.
2. Data as a Product
Treat data like a product with consumers. It has SLAs, documentation, versioning, and a product owner. Data quality is the domain's responsibility, not a central team's problem to fix later.
3. Self-Serve Data Platform
A platform team builds infrastructure that domain teams use autonomously. Domains shouldn't need to understand Kubernetes or Spark, they just build data products.
4. Federated Computational Governance
Global policies (security, compliance, interoperability) are defined centrally but executed locally through automation. Governance is code, not meetings.
| Principle | Who's Responsible | Key Outcome |
|---|---|---|
| Domain Ownership | Domain teams | Contextual expertise, fast iteration |
| Data as Product | Data product owners | Quality, discoverability, trust |
| Self-Serve Platform | Platform team | Domain autonomy, reduced friction |
| Federated Governance | Governance + Platform | Compliance, interoperability |
3. Data Mesh Principles and Logical Architecture: Where the Model Comes From
Data mesh has a small, traceable canon: two articles and a book, all by Zhamak Dehghani. Knowing which text said what saves an argument, because half the disagreements about data mesh are people quoting different years. It also explains why searches for "fowler data mesh" return the same material: both articles were published on martinfowler.com, which is Martin Fowler's site, not because he wrote them.
May 2019: How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh
The original article, written while Dehghani was a director at ThoughtWorks. It names the failure mode (a centralized, monolithic lake owned by a hyper-specialized team disconnected from the domains) and proposes three principles: domain-oriented decentralization of data ownership and architecture, data as a product, and self-serve data infrastructure as a platform. Federated computational governance is not in this text. Most searches for a data mesh white paper are looking for this piece.
December 2020: Data Mesh Principles and Logical Architecture
The follow-up, roughly eighteen months later. It adds the fourth principle, federated computational governance, and it is the first text to draw the logical architecture: domains publishing data products through explicit interfaces, the self-serve platform split into planes rather than treated as one blob, and governance as a shared model with automated execution. Nearly every data mesh reference diagram published since is a redraw of this one.
2022: Data Mesh, Delivering Data-Driven Value at Scale (O'Reilly)
The book. It keeps the four principles and spends most of its length on the parts the articles left as sketches: how a data product is modelled as an independently deployable unit with its own code, data, metadata and infrastructure, how domains decompose, and how an organisation executes the change. If you only read one text before committing budget, read the December 2020 article; if you are going to run the programme, read the book.
The Vocabulary, So You Can Read the Source Texts
| Term | What it means in practice |
|---|---|
| Architectural quantum | The smallest thing you can deploy on its own and still have something useful. In a mesh that unit is the data product, which is why other write-ups call it a data product quantum. |
| Output port | The published interface of a data product: a table at a stable address, a topic, a file location, an API. Consumers depend on the port, never on the internals behind it. |
| Input port | Where a data product reads from: an operational database, an event stream, or another domain's output port. Reading another domain's internal tables is the boundary violation to watch for. |
| Polyseme | A concept several domains share and each models differently, customer being the classic case. The mesh does not force one model; it forces one global identifier so the models can be joined. |
| DATSIS | The shorthand for the data product checklist: discoverable, addressable, trustworthy, self-describing, interoperable, secure. Useful as a review gate, not as an architecture. |
| Consumer-aligned product | A product shaped for how it is read rather than for how it is produced, usually joining several source-aligned products. The reporting layer of a mesh is built from these. |
Why the date matters
Teams that read the 2019 article and stopped there build three-quarters of a mesh: domains own data, products get published, and eighteen months later nobody can join orders to customers because each domain minted its own identifier. The fourth principle exists because that outcome kept happening.
4. What a Data Product Has to Expose
A data product is not just a table. It's a self-contained, autonomous unit that includes data, code, infrastructure, and metadata, everything needed to deliver value to consumers.
Two of the eight characteristics below are where mesh implementations usually stall. Trustworthy means the producing domain publishes a data contract and is held to it, not that the table looked fine last quarter. Discoverable means the product is registered somewhere consumers already look, which is the job a data catalog does when it is fed automatically rather than by hand. If you want the unit itself pulled apart, ports and all, see what is a data product.
The Eight Characteristics of a Data Product
Discoverable
Listed in a data catalog. Consumers can find it without asking around.
Addressable
Has a stable, unique address (URI). Can be accessed programmatically.
Trustworthy
Has quality metrics, SLOs, and data contracts. Consumers know what to expect.
Self-describing
Schema, lineage, and documentation are built-in. No tribal knowledge needed.
Interoperable
Follows global standards for formats, identifiers, and semantics.
Secure
Access control, encryption, and audit logs. Compliant by default.
Natively accessible
Multiple access patterns: SQL, API, files. Meet consumers where they are.
Valuable on its own
Delivers business value independently. Not just a staging table.
Data Product Anatomy
Data
- • Source data
- • Transformed data
- • Historical snapshots
Code
- • Transformation logic
- • Quality tests
- • Pipeline definitions
Metadata
- • Schema definitions
- • Data contracts
- • Lineage info
Example: Data Product Manifest (YAML)
# orders-data-product/manifest.yaml name: orders domain: commerce owner: [email protected] version: 2.1.0 description: | Order transactions from all sales channels. Includes order items, totals, and fulfillment status. slo: freshness: 1h # Data no older than 1 hour availability: 99.9% # Uptime SLA quality_score: 95% # % of quality checks passing schema: type: delta location: s3://data-products/commerce/orders/ access: - sql: "SELECT * FROM commerce.orders" - api: "https://data.company.com/commerce/orders" lineage: sources: - system: shopify table: orders - system: pos table: transactions data_contract: primary_key: order_id not_null: [order_id, customer_id, order_date, total] quality_checks: - unique(order_id) - not_null(customer_id) - total >= 0 - order_date <= current_date()
Two fields in that manifest do most of the work and are the two most often left blank. The version, because without it a breaking change has nowhere to live and gets shipped as a silent alter table. And the owner, because an email address that resolves to a team, not a person who left in March, is the difference between a data product and an orphan. A useful rule for the platform team: refuse to register a product whose owner address does not resolve to a live group, and re-check it on a schedule.
Pro Tip
Start with Consumer-Aligned Data Products
Don't just publish your source tables. Think about what consumers need. An "Orders" data product might combine order, payment, and fulfillment data into a single, denormalized view that's easy to analyze.
5. The Self-Serve Data Platform: Three Planes, and Who Builds What
The platform is what makes domain ownership feasible. Without it, every domain would reinvent infrastructure, and you'd have chaos. The platform provides opinionated abstractions that reduce cognitive load.
The December 2020 article is where the platform stops being one word and becomes three planes, and the split is worth keeping because it tells you which work to do first.
Plane 1: infrastructure provisioning
Storage buckets, compute, identity, networking, secrets. The raw substrate. Almost no domain engineer should ever open this plane directly; if they do, the platform is not finished. Most organisations already have this plane from their cloud team and mistake it for the whole platform.
Plane 2: data product developer experience
The plane a domain engineer actually touches: a declarative data product spec, a template that scaffolds a repository, a command that deploys it, tests that run in CI, automatic registration in the catalog. This plane decides adoption. If publishing a second data product still takes a fortnight and a favour from the platform team, the mesh will stop at the pilot domains.
Plane 3: mesh supervision
The cross-cutting view nobody has in a monolith: search across every product, lineage that crosses domain boundaries, mesh-wide SLO status, policy compliance per product. This plane is what a governance group reads, and it is usually built last, which is why governance discussions in year one run on screenshots.
Platform Capabilities
Data Infrastructure
Storage (S3, Delta Lake), compute (Spark, dbt), orchestration (Airflow, Dagster). Domains use, platform manages.
Data Product Templates
Cookiecutter templates for new data products. Pre-wired CI/CD, quality checks, catalog registration. Spin up in minutes, not weeks.
Data Catalog & Discovery
Central catalog (DataHub, Atlan, Collibra) where all data products are registered. Search, browse, understand lineage.
Access Control & Security
Centralized identity, role-based access, encryption. Domains define who can access; platform enforces.
Observability & Monitoring
Pipeline monitoring, data quality dashboards, SLO tracking. Domains see health; platform aggregates org-wide.
| Component | Platform Provides | Domain Does |
|---|---|---|
| Storage | S3 buckets, Delta tables, policies | Writes data to provided paths |
| Compute | Spark clusters, dbt environments | Runs transformations |
| Pipelines | Airflow/Dagster infrastructure | Defines DAGs, schedules |
| Quality | Testing framework, dashboards | Writes tests, sets thresholds |
| Catalog | DataHub/Atlan instance | Registers products, adds docs |
| Mesh map | One current diagram of domains, products and flows | Tells the platform when a product is published or retired |
That last row is the one platform teams forget. The mesh map is a real platform deliverable: every onboarding conversation, every architecture review and every audit starts with someone asking which domains publish what. It also goes stale faster than anything else you own, because it changes every time a domain ships. Datadef is built for that case: you describe the mesh in a sentence, edit the canvas, and drop a live embed into the platform README, Confluence and Notion with one markdown line, so onboarding a seventh domain is one edit instead of five stale copies. If you want to see the shape first, generate a data mesh diagram and rearrange it.
Platform is not the central data team under a new name
The platform team builds infrastructure and tooling, not data products. If your platform team is still building domain data, you haven't actually decentralized. They enable, they don't execute. A blunt test: count the pull requests the platform team opened last month in a domain repository. If that number is large, the mesh is a diagram.
6. Federated Computational Governance: Who Decides What
Decentralization without governance leads to chaos. Federated governance provides global standards with local autonomy. Policies are defined centrally but enforced automatically through code.
The federated part is what makes this different from a central committee, but the underlying policy set is the same one any organisation needs. If you have not written those policies down yet, start from a data governance framework and then decide which rules the platform enforces automatically and which each domain owns. Enforcement without visibility into where a field travels is guesswork, so most teams pair it with column-level data lineage before they start blocking merges. The full operating model is in federated computational governance.
How the Group Is Actually Composed
One representative per domain, plus the platform lead, plus whoever owns privacy and security. Two rules keep it from turning into the committee it replaced. First, the people sent must be able to decide in the room, not report back; a group of messengers meets twice as often and decides half as much. Second, the group sets rules, it does not approve products. The moment a data product needs the group's sign-off to ship, you have rebuilt the queue in a nicer meeting room.
Give every rule a lifecycle: proposed as a pull request against a policy repository, with a named owner, a date it becomes mandatory, and an automated check written before that date. A rule with no check is a suggestion, and suggestions accumulate until nobody can say what the standard is. When a rule cannot be automated, say so explicitly and put it in a shorter list of things humans review, so the exception stays visible.
What Gets Governed Globally
Interoperability Standards
- • Naming conventions (snake_case, prefixes)
- • Global identifiers (customer_id format)
- • Date/time formats (UTC, ISO 8601)
- • Schema evolution rules
Security & Compliance
- • PII handling (masking, encryption)
- • Access control patterns
- • Retention policies
- • Audit logging requirements
Quality Standards
- • Minimum SLO requirements
- • Required quality checks
- • Documentation standards
- • Data contract format
What Domains Decide
- • Data product design
- • Business logic
- • Update frequency (above SLO)
- • Consumer-specific access grants
The test for a candidate rule
Would breaking it hurt another domain? If yes, it is global. If it only hurts the owning domain, it is a local standard and belongs in that domain's code review, not in the policy repository. Governance bodies grow bureaucratic by failing this test in one direction only, and the polyseme cases (customer, product, account) are where failing it in the other direction is expensive.
Computational means governance as code
Example: Policy as Code (OPA/Rego)
# governance/policies/data_product.rego
package dataproduct
# All data products must have an owner
deny[msg] {
not input.manifest.owner
msg := "Data product must have an owner defined"
}
# PII columns must be tagged
deny[msg] {
column := input.schema.columns[_]
column.pii == true
not column.tags["pii"]
msg := sprintf("PII column %v must be tagged", [column.name])
}
# SLO freshness must be defined
deny[msg] {
not input.manifest.slo.freshness
msg := "Data product must define freshness SLO"
}
# Minimum documentation required
deny[msg] {
count(input.manifest.description) < 50
msg := "Data product description must be at least 50 characters"
}Pro Tip
Governance in CI/CD, Not Meetings
Every data product PR runs through policy checks. Non-compliant? Build fails. No need for approval committees. The platform enforces standards automatically. Humans review exceptions, not routine compliance. Ship each new rule as a warning for one release before it blocks, or the first policy you add will stop every pipeline in the mesh on a Monday morning.
7. How to Implement Data Mesh: The Four-Phase Rollout
Data mesh is a multi-year journey. Don't try to boil the ocean. Start small, prove value, expand.
Phase 1: Foundation (Months 1-3)
Get executive buy-in. Identify 1-2 pilot domains. Define minimum governance standards.
- • Select pilot domains with motivated teams
- • Document current state and pain points
- • Define what "data product" means for your org
- • Identify platform team (or hire)
Phase 2: First Data Products (Months 3-6)
Pilot domains build their first data products. Platform provides minimum viable infrastructure.
- • Build 2-3 data products per pilot domain
- • Deploy basic catalog (even a spreadsheet works)
- • Establish data product template
- • Document learnings and iterate
Phase 3: Platform Maturity (Months 6-12)
Platform team productizes learnings. Self-serve capabilities emerge. More domains onboard.
- • Implement proper data catalog
- • Build data product CI/CD pipeline
- • Automate governance checks
- • Onboard 3-5 additional domains
Phase 4: Scale (Year 2+)
Org-wide adoption. Platform is mature. Focus shifts to optimization and advanced capabilities.
- • All domains producing data products
- • Cross-domain data products emerge
- • Marketplace of data products
- • Continuous platform improvement
The First 90 Days, Week by Week
Phase 1 is where most programmes lose a quarter to workshops. This is the version that ends with something running.
| Weeks | What you do | What you have at the end |
|---|---|---|
| 1-2 | Measure the queue. Export every analytical request from the last two quarters, tag each one with the domain it belongs to and the days it waited. | A number to defend the programme with, and the ranked list of domains generating the wait. |
| 3-4 | Pick two pilot domains: high request volume, an engineering team that already ships, and a leader who volunteered rather than was assigned. | Two named domains, two named data product owners, one named platform lead. |
| 5-8 | Write the definition of done for a data product, in one page, and agree the three or four global rules enforced from day one: identifier format, PII classification, naming, minimum freshness. | A checklist a domain engineer can follow without a meeting, and a policy repository with four rules in it. |
| 9-12 | One domain publishes one data product to production, by hand, on existing infrastructure, with a real consumer switched over to it. | A working example, a list of everything that was painful, and the first honest backlog for the platform team. |
Definition of Done for the First Data Product
A named owning team
A group address that resolves, not an individual. It goes in the manifest and in the catalog.
A stable output port
One address consumers depend on. Renaming it later is a versioned change, not a refactor.
A published schema and contract
Column names, types, nullability, primary key, and what the producer promises not to break.
A freshness and availability SLO
Written as numbers, not adjectives. Data no older than one hour, 99.9% of days, beats "near real time".
Quality checks running in CI
Uniqueness of the key, not-null on required fields, and one business rule the domain actually cares about.
A catalog entry
Discoverable without asking anyone. A spreadsheet counts in month three; it does not count in month twelve.
A documented access path
How a consumer requests access, who approves, how long it takes. Undocumented access is where the mesh silently recentralizes.
Lineage back to sources
Which systems it reads and which products it depends on, so a change upstream has a blast radius you can look up.
A version and a deprecation rule
How a breaking change is announced and how long the old version stays. Decide it before you need it.
One real consumer in production
The only proof that matters. A data product with no consumer is a pipeline with better documentation.
Who Is on the Hook: Roles and Responsibilities
| Role | Usual shape | Accountable for |
|---|---|---|
| Data product owner | An existing domain product manager or lead, part time | What gets published, the roadmap, the service level promised, and telling consumers before it changes |
| Domain data engineer | One or two per publishing domain, hired or embedded from the old central team | The pipeline, the tests, the deployment, and the pager when freshness is missed |
| Platform engineer | A small dedicated team, growing slower than the number of domains | Templates, deployment, catalog, access control, observability, and the cost of the next data product |
| Governance representative | One person per domain, a few hours a month | Proposing and agreeing global rules, and carrying them back into their own domain |
| Consumer | Analysts, ML teams, other domains | Depending on published ports rather than internals, and reporting breakage to the owner instead of routing around it |
The Four Numbers That Show It Is Working
Lead time to a new data product
From the decision to publish to a consumer using it. It should fall by phase 3. If it does not, the developer experience plane is not real yet.
Share of products meeting their SLO
Measured by the platform, not self-reported. A mesh with 40 products and no SLO reporting is 40 unverified promises.
Requests still landing on the platform team
Count the ones that are really domain work. This is the recentralization alarm, and it rings before anyone admits it.
Cross-domain joins that work first time
The direct test of federated governance. When identifiers drift, this number falls long before anyone files a ticket.
From experience
The biggest mistake I see: starting with the platform. Don't build a beautiful self-serve platform and then try to find users. Start with domains building data products manually. Let their pain drive platform requirements.
8. Migrating Off a Central Warehouse Without Freezing It
Nobody implements a mesh on an empty page. There is a warehouse, it has several hundred models, and it is running the business this quarter. The migration question is not how to rebuild it, it is how to move ownership one product at a time while both systems answer queries. The pattern that works is the strangler: leave the old thing serving traffic, put the new thing in front of one route at a time, and retire the old route only after the last consumer has moved.
Step 1: rank the central models by consumption, not by size
Pull query logs and count distinct readers per model over 90 days. The top of that list is what to migrate first, because it is where ownership actually hurts. The bottom of the list is usually long, and most of it has no readers at all.
Step 2: assign each model to a domain by bounded context
Not by source system and not by warehouse schema, both of which encode the old org chart. The question is which team owns the business capability the data describes, and would notice if it were wrong. Models that split across two domains are usually a consumer-aligned product waiting to be named, and they go to whichever domain owns the decision the data supports. Detail in data mesh domain ownership.
Step 3: republish, then redirect
The domain publishes the model as a data product at a new address, with the same output shape at first so nothing breaks. Then the old central model becomes a view over the new product. Consumers keep working while they migrate, and you can see exactly who is still reading the old address before you delete it.
Step 4: publish the unclaimed list and set a deadline
Every warehouse has models no domain will claim. Put them on a list with a date. Anything unclaimed by that date is deprecated rather than migrated. This is the single largest scope reduction available in a mesh programme, and skipping it is how a two-year plan becomes a four-year plan.
The central warehouse does not have to die
Finance and executive reporting usually want one reconciled place with one definition of revenue. That is a legitimate consumer-aligned data product, owned by a domain, built from other domains' output ports. Keeping it is not a failure of the mesh, it is the mesh working. What has to end is the central team building everyone else's data.
9. Data Mesh on Kafka: What Changes When the Output Port Is a Topic
The mesh principles do not change on a streaming platform, but four practical things do. This is the version of data mesh Confluent writes about, where a topic is the published interface of a data product and stream governance carries the shared plane.
| Concept | Batch mesh | Streaming mesh |
|---|---|---|
| Output port | A table at a stable address | A topic with a naming convention that encodes domain and version |
| Contract | A schema file plus tests in the repository | A subject in a schema registry with a compatibility mode set, so an incompatible change is rejected at publish time |
| Freshness SLO | Time since the last successful run | Consumer lag, which is a live number the platform can alert on rather than a schedule |
| Derived products | A downstream model in the same warehouse | A stream processing job reading one domain's topic and publishing its own, with its own owner and contract |
Most products need two ports, not one
The topic serves services and stream processors. Analysts write SQL, and they will not learn otherwise. A streaming data product usually publishes both a topic and a table materialised from it, as two output ports of one product with one owner and one contract. Two products with two owners is how the numbers start disagreeing.
A raw change-data-capture topic is not a data product
Streaming every table of a domain database into Kafka publishes that domain's internal model, column renames and all, to everyone. It is fast to set up and it recreates the coupling the mesh exists to remove. The product is a deliberately designed public event, produced from the change stream, versioned separately from the database schema.
Compatibility mode is a governance decision, not a default
Whether a subject allows backward, forward or full compatibility decides who breaks when a field changes. Pick it once, globally, put it in the policy repository, and have the platform apply it when a subject is created. Left to each team, you get a mesh where half the topics can be evolved and half cannot, and nobody knows which. The neighbouring question is covered in data contract versus schema registry.
10. Data Mesh Topologies, and the Patterns It Gets Confused With
Stated as a pattern: a data mesh is a set of independently deployable data products, each owned by the domain that produces it, discoverable through a shared catalog, joinable on globally agreed identifiers, running on a shared self-serve platform, under rules the platform enforces in code. What makes it decentralized is where the models and the pipelines are owned, not where the bytes live. A mesh can run entirely inside one warehouse account, and a company can have data in nine databases and no mesh at all. Reading a distributed data mesh as a claim about storage systems is the most common way the pattern gets misapplied, usually by a team that ends up buying infrastructure instead of moving ownership.
Three Topologies You Will Actually See
Source-aligned mesh with a central consumer layer
Domains publish source-aligned products, and one team owns a small number of consumer-aligned products for company-wide reporting. The most common shape in the first two years, and a reasonable end state. The risk is that the consumer layer quietly grows back into the old central team, which the metrics in section 7 will show before anyone says it out loud.
Fully domain-owned, including consumer-aligned products
Cross-domain products are owned by the domain that owns the decision they support, for example a marketing attribution product built from checkout and campaign ports. It needs a mature developer experience plane, because building a product from three other domains has to be routine rather than a project.
Mesh on paper
Domains are named on a slide, engineers are relabelled as domain teams, and the central team still writes the pipelines and still holds the pager. Everything is renamed and nothing moved. This is not a topology so much as the outcome of skipping the capacity question, and it is the most frequently reached state.
Data Mesh Compared to Neighbouring Patterns
| Pattern | Who owns the models | Who owns the infrastructure | How it fails |
|---|---|---|---|
| Monolithic warehouse or lake | Central data team | Central data team | The queue, and models nobody in the domain recognises |
| Hub and spoke | Analysts embedded in business units, on central models | Central platform team | Five versions of revenue, because ownership was delegated without contracts |
| Data mesh | Domain teams, as versioned products | Platform team, as self-serve capabilities | Domains with no capacity, and governance that never became code |
| Data fabric | Unchanged, whoever owned them before | Central, with metadata automation across sources | Better search over the same unowned data, sold as a reorganisation |
Mesh and fabric are not alternatives in the way vendor comparisons imply. A fabric automates metadata, discovery and integration across whatever exists. A mesh changes who is accountable for what is published. Adding a fabric to an organisation with no ownership gives you a well-indexed swamp, and running a mesh without automated metadata gives you products people cannot find. Most real platforms end up with both, and only one of them requires a reorganisation.
11. Anti-Patterns That Quietly Rebuild the Central Team
Data mesh as a technology project
Buying tools without changing org structure. Data mesh is sociotechnical, org change comes first, tech supports it.
Central team still builds domain data
Calling embedded engineers "domain teams" but they still report to central. True ownership means domains are accountable.
No platform, just decentralization
Telling domains "you own your data now" without giving them tools. Results in duplication, chaos, and burnout.
Governance by committee
Monthly data governance meetings instead of automated checks. Policies that exist in documents, not in code.
Every table is a data product
Publishing staging tables and calling them products. Data products should deliver business value, not just expose data.
Ignoring organizational change management
Expecting domains to embrace ownership without training, incentives, and career paths for data skills.
A pilot domain that was volunteered by someone else
A domain lead assigned to the pilot rather than asking for it will comply, ship one product, and quietly stop. Pick the team that wants the autonomy, even if their data matters less.
Shipping the platform before anyone has published by hand
A developer experience plane designed from imagined requirements automates the parts that were never painful and misses the two that were.
Products with no named consumer
A domain publishing everything it has, because publishing was made cheap, produces a catalog nobody trusts. One consumer in production is the entry price.
Reality Check
Is Data Mesh Right for You?
Data mesh may not be the answer if: you have fewer than 50 people, a single product or domain, a working central team, or leadership that won't support org change. It's a solution for scaling challenges, if you don't have scale problems, a well-run central team might be fine. The six-question version of this test is in is data mesh right for your team.
12. The Data Mesh Questions to Settle Before the First Domain
These come up in the same order in every programme, usually from someone who controls budget. Having an answer ready is most of the difference between a mandate and a pilot that dies in month five.
What happens to the central data team?
It splits. Some become the platform team, some embed into domains as the first data engineer there, and a small group usually keeps the consumer-aligned reporting product. Nobody is made redundant by a mesh, but almost everyone changes what they do, and saying that early prevents the quiet resistance that kills phase 2.
What if a domain refuses to own its data?
Then it does not get a data product, and its data stays where it is until the refusal costs it something. Forcing ownership onto a team with no capacity produces an unmaintained product and a bad story that spreads. A mesh with four willing domains and three holdouts is a working mesh; a mesh with seven mandated domains is usually seven half-built pipelines.
Who gets paged at 3am when a dashboard is empty?
The owning domain, for their product, on their existing rotation. This is the single most contested sentence of any mesh rollout, and answering it vaguely means the platform team keeps the pager and therefore keeps the ownership. Extend the domain rotation, do not create a separate data on-call beside it.
Why would a domain publish well when nothing rewards it?
This is the incentive problem, and it is the one nobody solves with architecture. The workable answers are making SLO compliance visible per domain, giving the data product owner role real standing in the domain, and letting a domain see who consumes its products. Publishing quality follows visibility more reliably than it follows policy.
How do we justify running two systems for two years?
You cannot avoid the overlap, so plan for it rather than discovering it. The lever that shortens it is the unclaimed list from section 8: the faster you deprecate models nobody reads, the sooner the old warehouse gets small enough to be one product rather than a platform.
13. Frequently Asked Questions
What is data mesh?
Data mesh is a decentralized approach to analytical data in which the domain teams that produce data also own, publish and support it, instead of handing it to a central data team. It rests on four principles: domain-oriented decentralized ownership, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Zhamak Dehghani defined it at ThoughtWorks in 2019.
How do you implement data mesh?
Start with two pilot domains rather than with a platform. Months 1 to 3, write down what a data product means in your organisation and staff a platform team. Months 3 to 6, the pilots publish two or three real products on the infrastructure that already exists. Months 6 to 12, the platform team turns what they did by hand into templates and automated policy checks, and three to five more domains onboard.
What are the four principles of data mesh?
Domain-oriented decentralized data ownership, where the team closest to a business capability owns its analytical data. Data as a product, where each published dataset has an owner, documentation and a service level. Self-serve data infrastructure as a platform, so domains do not each build a stack. Federated computational governance, where cross-domain rules are agreed together and executed by the platform as code.
Who invented data mesh?
Zhamak Dehghani, then a director at ThoughtWorks, introduced data mesh in an article published on martinfowler.com in May 2019, titled How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh. She followed it in December 2020 with Data Mesh Principles and Logical Architecture, and in 2022 with the O'Reilly book Data Mesh: Delivering Data-Driven Value at Scale.
What did the Data Mesh Principles and Logical Architecture article add?
The December 2020 article added the fourth principle, federated computational governance, which was not in the 2019 original. It also set out the logical architecture: domains publishing data products through explicit interfaces, a self-serve platform split into planes, and a governance model shared across domains. Most later data mesh reference diagrams are redrawn from it.
How long does a data mesh implementation take?
Plan on twelve months to get past the pilot and two to three years before most domains publish. The first data product usually lands three to six months in, and it lands late because the organisational work runs first: naming owners, agreeing what a data product includes, and funding a platform team. Tooling is rarely the constraint.
What problems does data mesh solve?
One problem, specifically: a central data team has become the queue every analytical request waits in, and hiring into that team no longer shortens the queue. Data mesh moves the work to the domains that already hold the context, so throughput scales with the number of teams instead of the size of one team. It does not reduce the total amount of work.
What is the difference between data mesh and data fabric?
Data mesh is an organizational and architectural approach focused on decentralization and domain ownership. Data fabric is a technology-centric approach using metadata and automation to create a unified data layer. Data mesh changes who is accountable for data; data fabric changes how metadata is collected and applied. They can run together, and a fabric does not decentralize anything on its own.
What is a data product in data mesh?
A data product is code, data, metadata and infrastructure shipped and versioned as one unit, exposed through named ports, owned by a named team, and carrying a service level a consumer can quote back at you. The usual checklist is discoverable, addressable, trustworthy, self-describing, interoperable and secure. A table sitting in a shared schema is not a data product.
How does data mesh work with Kafka?
A streaming data product publishes a topic as its output port, and the contract lives in a schema registry with a compatibility mode set so consumers do not break on the next release. Freshness becomes consumer lag rather than a batch schedule. Confluent frames data mesh this way. Most products still need a table beside the topic, because analysts query SQL, and raw change-data-capture topics are not data products.
What are the biggest data mesh challenges?
Domains with no engineering capacity, which turns ownership into a transfer of blame. Domains with no consumers, which produces products nobody reads. Incentives, because nobody is rewarded for publishing well. And the long middle period where the mesh and the old warehouse both run, both cost money and neither is finished. That last one is where most programmes stall.
When should you not use data mesh?
Data mesh may not be right if: your organization has fewer than 50 people, you have a single domain or product, your central data team is keeping up, you lack the engineering maturity to run a self-serve platform, or leadership will not back an organizational change. Data mesh is a reorganization with an architecture attached, not a tooling decision.
Visualize Your Data Mesh Architecture
Map your domains, data products, and platform components. Create clear diagrams that communicate your data mesh vision to stakeholders and teams.
Related Guides
The Four Principles
Each principle, and what it asks of you on Monday morning
Domain Ownership
Where the boundaries go, and what stays central
What Is a Data Product
Ports, owner, version and the service level
Federated Governance
Rules as code instead of another committee
Data Contracts
Define data product interfaces and guarantees
Medallion Architecture
Bronze, Silver, Gold layers within your data products
Dimensional Modeling
Design data products that analysts love
Data Quality Best Practices
Build data quality into your data products
Data Lineage Best Practices
Track data flow across domains and products