This chapter covers the core features and capabilities of Data Mesh Starter Kit.
The Data Mesh Starter Kit is a comprehensive, practitioner-focused toolkit for organizations transitioning from centralized data architectures to a domain-oriented data mesh. It provides assessments, workshop templates, Terraform infrastructure modules, governance frameworks, and communication templates β everything a data engineering team needs to plan, execute, and sustain a data mesh adoption.
This kit is designed for:
| File | Description |
|---|---|
assessment/maturity_assessment.md | 50-question data mesh maturity assessment with scoring rubric across 5 capability dimensions |
assessment/scoring_calculator.py | Python CLI tool that calculates maturity scores, generates radar charts, and produces recommendations |
| File | Description |
|---|---|
workshops/domain_decomposition.md | Facilitated workshop for identifying domain boundaries, data product candidates, and ownership mapping |
workshops/stakeholder_alignment.md | Workshop template for building consensus on data mesh adoption across leadership and engineering |
| File | Description |
|---|---|
terraform/domain-workspace/main.tf | Terraform module for provisioning isolated domain workspaces with storage, compute, catalog, and access controls |
terraform/domain-workspace/variables.tf | Configurable variables for cloud provider, domain naming, resource sizing, and tagging |
terraform/domain-workspace/outputs.tf | Module outputs for integration with CI/CD pipelines and service catalogs |
| File | Description |
|---|---|
templates/data_product_template.py | Standardized data product interface for Databricks notebooks with schema contracts, SLA definitions, and quality checks |
templates/data_product_scorecard.md | Quality scorecard for evaluating data products across discoverability, usability, trustworthiness, and interoperability |
| File | Description |
|---|---|
governance/federated_governance_model.md | Federated governance framework balancing central standards with domain autonomy |
governance/platform_team_responsibilities.md | Platform team role definitions, RACI matrix, and interface contracts with domain teams |
| File | Description |
|---|---|
communication/data_product_catalog.md | Template for publishing and communicating data products in an internal catalog |
communication/domain_agreements.md | Domain agreement and SLA templates for producer-consumer relationships |
| File | Description |
|---|---|
case_study/transition_case_study.md | Fictional but realistic case study of a mid-size organization transitioning from centralized data to data mesh |
A data mesh distributes data ownership to the teams that understand the business while retaining shared standards. A domain is a durable business capability such as orders, fulfillment, or customer support. A data product is a domain-owned, discoverable dataset or interface with an explicit contract, owner, quality controls, and service expectations. Federated governance means a central group defines interoperable policiesβsecurity, naming, metadata, and minimum qualityβwhile domain teams decide how to implement and operate their products.
Start with one valuable, bounded domain rather than reorganizing the entire company. The kitβs assessment, workshops, infrastructure module, product template, scorecard, and agreements form a practical path from discovery to a working pilot.
Run assessment/maturity_assessment.md and use assessment/scoring_calculator.py to identify readiness gaps. Then facilitate workshops/domain_decomposition.md with a domain lead, data producer, likely consumers, platform engineer, and governance representative. Select a domain that has clear ownership, recurring demand, accessible source data, and a measurable pain point.
Capture the result in a small domain definition:
domain:
id: orders
display_name: Order Management
purpose: Own the lifecycle from accepted order to fulfillment handoff
owner:
team: commerce-operations
contact: commerce-ops@example.org
source_systems:
- order-service
- payment-events
environments: [dev, staging, prod]
governance:
classification: confidential
retention_days: 2555Review boundaries explicitly. For example, Orders may own order status, while Payments owns authorization outcomes and Customer owns identity. Record those producer-consumer expectations with communication/domain_agreements.md; this prevents shared tables from becoming ownerless.
Copy terraform/domain-workspace/ into your infrastructure repository and supply organization-specific networking, identity, state backend, tags, and naming conventions. Review the plan before applying:
cd terraform/domain-workspace
terraform init
terraform plan \
-var="domain_name=orders" \
-var="environment=dev" \
-out=orders-dev.tfplan
terraform apply orders-dev.tfplanUse separate state and credentials for each environment. The central platform team owns the reusable module and guardrails; the domain team owns its declared resources and products. Do not use the example defaults as production security policy.
Choose one consumer outcome, such as βdaily fulfilled orders for finance reconciliation.β Fork templates/data_product_template.py and fill in its schema contract, SLA, ownership, and quality checks. Keep transformations version-controlled and make failures visible to the owning team.
Create a product descriptor beside the implementation:
data_product:
id: orders.fulfilled_orders
name: Fulfilled Orders
owner: commerce-operations
interface:
type: delta-table
identifier: prod_orders.gold.fulfilled_orders
contract:
primary_key: [order_id]
refresh: "0 6 * * *"
freshness_hours: 8
schema_version: 1.0.0
quality:
- rule: order_id IS NOT NULL
- rule: fulfilled_at <= current_timestamp()
consumers: [finance, customer-support]Run the product against representative dev data, validate access as a consumer, and score it with templates/data_product_scorecard.md. A product is not ready merely because its table exists: consumers must be able to find, understand, request, and safely use it.
Use communication/data_product_catalog.md as the catalog entry template. If your catalog supports repository ingestion, commit one descriptor per product and configure its discovery job to scan for those files. Otherwise, copy the same metadata into Unity Catalog, your enterprise catalog, or an internal portal.
catalog_entry:
product_id: orders.fulfilled_orders
description: One row per fulfilled customer order
documentation: https://docs.example.org/data/orders/fulfilled-orders
tags: [orders, finance, certified]
access_request: https://access.example.org/products/orders.fulfilled_orders
support_channel: "#data-orders"
last_reviewed: 2026-07-30Run discovery and confirm the product is searchable by name and tag, its owner and SLA appear, lineage points to real sources, and the access link works for a test consumer. Treat missing metadata as a release failure.
Operate the pilot for several refresh cycles. Track freshness, quality failures, access-request lead time, adoption, and support load. Use governance/federated_governance_model.md to agree which policies are global and governance/platform_team_responsibilities.md to establish a RACI. After the first product meets its SLA and has active consumers, add a second product in the same domain before expanding to another domain. Feed lessons back into the Terraform module, templates, scorecard, and agreements so each new domain starts with a stronger paved road.
Get the full Data Mesh Starter Kit and unlock everything.
Get the complete guide with every chapter unlocked, including code samples, diagrams, and best practices.
Access all interactive tools with complete data, all workload profiles, and the full scenario library.
Downloadable source code, configuration files, and working examples from every chapter.
Free updates for life. Every new chapter, tool, and improvement included.