Data Mesh Architecture on Object Storage Backends
Decentralized data ownership requires storage boundaries that teams can control independently.
Sponsored by Archil

Data mesh architecture on object storage backends keeps two jobs separate: who owns the data and how that ownership is enforced. Object storage lets domains own data at scale, but buckets cannot take responsibility for it. For teams that need local-folder access, a POSIX filesystem layer over the domain bucket is one access option, with the bucket remaining the source of truth.
Why centralized data architectures break down at scale
A single data engineering team cannot hold the working knowledge of hundreds of source systems, each with its own schedule, schema, and format. Yet centralized architectures ask that team to maintain quality pipelines across all of them. As data passes from the people who understand it to the people who move it, domain knowledge gets lost in translation. The storage may be centralized, but the knowledge needed to interpret it is not. The silo persists in a new location.
That separation creates a queue. Engineering bottlenecks compound, and queries that cross business functions can take months to deliver. By then, what the business needs to know may have changed, leaving a precise answer to yesterday’s problem. Regulatory requirements, data residency rules, and geographic business logic make it even harder to keep control in one place. Centralization makes accountability harder when the people responsible for delivery are distant from the rules that give the data meaning.
The lineage from warehouses to lakes does not change this organizational fault. Data mesh addresses an ownership model that separates responsibility from expertise.
What data mesh actually is, and what it is not
Data mesh is an organizational and governance architecture. It can run on a data lake, a warehouse, or both. It puts business function in charge of who owns the data, taking that role away from the technology layout. The team closest to the data owns its lifecycle. A different storage bill, by itself, does not constitute a mesh.
Four principles give that ownership model substance. Domain-oriented decentralization assigns data to the business domain that produces or consumes it, with named owners and explicit product contracts. Turning raw pipeline outputs into data as a product requires documented schemas, quality SLAs, versioning, and deprecation criteria. The self-serve platform layer supplies shared ingestion scaffolding, observability, and onboarding so domain teams need not wait for central engineering. Federated computational governance uses policies that the platform enforces to apply shared standards, so people do not have to approve each request by hand.
Domain teams own their products, while the platform team provides the means to publish and govern them. Neither side disappears, and neither can hand its obligations to a bucket. This model suits organizations that have outgrown a centralized data team. For smaller organizations, staying centralized keeps a way of organizing work from becoming more work to manage.
Why object storage is the physical substrate that makes decentralized ownership practical
Decentralized responsibility needs a physical boundary that teams can control independently. That boundary must have its own address, cost little enough to use across domains, and have rules that do not send every decision through a central team. Object storage does this with buckets and their policy controls. Services including S3, GCS, Azure Blob, and R2 supply the storage substrate for this model. The important feature is not the logo on the bucket but the independence it permits.
A domain bucket can carry its own IAM policies, lifecycle rules, and cost attribution. Those controls let the storage boundary match who owns the data, so unrelated teams do not have to join the same queue to get work done. Domains can grow or shrink their storage footprint independently as object storage scales horizontally. Meanwhile, open table formats including Delta Lake, Apache Iceberg, and Apache Hudi let teams query the stored files directly much as they would in a warehouse. Teams can then publish products that others can query while keeping each domain’s physical data out of a single central store.
Independent storage is useful only if teams can work with it. Filesystem layers can mount S3, GCS, and other buckets so domain teams can use familiar file tools and shell commands. A filesystem layer is one access option, while standard object APIs and table interfaces serve other workflows. These interfaces address adoption friction without changing who owns the data.
How the four data mesh principles map onto object storage primitives
Domain-oriented decentralization maps to a bucket per domain with scoped IAM, or a bucket prefix with enforced IAM conditions. IAM is the permission mechanism that makes the boundary real. Prefix conditions and object tags make cross-domain access explicit and auditable. The domain team controls its data inside that boundary, and consumers have set rights to access it from outside. Without enforcement, folder names are merely labels, and a label is not a lock.
Data as a product maps to open table formats on object storage. Apache Iceberg, Delta Lake, and Apache Hudi provide versioned, schema-enforced, queryable table abstractions over files. These mechanisms support a published product, but its owner must still define the quality contract and document the consumer interface. Lifecycle rules handle the storage side of deprecation by expiring old versions on a defined schedule. Without these contracts and mechanisms, a bucket remains a file dump, however confidently its owner calls it a product.
The self-serve platform layer maps to standardized APIs and repeatable storage scaffolding. Bucket creation templates, IAM policy templates, and observability hooks let the platform team ship a pattern that domain teams instantiate during onboarding. Where teams use a filesystem layer, existing shell automation, scripts, and file-based workflows can replace the need for SDK integration. Multi-cloud support also needs an honest interface boundary rather than an assumption that every service speaks the same API. R2 has a native S3-compatible API and GCS offers S3 interoperability, but Azure Storage does not provide an S3-compatible API out of the box. If the platform ignores that difference, teams need to ask for more integration work before they can serve themselves.
Federated computational governance maps to policy enforcement at both the storage and query-engine layers. Storage IAM controls who can access objects, while engine-level masking hides sensitive values before the query returns its results. Object tags, including classification=PII, give the platform attributes on which to base access and masking policies without reorganizing buckets. These policies must work together so an identity without permission cannot get around masking by going straight to storage. If enforcement lives only in application code or manual review, the common standard is not a dependable boundary.
Where real implementations fail, and what the pattern looks like when it works
A committee that approves every cross-domain access request becomes the new central queue. Domain teams may own their buckets on paper, but they still wait for permission to do routine work. The bottleneck now has a committee and probably a calendar invite. Computational policies resolve that contradiction by making shared rules executable rather than turning each request into a separate decision.
Folder names without IAM enforcement do not isolate domains, just as raw files without contracts do not become reliable data products. Both failures confuse a visible artifact with the responsibility behind it. The same mistake appears when a platform is delivered as a one-time infrastructure build. What domains need keeps changing, so a platform that stays the same becomes less useful over time.
Domain owners look after products and contracts, the platform team looks after shared capabilities, and governance sets the standards that the platform enforces. A review of the platform each quarter keeps the roadmap in step with what domains need after launch day has passed. This concentrates central work on reusable capabilities.
What the storage layer needs to support as data mesh extends into AI workloads
AI agents use the same consumer model and can work within the same data architecture. They access domain products programmatically, may run in parallel, and need working state that survives restarts. A product contract still describes the data they consume, but it does not by itself provide a persistent workspace or an agent identity. Those requirements add to the mesh’s existing boundaries. They do not excuse bypassing them.
Each agent needs a distinct identity with scoped permissions. Its working state can live in a bucket or prefix within the domain’s storage boundary, under the same IAM and tagging policies used for other consumers. That gives agents workspaces that last without a storage tier of their own. It also keeps access revocable at the identity boundary. Parallel execution is not a reason to give every agent the keys to every domain.
For agents and file-based applications, POSIX-on-object-storage is an alternative to direct object APIs or query-engine access. Existing domain buckets can be exposed through a filesystem layer that keeps the bucket as the source of truth, so file-based tools can read domain data without a separate ETL copy. With source data that persists and is versioned, work can then span sessions and parallel processes without the need for a proprietary query language. The workload’s needs determine the interface choice while the domain retains ownership.
Object storage also accommodates unstructured material including healthcare records, financial documents, and government filings. Such data need not be forced into a table schema before it becomes useful to an agent, although ownership and access rules still apply. Workspace size can vary with the task, making elasticity important beyond the published product itself. Storage metered on active use rather than provisioned capacity helps avoid overprovisioning fixed-size persistent disks. The same independence that serves domain teams therefore serves their new programmatic consumers.
A practical checklist for building a data mesh on object storage
Start with organizational readiness before provisioning storage. Assign a named owner to every data product, and define each domain in business terms before translating it into a storage boundary. Establish the governance committee and computational policy framework before the first domain goes live. The committee defines the shared rules. A bucket without an owner is simply a future silo with somewhere to live.
For storage architecture, use bucket-per-domain as the default isolation unit. Where strict bucket quotas make that impractical, use prefixes with enforced IAM conditions. Select an open table format at the platform level and apply it consistently across domains to reduce cross-domain query friction. Build the self-serve interface around standard APIs while accounting for provider differences, especially Azure Blob’s lack of a native S3-compatible API. A common filesystem interface is another option for teams whose workflows are file-based.
For governance wiring, apply sensitive-data masking in the query engine and prevent direct storage access from bypassing that protection. Apply object tags at write time, including classification=PII and domain=finance, so policies have the attributes they need from the start. Add schema registries and contract testing in CI/CD for every product. Consumers should be able to detect breaking changes before those changes reach production. These controls turn a governance agreement into something the platform can enforce.
When adding AI, give each agent its own IAM identity and set up its workspace inside the boundary of the domain it belongs to. Consider a POSIX layer for agents that use filesystem commands. Then check whether domain teams can take charge of product quality, consumers can rely on clear contracts, and shared policies can run without people having to step in as a matter of course. If those responsibilities remain undefined, the next step is organizational work. That is the readiness test for data mesh.
This article is sponsored by Archil.


