Distribute data ownership to domain teams treating data as a product, connected by a self-serve platform and governed by federated standards.
Sources: Dehghani "Data Mesh" O'Reilly (2022); Dehghani martinfowler.com (2019); Thoughtworks Technology Radar (data mesh as Adopt since 2021)
-
Identify domain boundaries — Map your organization's business domains (Sales, Inventory, Logistics, Finance). Each domain that generates data and consumes data from others is a candidate data owner. Boundaries should align with Conway's Law: how your teams are organized determines where domain boundaries are.
-
Define data products for each domain — A data product is the unit of data ownership. Each domain exposes its data as a product: analytical datasets (Parquet/Delta Lake files), APIs (REST/GraphQL), events (Kafka topics), or semantic models (dbt models). A data product has: a clear owner, an SLA, a schema, and a quality contract.
-
Apply data product thinking — Data products must satisfy: discoverability (searchable in a catalog), addressability (stable URI/identifier), trustworthiness (SLAs on freshness and quality), self-describing (schema, lineage, documentation), interoperable (standard formats), and secure (access-controlled). These are Dehghani's six characteristics of data products.
-
Build a self-serve data platform — Domain teams cannot own data products if they need a central team to provision storage, compute, and pipelines. The platform team provides: infrastructure-as-code templates for common patterns (dbt + Snowflake, Spark + Delta Lake), CI/CD templates for data pipelines, monitoring templates, and a data catalog. Platform is a product for internal domain teams.
-
Establish a data catalog — All data products must be discoverable. Implement a data catalog (Apache Atlas, DataHub, Amundsen, AWS Glue Data Catalog) where every data product is registered with: owner, schema, lineage, SLA, access policy, and sample data. Without discoverability, data products are invisible and unused.
-
Design federated data governance — Governance is not centralized; it is federated. The central data governance team defines: global standards (naming conventions, data classification, privacy requirements), interoperability contracts (common schemas for shared concepts like Customer), and quality thresholds (minimum SLA requirements for published data products). Domain teams implement governance standards in their products.
-
Implement data contracts — A data contract is a formal agreement between a data producer and consumer: schema, SLA (freshness, availability, quality metrics), change management process (deprecation notice period), and owner contact. Tools: DataContract CLI, Soda Core, or dbt contracts. Data contracts enforce the same discipline as API contracts for analytical data.
-
Design for data lineage — Every data product must expose its upstream dependencies and downstream consumers. Implement lineage tracking at the platform level (OpenLineage, Marquez). Lineage enables impact analysis: "Which data products are affected if the Orders table schema changes?" Without lineage, cross-product dependencies are invisible.