Data contracts formalize expectations between producers and consumers.
A contract specifies:
- Schema: Column names, types, nullability
- Semantics: What each field means
- SLAs: Freshness guarantees, availability
- Ownership: Who to contact when things break
Without contracts, upstream teams change schemas without warning. Your pipelines fail at AM. With contracts, changes require negotiation.
Tools like Soda and custom JSON schemas enforce contracts programmatically. Breaking changes trigger alerts before deployment.