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
- Konu
- Güvenilir veri
- Teknolojiler
- Apache Iceberg, Apache Polaris, Trino, OpenMetadata, Open Policy Agent, Apache Airflow, dbt, Keycloak

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.

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.

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
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ı.
Rol
Tasarım ve liderlik · Kıdemli Veri Mühendisliği ve Veri Mimarisi Grup Yöneticisi
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.
Rol
Uygulama · Büyük Veri Yönetimi ve Veri Mimarisi Yöneticisi