13 puan yazan GN⁺ 2025-06-17 | 2 yorum | WhatsApp'ta paylaş
  • Netflix, iş alanlarının (ör. film, oyuncu, dizi vb.) veri modellemesinin her sistemde tekrar edilmesi, tutarsız olması ve standart olmayan terimler kullanılması nedeniyle iş birliği ve veri kalitesi sorunlarıyla karşı karşıya kaldı
  • UDA (Birleşik Veri Mimarisi), 'bir kez modelle, her yerde temsil et' hedefiyle alan kavramlarını bir kez tanımlayan ve bunları farklı sistemlere tutarlı biçimde yansıtan ve bağlayan, bilgi grafiği tabanlı bir altyapıdır
  • UDA, alan modeli → veri konteynerleri (ör. GraphQL, Avro, Iceberg vb.) için otomatik şema üretimi, eşleme ve veri taşıma otomasyonu sağlar
  • İş kullanıcıları, Sphere ve PDM gibi UDA araçlarıyla yalnızca terim arayarak veriyi keşfedebilir, rapor oluşturabilir ve referans veri yönetimi yapabilir
  • RDF ve SHACL gibi anlamsal teknolojiler üzerine kendi Upper metamodelini uygulayarak büyük ölçekli iş birliği, yönetişim, şema tutarlılığı ve ölçeklenebilirliği aynı anda sağlar

Netflix sistemlerinin artan karmaşıklığı ve alan modeli zorlukları

  • Netflix hizmeti film, dizi, oyun, canlı etkinlik ve reklam gibi alanlara genişledikçe, bunu destekleyen sistem karmaşıklığı da ciddi biçimde arttı
  • actor, movie gibi temel iş kavramları, farklı sistemlerde (Enterprise GraphQL Gateway, varlık yönetim platformu, medya bilişim sistemleri vb.) ayrı ayrı tanımlanıyor ve iş birliği ya da paylaşım olmadan parçalı şekilde işletiliyordu
  • Bunun sonucunda şu sorunlar ortaya çıktı
    • Tekrarlanan ve tutarsız modeller: Aynı varlık farklı sistemlerde yeniden tanımlanıyor, çakışmaları önlemek zorlaşıyor
    • Terim uyumsuzluğu: Aynı sistem içinde bile farklı terimler kullanılması ya da aynı terimin yinelenmesi iletişim karışıklığı yaratıyor
    • Veri kalitesi sorunları: Çok sayıdaki mikroservis arasında tutarsızlıklar ve referans hataları bulunuyor; tanımlayıcılar ve dış anahtarların yönetimi de yetersiz kaldığından manuel düzeltme gerekiyor
    • Bağlantısallık sınırları: Sistem içi ilişkiler kısıtlı, sistemler arası bağlantılar da yetersiz
  • Bu sorunları çözmek için, kavramsal modelin bir kez tanımlanıp her yerde yeniden kullanılacağı ve gerçek sistemler ile verilerle somut biçimde bağlanıp entegre olacağı bir temele ihtiyaç vardı

UDA’ya (Birleşik Veri Mimarisi) genel bakış

  • UDA, Netflix Content Engineering içinde veri bağlantısallığına dayalı bir platformdur
  • Alan modeli (iş kavramları) bir kez tanımlanır; ardından tüm sistemlere tutarlı biçimde yansıtılır ve otomasyon, keşif ile anlamsal birlikte çalışabilirlik sağlanır
  • UDA ile mümkün olan başlıca işlevler
    • Alan modeli kaydı ve bağlantısı: Resmî kavram tanımları tek bir kaynak olarak kullanılır; ekipler arasında karışıklık ve yinelenen modelleme önlenir
    • Alan modellerinin veri konteynerleriyle eşlenmesi: İş kavramları ile gerçek verinin tutulduğu yerler (veritabanı, tablo, servis vb.) ve bunların yapısı grafik yapıda ifade edilerek kolayca anlaşılır
    • Alan modellerinin şema tanım dillerine dönüştürülmesi: GraphQL, Avro, SQL, RDF, Java gibi farklı sistemlere otomatik dönüşüm yapılır; el işi azalır, hata riski düşer
    • Verinin veri konteynerleri arasında güvenilir şekilde taşınması: GraphQL entity’leri, Data Mesh, CDC, Iceberg gibi sistemler arasında veri dönüşümü ve taşıması otomatik işlenir
    • Alan kavramlarını keşfetme ve arama: İş kavramları arasındaki ilişkiler gezilebilir ve aranabilir; doğru bilgiye ulaşmak kolaylaşır
    • Bilgi grafiği için programatik introspection sağlama: Java, GraphQL ve SPARQL üzerinden bağlantılı iş bilgileri kullanılır; otomasyon ve içgörü üretimi desteklenir

UDA’nın temel mimarisi

  • Knowledge Graph tabanı

    • RDF/SHACL tabanlı bir bilgi grafiği olarak alan modelleri, şemalar, veri konteynerleri ve eşlemeler dahil tüm öğeleri grafik verisiyle birbirine bağlar
    • Named graph merkezli bir bilgi modeli kullanır; her named graph düzenli bir yönetişim modelini izler ve yorumlama çerçevesi, modülerlik ile işletim politikalarını mümkün kılar
  • Upper metamodeli

    • Upper, alan modellerini sıkı biçimde tanımlayan bir metamodel dilidir
    • Alanlara özgü ana varlıklar, özellikler ve ilişkiler tipler ve hiyerarşilerle modellenir; RDF olarak ifade edilebilir, sürümlenebilir ve sorgulanabilir
    • Upper’ın kendisi de Upper ile modellenmiştir (öz başvuru, öz doğrulama); bu sayede tüm genişletmeler ve yansıtmalarda tutarlılık sağlanır
    • Özellik değerleri alan bazında özelleştirilebilir ve tüm kavramlar conceptual RDF ile named graph olarak ifade edilir; introspection, arama ve sürüm yönetimi desteklenir
    • Upper, yüksek seviyeli soyutlamayla birlikte RDFS/OWL/SHACL gibi W3C anlamsal teknolojilerinin yalnızca temel kısımlarını seçerek uygular; ontoloji kavramlarını bilmeden de etkili alan modelleme mümkündür
    • Upper metamodelinden Jena tabanlı Java API ve GraphQL şeması otomatik üretilir, ardından gerçek GraphQL servisleriyle bağlanır
  • Veri konteynerleri ve eşlemeler

    • Data Container: Gerçek veri depoları (ör. GraphQL servisindeki entity’ler, Data Mesh kaynağındaki Avro kayıtları, Iceberg tablolarındaki satırlar, Java API içindeki nesneler vb.)
    • Eşlemeler (Mappings): Alan modelindeki belirli öğeler ile veri konteynerleri (tablolar, alanlar vb.) arasındaki bire bir bağlantıların tanımı
    • Eşlemeler sayesinde alan kavramı → gerçek veri konumu izlenebilir; ters yönde de veri → ilgili alan kavramları keşfedilebilir
    • Niyet tabanlı veri taşıma / otomasyon: Eşleme bilgileri kullanılarak veri akışı ve dönüşümleri sistem tarafından otomatik belirlenir
  • Projections (yansıtmalar)

    • Alan modeli → hedef sistem şeması (ör. GraphQL, Avro vb.) için otomatik dönüşüm ve üretim yapılır (kod, şema ve pipeline otomasyonu)
    • Şema tutarlılığı sağlanır, yinelenen tanımlar ve senkronizasyon sorunları en aza indirilir

Gerçek kullanım örnekleri

  • PDM (Primary Data Management)

    • Referans veri ve taksonomi (hiyerarşik sınıflandırma sistemi) yönetim platformu
    • Alan modellerini hiyerarşik veya düz sınıflandırmaya dönüştürür, iş kullanıcıları için UI’ı otomatik üretir
    • İş terimlerinin tutarlı tanımlanmasını sağlar; SKOS modeli tabanlıdır ve UDA ile Avro/GraphQL şemaları ile pipeline’lar otomatik üretilir
    • Yalnızca alan modeli girildiğinde, UI / veri pipeline’ı / GraphQL API otomatik olarak oluşturulur
  • Sphere (Operational Reporting)

    • Bilgi grafiği tabanlı self-service operasyonel raporlama aracı
    • Alan terimlerine dayalı arama, keşif ve join stratejilerini otomatikleştirir; teknik karmaşıklık olmadan veri keşfi ve rapor üretimi sağlar
    • UDA tabanlı metadata ve eşlemeler sayesinde sistem, gerçek veri konumunu ve join mantığını otomatik olarak anlar ve çalıştırır
    • actor, movie gibi tanıdık terimlerle kavramlar keşfedilir; seçilen kavramlara göre bilgi grafiği izlenerek SQL sorguları otomatik oluşturulur, ek join ya da teknik işlem gerekmeden veri elde edilir

Sonuç ve gelecek perspektifi

  • UDA, Netflix’in veri modelleme ve entegrasyon yaklaşımında köklü bir değişim yaratıyor
  • Alan modelinin bir kez tanımlanmasıyla, organizasyon genelindeki sistemler tutarlı, otomatik ve ölçeklenebilir veri entegrasyonu sağlayabiliyor
  • Gelecekte Protobuf/gRPC gibi ek desteklerin ve bilgi grafiğinin gerçek veriye daha fazla uygulanmasının planlandığı belirtiliyor

2 yorum

 
trijin11 2025-06-19

Benzer bir şey kurmam gerekiyor ama nereden başlayacağımı bilemiyorum.

 
GN⁺ 2025-06-17
Hacker News yorumları
  • Tüm avantajlarına rağmen bu yaklaşımın sık anılmayan büyük bir sorunu olduğunu düşünüyorum
    Bu hem bir iş problemi hem de teknik sorunları etkilediği için sonuçta geliştirme hızını etkileyen ikincil bir teknik probleme dönüşüyor
    Tüm organizasyonun tek bir birleşik veri tanımına güvenebilmesine dair söz iş tarafını bağladığı için, artık veriyi tanımlarken ya da değiştirirken yalnızca kendi alanınızı değil, organizasyon genelindeki çeşitli kullanım senaryolarını da dikkate almak zorundasınız
    En küçük değişiklik bile tüm organizasyonu etkilediğinden, çeşitli paydaşların onayını gerektirecek kadar karmaşık süreçler ortaya çıkıyor
    Bu, büyük şirketlerdeki klasik “bir düğmenin rengini değiştirmek neden iki ay sürüyor” sorununun veri versiyonu
    Elbette veriyi kopyalamak ya da tutarsız biçimde dağıtmanın genelde daha ciddi bir sorun olduğunu kabul ediyorum
    Ama bazen küçük ve izole değişiklikleri hızlıca dağıtmak istediğinizde böyle bir sistem büyük bir engel haline geliyor

    • Bunu çözmek için bir ürün geliştirmeyi denemiştim
      Kurumsal ortak modeli izlerken aynı zamanda modeli yerelde kolayca özelleştirmeyi sağlayan bir yaklaşım denedik (Prolog benzeri bir veri tanım dilini genişletmek ve hemen ihtiyaç duyulan şeyler yerine, gerçekten gerçekliğe dayalı bir kurumsal modeli ciddi biçimde düşünmek)
      Ne yazık ki NoSQL ve Big Data rüzgarının en güçlü estiği dönemde denedik, bu yüzden zamanlama iyi değildi
      NoSQL ve Big Data, gevşek modellerle çalışmanın ve verinin bir kısmı kaybolsa ya da yanlış anlaşılsa bile sonradan yamayarak düzeltmenin kabul gördüğü bir kültürdü
      Başta güçlü bir model tasarlamaktansa sonradan toparlamanın daha kolay görüldüğü bir atmosfer vardı; biraz üzücüydü ama kabullendim

    • Bunun özünde bir iş problemi olduğuna katılıyorum ve bunu teknolojiyle sistematik biçimde çözebileceğimizi düşünüyoruz
      Kurum içinde model-first bilgi grafiğini devreye almak ve yaymak için daha sistematik bir yöntem geliştirdiğimizden eminiz
      UDA, kendisinden istenen her şeyi daha da bürokratik hale getirmemek için dikkatli ilerliyor
      UDA mevcut sistemlerle yan yana var olur ve zorunlu benimsemeyi dayatmaz
      Ama iş modellerinin her yerde kullanılabilmesini, kolayca bağlanabilmesini, genişletilebilmesini ve keşfedilebilmesini isteyen ekipler için güçlü ve kolay bir araç olmasını hedefliyor
      (Bunu yazan kişinin UDA mimarlarından biri olduğunu belirtiyor)

    • Deneyimime göre, şirket içindeki “büyük adamların” iddiaları yüzünden mantıklı ya da tutarlı veri modellerinin kurulamaması çok sık yaşanıyor
      Uygulamacı teknisyenler veriyi daha akılcı ve standartlara uygun ele almak istese de, etkili bir kişi doğrudan kafasındaki modeli dayatıp geliştiricilerin buna uymasını istiyor
      Böyle sembolik bir düşünme biçimi bir kez yerleştiğinde, o şirkette tutarlı bir veri modeli kurulma ihtimali sıfıra yaklaşıyor
      Sonuçta bu tür sorunlar yüzünden danışmanlara verimsiz biçimde çok fazla para ödendiğini düşünüyorum

    • Uzun süre SAP'nin ne olduğunu merak etmiştim; gerçekte ne olduğunu öğrenince şaşırdım
      Bu kadar çok şirket SAP kullanıyor diye çok ileri bir teknoloji olduğunu sanmıştım, ama gerçekte sabit bir şema sunup müşteriden kendini o yapıya uydurmasını istemekmiş

    • Yazının aslı bunun bir iş problemi olduğunu inkâr ediyor gibi gelmiyor
      Tanımlanan modeller tüm roller arasında birlikte tanımlanıyor; mühendislik bunun yalnızca bir parçası

  • Semantic Web, RDF, OWL, SKOS gibi şeylerin ortaya çıkışından bu yana epey zaman geçtiğini düşündüm
    W3C'yi desteklemeye devam etmeleri ve zaten var olan tekerleği yeniden icat etmemeleri hoşuma gitti
    UDA yaklaşımının yaygınlaşıp yaygınlaşmayacağını bilmiyorum ama büyük organizasyonlarda DDD (domain-driven design) ve semantik kavramları uygulamanın zorluklarını yenilikçi biçimde azaltmaya çalışan bir girişim olarak umut verici
    Birden fazla geliştirme ekibine aynı veri anlam sistemini paylaşacak ortak araçlar ve teknolojiler sunup “bileşik faiz” etkisi yaratabilirse, veri sözleşmelerini DTO, POST gibi ağ iletimi gerekçeleriyle zorla düzleştirmek zorunda kalmayabiliriz; bu da ilginç
    Netflix'in böyle ilginç bir deneyi açıkça paylaşarak ilerletmesine olumlu bakıyorum

  • Bana Uber'deki Dragon projesini hatırlattı
    Uber'de Dragon şeması ile ilgili çalışmıştım ama açık kaynak haline getirilemedi
    Sonrasında Joshua LinkedIn'e geçti, LambdaGraph projesi ve Hydra dili üzerinde çalıştı; bunlar burada açık kaynak olarak yayımlandı
    Bu tür yaklaşımların ve 10 yıl önceki Semantic Web akımının ortak sorunu, kavramları resmileştirme ve sürdürme için gereken ek iş yükünün fazla olmasıydı
    Bugün LLM'lerin bu yükü azaltıp azaltamayacağını merak ediyorum

  • Bu yazıda “domain model” teriminin seçilmesini biraz talihsiz buldum
    Buradaki domain model tamamen veri merkezli bir kavramken, gerçek domain modeling özünde veri yapılarından çok davranışa odaklanır
    Domain model içindeki veri, davranışı mümkün kılmak için vardır; asıl merkezde davranışın kendisi bulunur
    Veri modellemesini bakış açısına göre farklı şekillerde ifade etmenin zaten kendi başına bir karmaşıklığı var ama bu farklar aslında bir özellik olarak da görülebilir
    Her durum aynı karmaşıklık ya da ayrıntı düzeyini gerektirmez ve temsil modelleri genelde okuma senaryolarına göre optimize edilir
    Bu tür bir yaklaşım, bilginin bağlama göre ele alınmasından ziyade birörnekliğe daha fazla ağırlık verebilir; alan bilgisinin güçlü olduğu ortamlarda ölçeklenebilirliği daha iyi olabilir ama pratikte çoğu kullanım senaryosunu mümkün kılmak için karmaşık ya da nüanslı domain modelini basitleştirmek gerektiğini gördüm

  • “Böyle bir girişimin %5'ten fazla ya da 5 milyon dolardan fazla ölçülebilir iş iyileştirmesi sağladığını gördünüz mü?” diye soruluyor
    Veri tablolarını birleştirme girişimlerini defalarca gördüm ama gerçekte farklı analizler gerekiyorsa tabloların birleşmesi pek anlamlı olmuyordu ve çeşitli analizler yine bağımsız biçimde yapılıyordu
    Yani herkesin istediği analiz şekline göre temel katmanı birleştirseniz bile, farklı analizler yine ayrı ayrı sürüyor
    Yine de bu girişim her şeyi tek bir yapıda zorla birleştirmeye çalışmıyor, daha çok geniş çaplı erişim kolaylığı sağlamaya benziyor; bu yüzden akıllıca görünüyor
    Resmi iş kavramlarının tanımlarını herkes için birleştirerek kafa karışıklığını azaltma amacıyla güçlü biçimde empati kuruyorum

    • “Farklı analiz yapan ekiplerin aynı bilgiyle uğraşıyor olması, mutlaka aynı şeyden söz ettikleri anlamına gelmez” görüşüne çok katılıyorum
      Örneğin herkes ana hapishane listesini istiyor olabilir, ama hapishanenin binanın kendisi mi, mahkûm kümesi mi (aynı arazide erkek ve kadın hapishanelerinin ayrı varlıklar olması gibi), yoksa belirli bir sözleşmeyle işletilen kurum mu olduğu tanıma göre tamamen değişir
      Bu açıdan organizasyon içindeki her bakış açısı hafifçe farklı nesnelere ihtiyaç duyabiliyor
  • Bunun domain-driven design (DDD) ile nasıl ilişkili olduğunu merak ediyorum
    DDD'de aynı kavramın bile sistemden sisteme farklı temsil edilebileceği baştan kabul edilmiyor mu?
    Ama yazının UML havası yüzünden sonuna kadar okumadım

    • upper:DomainModel'deki Domain, DDD'deki D (domain) ile aynı; DGS (Domain Graph Service) için de bu geçerli
      DDD, aynı anda aynı kavramın sistemlere göre farklı biçimlerde temsil edilmesini kabul ederken, UDA her domain içinde bu farklı kavramların açıkça birlikte var olmasını tasarlıyor
      “Aynılık” kavramı öznel hale geliyor

    • "ubiquitous language" terimini kullanmamış olmalarına sevindim
      Bu kavram, burada denenen şeyin tam tersini ifade ediyor
      İlgili terimleri sadece yüzeysel duymuş ama derinlemesine bakmamış olanlar farkı kaçırabilir

  • Netflix Engineering'in neden içeriklerini Medium'da yayımladığını merak ediyorum
    Medium'un açılır pencereleri vb. yüzünden okuyucuyu kolayca kaybettiren bir ortamda, bu riske değip değmediğini sorguluyorum

    • Her hex Medium URL gördüğümde scribe.rip üzerinden okumak ayrı bir eğlence oluyor
      scribe.rip UDA makalesi

    • Bunu pazarlama ekibi yönetiyorsa, SEO'yu da içeren bir strateji olabilir

    • Medium'un sağladığı “keşif” etkisi gerçekten var
      Ayrıca Medium'a yazı yazan tipte mühendisler, Netflix'in işe almak isteyeceği yetenek havuzuyla örtüşüyor olabilir

    • Kendi blog altyapılarını yönetmek zorunda olmamaları da ayrı bir kolaylık

  • Veri modellerinde sürümleme ya da breaking change'leri nasıl ele aldıklarını merak ediyorum
    Modeller daha parçalı yönetildiğinde eski yöntemlerle parça bazında düzeltmek daha kolay oluyor; bu kadar birleşik bir modelde nasıl işliyor acaba?
    Netflix'in yaklaşımında muhtemelen yeni modeli ekleyip eski modeli kademeli olarak kullanımdan kaldırıyorlardır diye tahmin ediyorum

    • Sürümleme yapmak, bir bakıma “kırma yetkisi” vermek demek
      UDA'da bu henüz tamamen uygulanmış değil ama Federated GraphQL ile aynı yaklaşımı kullanmayı planlıyorlar
      Federated GraphQL'de kendini kanıtlamış deprecation yönetim modelini benimseyecekler; ayrıca 500'den fazla federated GraphQL şemasını başarıyla yönetmiş deneyime sahipler
      Temel nokta, projected model tüketicilerini izleyip deprecation döngüsünü proaktif biçimde yönetmeye yönelik bir yol haritası
  • Birleşik bir grafiği başarılı kılmak için iş, iletişim ve teknoloji olmak üzere üç boyutu da çözmek gerektiğini düşünüyorum
    İletişim tarafında, “özerk ekiplerin ince bağımsızlığını” kırmak gerekiyor
    Ekipler arasında köprü kuracak ve veri modelini de analiz edecek insanlar lazım
    Sadece şema paylaşmak yetmiyor; insanlarla doğrudan görüşüp uzlaşma sağlama süreci şart
    Teknik taraf ise aslında en kolay kısım; Microsoft Graph gibi “kalın şema”yı zorunlu kılarsanız nispeten basit
    Bu süreç ciddi empati ve sabır gerektiriyor
    Teknik çözüm için üst yönetimin net karar ve icra yetkisi şart; ekipler tamamen serbest bırakılırsa hiçbir fikir işe yaramıyor
    En zor katman iş tarafı
    20 yılda optimize edilmiş süreçleri ve terminolojiyi bir anda değiştirmek neredeyse imkânsız
    Sonuçta, bu devasa işin “ömür boyu” yatırıma değmesi için şirket genelinde kusursuz bir buy-in gerekiyor

  • Ortak bir söz varlığının benimsenmesinin çok anlamlı olduğuna inanıyorum
    Ama bu, şirket geneli, yeni satın almalar, farklı iş süreçleri ve zaman boyutu eklendikçe giderek zorlaşıyor
    İki sistemi birbirine bağlayan bir arayüzü hızlıca kurabilirsiniz, ama tek bir kurum içinde birden fazla katman varken ve tüm bilgiyi kataloğa döken ideal bir veritabanını kimin kurup sürdüreceği soru işareti
    Başarılı olup ayakta kalan girişimlerin çoğu ya çok soyut kalmış ya da kapsamı belirli kullanım senaryolarıyla sınırlamış durumda

    • Deneyimime göre, şirket genelinde bir entity'yi tanımlasanız bile (örneğin şirketin resmi varlığı), her departmanın bunu genişletme ihtiyacı doğuyor; yeni özelliklerin tüm departmanlar tarafından mı kullanılacağı yoksa sadece ilgili departmana mı ait olacağı gibi siyasi ve iyimser kararlar gerekiyor
      Resmi entity güncellendiğinde, tüm etkileri değerlendirerek sıkı değişiklik yönetimi yapmak zorundasınız
      Doğru şekilde kurulursa ve arkasında disiplinli bir kurumsal kültür varsa maliyet ve sürtünme ciddi biçimde azalabilir; Netflix'te bu mümkün görünüyor

    • Ayakta kalmayı başarmış benzersiz büyük ölçekli ortak söz varlığı örneği olarak Wikidata anılıyor
      1,65 milyar grafik düğümü, standart bir söz varlığı altında genişlemeyi sürdürüyor