Mimari kata · K—02

Veri Sözleşmeli Açık Lakehouse ve Ortak Semantik Katman

Mimari kata · kurgusal bir problem tanımı üzerine tasarım çalışması

Sektör
E-ticaret grubu
Teknolojiler
Apache Iceberg, Apache Polaris, Trino, OpenMetadata, Open Policy Agent, Apache Airflow, dbt, Keycloak
Akış: marka motorları tek REST katalogla bölge bucket'larına Iceberg yazar; derlenmiş metrik katmanı tüketicileri besler.
Tasarım tek bakışta: 30 dakikalık, tek sayfalık canlı çizim. Diyagram etiketleri İngilizcedir.

Kısaca

Altı marka kendi sorgu motorunu korur; paylaşılan veri bir kez açık tablo olarak yazılır, CI'daki sözleşme ve tek metrik tanımıyla korunur.

Problem

Bir e-ticaret holdingi sekiz yılda satın alınmış altı markadan oluşuyor. Her markanın kendi veri yığını var: ikisi BigQuery, ikisi Snowflake, biri Databricks, biri şirket içi PostgreSQL ambarında. Grup finansı her ay tablolarla konsolidasyon yapıyor ve rakamlar marka panolarıyla hiç tutmuyor; çünkü “net gelir” her markada farklı tanımlanmış. Markalar zorla göçü kabul etmiyor. Grup ise verinin yedinci bir kopyasını kabul etmiyor. Üç marka AB’de, iki marka Birleşik Krallık’ta, biri Türkiye’de faaliyet gösteriyor; bu yüzden kişisel veri kendi bölgesinde kalmalı.

Yaklaşım

Tasarım, tablo formatını ve kataloğu motorlardan, metrik tanımını da herhangi bir SQL lehçesinden bağımsız kılıyor. Her paylaşılan veri ürünü sahibi markanın motorunda üretiliyor ve bölge bucket’ına bir kez Apache Iceberg tablosu olarak yazılıyor. Apache Polaris ya da Lakekeeper gibi tek bir REST Iceberg kataloğu dört motorun da aynı tabloyu okumasını sağlıyor. Sözleşme tablonun yanında duruyor ve kırıcı değişiklikleri CI’da engelliyor. Metrikler YAML’da bir kez tanımlanıyor ve her motor için derleniyor.

Mimari

  • Tablolar ve katalog: bölgesel nesne depolamada Iceberg; tek REST katalog ve motor başına kısa ömürlü kimlik bilgileri.
  • Tablo başına tek yazıcı: sahibin motoru. Open Policy Agent politikası başka bir principal’ın commit’ini reddediyor.
  • Sözleşmeler: şema, PII sınıfı, SLA, sahip ve geri fatura etiketi içeren Open Data Contract Standard YAML’ı. Commit sonrası bir iş snapshot’ı doğrulanmış olarak etiketliyor; tüketiciler yalnızca doğrulanmış snapshot’ları okuyor.
  • Semantik katman: bir derleyici metrik tanımını BigQuery, Snowflake, Databricks ve Trino SQL’ine çeviriyor. Power BI, Looker, defterler ve LLM asistanı tek metrik API’sini kullanıyor.
  • Bölgeler ve katalog: toplulaştırmayı bölgesel Trino havuzları yapıyor. OpenMetadata soy ağacını, tazeliği ve sözleşme durumunu gösteriyor.
Mimari: markalar tek REST katalogla Iceberg tablolarını bölge bucket'larına yazar; tek metrik katmanı okuyucuları besler.
Çözüm genel bakışı: üretici markalar, REST katalog, bölge bucket'ları, sözleşme CI'ı, semantik katman, tüketici motorlar ve grup finans konsolidasyonu. Diyagram etiketleri İngilizcedir.Tam boyutta aç (yeni sekmede açılır)

Neden bu bileşenler

İhtiyaç Seçim Neden
Açık tablo formatı Apache Iceberg Dört motor da okuyor; motorların uyguladığı standart REST katalog protokolü Iceberg’in. Atomik snapshot, şema evrimi, silme için satır seviyesi delete. Delta ve Hudi’nin eşdeğer, tarafsız bir katalog protokolü yok: neden lisans değil, yetenek.
Katalog Apache Polaris ya da Lakekeeper; ikisi de Iceberg REST Tek katalog, bölge başına bir warehouse; her motora kısa ömürlü ve tabloyla sınırlı kimlik bilgisi. OPA politikası burada uygulanıyor. Glue, Unity ya da BigLake metastore gibi motor başına kataloglar üç yetki modeli demek olurdu.
Bölgesel depolama AB’de Cloud Storage, Birleşik Krallık’ta S3 uyumlu depo, Türkiye’de yerinde Ceph RGW Veri bölgesinde kalıyor; bölge başına bir KMS anahtarı. Dosyalar bir kez yazılıyor, hiç kopyalanmıyor; yedinci kopya yok. Lisans ve dağıtım belirsizliği nedeniyle MinIO yerine Ceph.
Markalar arası ve grup sorgu motoru Trino Iceberg bağlayıcısı, OPA ile satır ve sütun politikası, bölge başına havuz; yerinde çalışan markanın Iceberg yazıcısı da bu. Spark da olurdu, ama etkileşimli ve federe sorguya Trino daha uygun. Athena ticari ve tek bulutlu.
Veri sözleşmesi Open Data Contract Standard YAML ve CI Şema, PII sınıfı, SLA, sahip, sürüm ve chargeback etiketi tabloyla birlikte yaşıyor. CI kırıcı değişikliği birleştirmeden önce durduruyor, commit sonrası iş snapshot’ı etiketliyor. Katalogda sonradan doldurulan “sözleşme” sözleşme değildir.
Dönüşüm dbt Core ya da Dataform Markaların zaten kullandığı araçlar; model ve sözleşme aynı depoda, soy ağacı kendiliğinden geliyor. Yeni bir araç dayatmak kılık değiştirmiş bir göç olurdu. dbt Cloud ve Semantic Layer bilinçli olarak dışarıda.
Semantik katman YAML’da açık metrik spesifikasyonu, özel derleyici, metrik API’si Motorların dışında tek tanım; dört SQL lehçesine derleniyor ve bir uygunluk paketiyle sınanıyor. Power BI modeli ya da LookML tek araca bağlar; dbt Semantic Layer dbt Cloud’a bağımlı.
Metadata kataloğu OpenMetadata dbt ve Iceberg snapshot’larından soy ağacı, SLA’ya karşı tazelik, sözleşme durumu ve sürüm bildirimleri. Apache 2.0. DataHub da adaydı; OpenMetadata’nın kalite ve sözleşme özellikleri daha olgun.
Politika Open Policy Agent Katalogda ve Trino’da aynı politika paketi: tek yazıcı kuralı, bölge ve role göre maskeleme, grup principal’ına yalnızca toplulaştırılmış erişim. Apache Ranger daha ağır ve Hadoop odaklı.
Kimlik Keycloak İnsanlar ve motor servis principal’ları için OpenID Connect. Marka ve bölge başına bir principal, grup için ayrı bir principal.
Orkestrasyon Apache Airflow Yalnızca grup işleri: bölge toplulaştırma, konsolidasyon, mutabakat ve uygunluk paketi. Marka boru hatları kendi zamanlayıcılarında kalıyor.
Gözlemlenebilirlik, sırlar ve dağıtım Prometheus, Grafana, Loki, Tempo, OpenTelemetry; OpenBao; Argo CD Sözleşme ihlali, tazelik, motor başına okuma gecikmesi, chargeback ve uygunluk sapması tek panoda. GitOps üç bölgeyi tek depodan yönetiyor. HashiCorp Vault BSL’ye geçtiği için OpenBao.

Kararlar ve ödünleşimler

  • Göç değil, federasyon. Altı marka sekiz yılda ekip ve araç kurdu ve göçü reddediyor. Göç başarısız olsaydı grup verisi iki yıl boş kalırdı. Tek açık format ve tek katalog, bu risk olmadan tek doğru ve tek kopya veriyor. Bedeli, dört SQL lehçesini ve dört motoru desteklemek.
  • Motor başına katalog yerine tek açık katalog. REST katalog, dört motorun ortak paydası. Motor başına katalog üç politika motoru ve üç yetki modeli demek olurdu. Bedeli, grubun işletmesi gereken bir katalog. Katalog düşerse yeni commit olmuyor, ama motorlar ellerindeki snapshot’ları okumaya devam ediyor.
  • Tek yazıcı kuralı. Her tablonun tek yazıcısı var: sahip markanın motoru; OPA başka her commit’i reddediyor. Eşzamanlı çok motorlu yazma, hiçbir motorun garanti etmediği bir tutarlılık vaat ederdi; bu yüzden motorlar arası işlem vaat etmiyorum. Bedeli, geçiş döneminde iki motor kullanan markaların yönetimi.
  • Sabitlenmiş ve doğrulanmış snapshot’lar. “Dört motorda tutarlı” demek aynı snapshot, aynı dosyalar, aynı sayı demek. Tüketiciler en sonuncuyu değil, doğrulandı etiketli snapshot’ı okuyor. Bir marka CI’ı atlayıp sütun adını değiştirirse yeni snapshot etiket almıyor. Pano tazelik damgasıyla bayat ama doğru rakamı gösteriyor, asla yanlışını değil.
  • Uygunluk paketi. Her metriği dört motorda tek snapshot’a karşı çalıştırıyor ve kuruşuna kadar karşılaştırıyor. Lehçe sapması paketi düşürüyor ve o spesifikasyon sürümünü durduruyor. Bedeli: grup kendi derleyicisini yazıp bakımını üstlenmek zorunda kalabilir.
  • Veri yerleşimi politikada değil, mimaride. Satır seviyesinde kişisel veri bölgesinden çıkmıyor. Bölgesel Trino havuzları toplulaştırıyor; grup principal’ı yalnızca “toplu, PII yok” sınıfındaki tabloları görüyor. Satır seviyesi tablolar ona görünmüyor bile. Bedeli, bölgeler arası analizin yalnızca toplamlar üzerinde yapılabilmesi.
Akış: okuyucular tek bir snapshot'a sabitlenir, her tablonun tek yazıcısı vardır, CI kırıcı sözleşme değişikliğini engeller.
Bir kez üret, bir kez commit et, denetle, yayınla, herhangi bir motordan tüket ve konsolide et: ürün başına tek tablo, tek yazıcı, tek katalog, motor başına derlenen tek metrik spesifikasyonu. Diyagram etiketleri İngilizcedir.Tam boyutta aç (yeni sekmede açılır)

Yeniden ele alacaklarım

  • Motor başına yerel yazma. Hangi motor sürümleri Iceberg REST kataloğuna doğrudan yazabiliyor? BigLake ve Snowflake desteği sürüme bağlı; desteği olmayan marka için yazıcı Trino olur.
  • Semantik spesifikasyonun olgunluğu. Hazır açık kaynak bir derleyici var mı, yoksa grup kendininkini yazıp açacak mı?
  • Bir markada iki motor. Geçiş sırasında geçici ikinci bir yazıcı kabul edilir mi, yoksa yazıcı değişimi yeni bir sözleşme sürümü mü?
  • Bağlantısı kopan Türkiye bölgesi. AB kontrol düzlemine erişilemezse yerinde çalışan markanın commit’leri kaç saat bekleyebilir?

Sonuç notları (tasarım varsayımları, ölçüm değil)

Bu bir tasarım çalışmasıdır, çalışan bir platform değildir. Çıktı: dört sayfalık diyagram seti, tek sayfalık beyaz tahta sürümü ve 16 sayfalık Türkçe PDF. İki günlük finans konsolidasyonu ve yüzde 0,1’lik mutabakat toleransı, kata metni ve tasarımdaki hedeflerdir.

Kaynaklar

  • Mimari PDF (Türkçe, 16 sayfa).
  • draw.io diyagramları (İngilizce etiketler): dört sayfalık set ve 30 dakikalık tek sayfa sürüm.

Bu konudaki gerçek projeler

  1. P—01

    Tamamlandı

    Öne çıkan

    Kurumsal Veri Ambarının Google BigQuery'ye Taşınması

    80 TB'lık ambar SQL Server ve 15 düğümlü Cloudera kümesinden BigQuery'ye taşındı: yıllık $550K tasarruf, %75 düşük altyapı maliyeti, 7 kat hızlı iş akışları.

    • Veri platformu
    • Veri kalitesi
    • Analitiğe hazır veri
    • Orkestrasyon
    • Bulut

    Rol

    Tasarım ve liderlik · Kıdemli Veri Mühendisliği ve Veri Mimarisi Grup Yöneticisi

  2. P—08

    Tamamlandı

    Veri Yönetişimi, Metadata ve Ana Veri Yönetimi (MDM)

    100+ kaynak sistem genelinde veri yönetişimi, metadata yönetimi ve ana veri yönetimi (MDM); veri kataloğu ve soy ağacı (lineage) araçlarıyla.

    • Veri yönetişimi
    • Veri izlenebilirliği
    • Veri kalitesi

    Rol

    Uygulama · Büyük Veri Yönetimi ve Veri Mimarisi Yöneticisi

Güvenilir veri: projeler, katalar ve yayınlar

Katalar hakkında

Benzer bir tasarım problemi için yazın.