Data Contract⚓︎
It's a formal agreement between the data producer and the data consumers. There is not yet a clear definition of the form and scope of a data contract. Usually, they cover the structure of the exchanged data (i.e. the schema) and its meaning (i.e. the semantics). Check the Data Mesh Resources page for more information on data contracts.
In the Data Product Descriptor Specification (DPDS) the more general concept of service agreements is used in place of data contracts. A service agreement is a more general concept than a data contract. A service agreement can be a data contract but in most cases, it is not. Specifically a service agreement is a data contract only when defined on a service that exposes data and it's linked to specific obligations. DPDS uses the following concepts of promises theory to formally describe the interface components of a data product (i.e. data product's ports):
- Promises: Through promises the data product declares the intent of the port. Promises are not a guarantee of the outcome but the data product will behave accordingly to them to realize its intent. The more a data product keeps its promises over time the more trustworthy it is. Thus, the more trustworthy a data product is the more potential consumers are likely to use it. Trust is based on the verification of how good a data product was in the past in keeping its promises. This verification should be automated by the underlying platform and synthesized in a trust score shared with all potential consumers. Examples of promises are descriptions of services' API, SLO, deprecation policy, etc.
- Expectations: Through expectations the data product declares how it wants the port to be used by its consumers. Expectations are the inverse of promises. They are a way to explicitly state what promises the data product would like consumers to make regarding how they will use the port. Examples of expectations are intended usage, intended audience, etc.
- Obligations: Through obligations the data product declares promises and expectations that must be respected both by itself and its consumers respectively. An obligation is an explicit agreement between the data product and its consumers. It is used to group all the promises and expectations that if not respected can generate penalties like monetary sanctions or interruption of service. Examples of obligations are terms of conditions, SLA, billing policy, etc.