Data Contract (Veri Sözleşmesi)

Veri üreticisi ile tüketicisi arasında şema, kalite kuralları ve teslimat SLA'larını resmileştiren makine tarafından uygulanabilir teknik anlaşma.

Data contract (veri sözleşmesi), bir veri üreticisi ile veri tüketicileri arasında kurulan, şema, kalite kuralları ve teslimat yükümlülüklerini resmileştiren makine tarafından uygulanabilir anlaşmadır. Terim, 2022 yılında Chad Sanderson tarafından data mesh mimarisinin yaygınlaşmasıyla birlikte popüler hale gelmiştir. Geleneksel veri boru hatlarında üretici ekipler şema değişikliklerini bildirmeden güncelleme yapabilir; bu durum aşağı akış ML modellerini, raporları ve analitik iş yüklerini bozar. Data contract bu kırılganlığı ortadan kaldırır: üretici, belirli bir şema versiyonunu, null toleransını, veri tazeliğini ve iş tanımlarını resmî bir belge olarak yayımlar; tüketici ise bu koşulları CI/CD sürecinde otomatik olarak doğrular. Bir data contract genellikle şu unsurları kapsar: sütun adları ve veri türleri, zorunluluk ve benzersizlik kısıtlamaları, tazelik SLA'sı (ör. "her 6 saatte bir güncellenir"), anlam bağlamı (sütun iş tanımları) ve sürüm uyumluluk politikası. dbt 1.5+ ile gelen contract bloğu bu denetimi proje düzeyine taşır; Soda Core ve Great Expectations ise çalışma zamanında ihlalleri yakalayarak bozuk verinin ML modellerine ulaşmasını engeller. Araştırmalar, veri kalitesi olaylarının yüzde altmışından fazlasının üretici-tüketici iletişim kopukluğundan kaynaklandığını ortaya koymuştur.

Data Contract Nasıl Çalışır?

Üretici ekip, verinin şemasını ve kalite beklentilerini YAML veya JSON formatında bir dosyaya yazar ve sürüm kontrol sistemine (Git) ekler. Bu dosya, hem insan okunabilir dokümantasyon hem de otomatik doğrulama aracına girdi olarak hizmet eder. Tüketici ekip yeni bir bağımlılık oluşturmadan önce sözleşmeyi okur; üretici şemayı kırmadan önce tüketicileri bilgilendirmek zorundadır. CI/CD boru hattı her dağıtım sırasında sözleşmeye uyumu denetler ve uyumsuzluk tespit edildiğinde pipeline'ı durdurur.

Temel Bileşenler

  • check_circle Şema Tanımı: Sütun adları, veri türleri ve izin verilen değer aralıklarının resmî belgesi.
  • check_circle Kalite Kuralları: Null toleransı, benzersizlik, referans bütünlüğü ve iş mantığı kısıtlamaları.
  • check_circle Tazelik SLA: Verinin en geç ne sıklıkta güncelleneceğini tanımlar; örneğin altı saatte bir.
  • check_circle Anlam Bağlamı: Her sütun için iş tanımı ve hesaplama mantığı; veri okuryazarlığını destekler.
  • check_circle Sürüm Politikası: Kırıcı değişikliklerin önceden bildirim gerektirdiğini ve geriye dönük uyumluluğun ne kadar süre korunacağını belirtir.

Araçlar ve Uygulama

  • check_circle dbt contracts (1.5+): YAML dosyasında contract bloğu; CI sırasında şema kısıtlamalarını otomatik olarak doğrular.
  • check_circle Soda Core: SQL tabanlı veri kalitesi kontrolleri; sözleşme ihlalinde boru hattını durdurur ve ekibi uyarır.
  • check_circle Great Expectations: Beklenti süitleri oluşturarak veri kontratlarını bağımsız varlıklar olarak yönetir.
  • check_circle Monte Carlo: Sözleşme ihlallerini gerçek zamanlı izler ve veri anomalisi tespiti yapar.
  • check_circle OpenDataQuality (ODQ): Açık kaynaklı, YAML tabanlı sözleşme standardı; araç bağımsız tanım olanağı sunar.

MLOps'ta Kullanım Senaryoları

ML boru hatlarında veri girişi kalitesi, model performansını doğrudan etkiler. Bir özellik mühendisi upstream tablosuna yeni bir sütun eklerse veya bir değer aralığını değiştirirse, modelin eğitim dağılımı ile çıkarım dağılımı arasında kayma oluşabilir. Data contract bu riski minimize eder: feature store'a beslenen her kaynak tablo bir sözleşmeyle korunur; model izleme katmanı ihlalleri erken tespit ederek müdahale süresini kısaltır. LLM boru hatlarında ise embedding modeline giden metin alanlarının uzunluk ve kodlama kısıtlamaları sözleşmede tanımlanabilir.

Data Mesh ile Bağlantısı

Data mesh mimarisi, veri ürünlerinin bağımsız takımlar tarafından sahiplenildiği dağıtık bir model önerir. Bu yapıda her veri ürününün interoperabiliteyi garanti etmesi gerekir; data contract tam da bu garantiyi resmileştirir. Zack Wilson ve Chad Sanderson'ın 2022 yılında yayımladığı 'Driving Data Quality with Data Contracts' kitabı, sözleşmelerin data mesh prensipleriyle nasıl bütünleşeceğini kapsamlı biçimde ele alır.

Sık Sorulan Sorular

  • check_circle Data contract ile API sözleşmesi arasındaki fark nedir?: API sözleşmeleri çalışma zamanında veri aktarım formatını tanımlar; data contract'lar ise veri ürününün kalite, anlam ve tazelik yükümlülüklerini iş sürecine bağlı olarak belgeler.
  • check_circle Küçük takımlar data contract'ı nasıl benimseyebilir?: dbt contract bloğu mevcut dbt projelerine minimal değişiklikle eklenebilir; başlangıç için şema ve null kısıtlamaları yeterlidir.
  • check_circle Data contract ihlali tespit edildiğinde ne olur?: CI/CD boru hattı durur ve ekip bir uyarı alır; üretici ile tüketici ihlal türüne göre sözleşmeyi günceller veya acil düzeltme uygular.
  • check_circle Streaming veri için data contract mümkün mü?: Evet; Apache Kafka için Schema Registry, Avro veya Protobuf şemalarını sözleşme mekanizması olarak kullanır ve şema evrimi politikaları tanımlamaya olanak verir.
  • check_circle Data contract sürümleme nasıl yapılır?: Anlamsal sürümleme (MAJOR.MINOR.PATCH) önerilir: kırıcı değişiklikler MAJOR sürümü yükseltir; tüketici ekiplere geçiş süresi tanınır.