Centralized data warehouses and data lakes served the enterprise world for two decades. But in an era where business demands real-time decision-making, monolithic data architecture falls short. Real-time data mesh is the answer — and it is not just a buzzword.
What Is Data Mesh and Why Real-Time¶
Data Mesh is an architectural paradigm that shifts data ownership from a central data team to domain teams that produce and best understand the data. Zhamak Dehghani introduced the concept in 2019, but only in the last two years have we gained the tools and experience to implement it with a streaming layer.
Why real-time? Because batch ETL with daily lag is insufficient for a growing number of use cases. Fraud detection, real-time personalization, supply chain monitoring, operational dashboards — all require data in seconds, not hours.
The 4 Principles of Data Mesh¶
- Domain ownership: Each team owns its data end-to-end — from production through quality to publication. Marketing owns marketing data, logistics owns logistics data.
- Data as a product: Data is not a byproduct of applications but a first-class product. It has SLAs, documentation, semantic versioning, and an owner.
- Self-serve data platform: The infrastructure team provides a platform that enables domain teams to publish and consume data products without needing deep Kafka or Flink expertise.
- Federated computational governance: Global rules (naming conventions, security, interoperability) are enforced automatically, but decision-making authority stays with the domains.
The Real-Time Streaming Layer¶
At the heart of a real-time data mesh is the streaming platform. In practice, this means:
- Apache Kafka as the backbone event bus — each domain publishes events to its own topics
- Apache Flink for stream processing — transformations, aggregations, windowing in real time
- Debezium CDC (Change Data Capture) — captures changes in existing databases and publishes them as events, with no changes to application code
Topic naming conventions are critical for governance. We use the format:
<domain>.<entity>.<version>.<event-type>
# Examples:
logistics.shipment.v2.status-changed
billing.invoice.v1.created
crm.customer.v3.profile-updated
Data Contracts — The Foundation of Interoperability¶
Every data product must have an explicit contract. We define it as YAML and version it in git alongside the domain code:
# data-contract.yaml
domain: logistics
product: shipment-events
version: "2.1"
owner: [email protected]
sla:
freshness: 30s
availability: 99.9%
schema:
type: avro
registry: https://schema-registry.internal/logistics/shipment/v2
fields:
- name: shipment_id
type: string
pii: false
- name: status
type: enum
values: [created, in_transit, delivered, returned]
- name: updated_at
type: timestamp
description: "ISO 8601, always UTC"
Comparison with Centralized Architecture¶
| Aspect | Centralized DWH/Lake | Real-Time Data Mesh |
|---|---|---|
| Latency | Hours to days | Seconds |
| Data ownership | Central team | Domain teams |
| Team scaling | Bottleneck on data team | Independent scaling |
| Governance | Top-down, manual | Federated, automated |
| New source onboarding | Weeks (ETL development) | Days (self-serve) |
Practical Experience and Recommendations¶
After several enterprise implementations, we have a clear picture of what works:
Start small. A data mesh does not appear overnight. Pick 2-3 domains with a clear real-time use case and build the platform iteratively.
Invest in the platform, not pipelines. The most common mistake is building custom streaming pipelines for each domain. Instead, build a self-serve platform with templates, CI/CD for data contracts, and automatic Kafka topic provisioning.
Schema registry is mandatory. Without a central schema registry with compatibility rules (backward/forward compatibility), your mesh will fall apart at the first breaking change.
Observability from day one. Every data product must have metrics: lag, throughput, error rate, freshness. If you do not know that data is flowing with delay, you do not have a real-time architecture — you have an illusion.
Real-time data mesh is not simple. But for organizations with more than 5 data domains and growing demands for data velocity, it is an investment that pays back within months.
Our Experience: Data Mesh for a Retail Group¶
For a retail group, we implemented a data mesh architecture with a real-time streaming layer. Concrete results:
- 8 domain teams — each with ownership of their data products and self-serve platform access
- Kafka-based data products + Datahub catalog — central discovery and governance over federated data
- Time-to-insight from 3 weeks to 2 days — self-serve access eliminated the bottleneck on the central data team
- Data quality score from 72% to 96% — automated quality checks as part of data contracts
- Self-serve adoption 80% in 6 months — domain teams actively publish and consume data products
Need help with implementation?
Our experts can help with design, implementation, and operations. From architecture to production.
Contact us