I Data Contract sono accordi stipulati tra data producers e data consumers che mirano a regolamentare sia i dati che il loro scambio. Forniscono trasparenza sulle dipendenze e sull’utilizzo dei dati all’interno di un’architettura informativa e aiutano a garantirne coerenza, chiarezza, affidabilità e qualità.
Un data contract consente di rispondere a domande fondamentali sui dati, come ad esempio:
• Con quale frequenza vengono aggiornati questi KPI?
• Questi dati sono affidabili?
• Dove e come posso accedere a questa informazione?
• Qual è l’utilizzo atteso per questi dati?
• Chi ha il permesso di visualizzare questo valore?
• Cosa significa questo attributo?
Ogni data contract deve soddisfare le seguenti caratteristiche:
• Indirizzabile: è necessario che sia identificabile in modo semplice per consentirne l’utilizzo
• Espressivo: auto-descrittivo, definito in modo chiaro e inequivocabile
• Circoscritto: con un ambito chiaro che si adatti al suo scopo, per scongiurare usi impropri, ambiguità o un aumento eccessivo del carico cognitivo di chi ne è responsabile
• Stabile: invariato per intervalli di tempo ragionevoli, le misure da seguire per la gestione di eventuali cambiamenti sono anch’esse parte del data contract
• Affidabile: deve poter essere rispettato da tutte le parti coinvolte
• Computabile: idealmente dovrebbe essere elaborabile attraverso servizi di automazione. Tuttavia, tipicamente si evolve gradualmente da contratti intesi come documentazione human-readable a data contract as code pensati per l’uso
I data contract sono al centro dei riflettori poiché si collocano all’intersezione di 3 tendenze chiave nella gestione dei dati: Data Centricity, Data as a product e Data Fabric:
• Secondo il data centric manifesto, le applicazioni non dovrebbero essere al centro dell’architettura, i dati dovrebbero esserlo. Le applicazioni generano e utilizzano dati, ma non dovrebbero trattarli come un sottoprodotto, bensì devono essere responsabili per essi e i contratti sono un buon modo per formalizzare questa responsabilità
• Concentrandosi sul principio del mesh del Data as a product, è fondamentale che gli asset sviluppati abbiano interfacce chiare verso i loro consumatori che specificano formalmente l’ambito, i servizi forniti e come accedervi: questo è esattamente ciò per cui sono pensati i data contract
• Il paradigma Data Fabric enfatizza l’automazione e la riproducibilità nella gestione dei dati e dipende fortemente dalla raccolta e attivazione dei metadati: i data contract fungono da fonte primaria e proattiva di metadati
Nei database e datawarehouse la gestione dei dati basata su schemi ha fatto il suo corso per decenni: i dati sono sottoposti a rigorose analisi, suddivisi per dominio, modellati e documentati. Tuttavia, il loro comportamento è tipicamente governato da vincoli locali che non considerano la loro diffusione ed evoluzione. Questo approccio ha spesso portato a una mancanza di flessibilità e adattabilità. Spesso vengono create lunghe catene di dipendenze senza garanzie, come ad esempio regole per l’introduzione di cambiamenti o caratteristiche delle informazioni esposte da un artefatto. Questo approccio porta spesso a sorprese inaspettate quando una modifica a uno schema può far crollare l’intera filiera del dato.
I data contract sono spesso fraintesi e ridotti a semplici schemi, la rappresentazione fisica dei dati. Tuttavia, gli schemi fungono da base dei data contract, sono il loro aspetto primario ma non ne catturano l’intera essenza. Gli elementi fondamentali di un data contract includono:
• API: per descrivere come accedere e consumare i dati esposti. Un’API robusta fornisce dettagli sulla posizione del servizio, sui protocolli di comunicazione supportati, sui metodi di autenticazione, sugli endpoint disponibili e sugli schemi dei dati scambiati
• Vincoli: per definire le regole di ingaggio, descrivendo come i dati vengono scambiati e come dovrebbero essere utilizzati. Stabiliscono il perimetro entro il quale opera il data contract
• Semantica: per chiarire il significato dei dati scambiati. Questo aspetto è cruciale, tuttavia, la sua formalizzazione è ancora una sfida aperta