deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

OSDU-Lite, OSDU servis API'lerini tek bir in-memory süreçte yerel olarak çalıştırıyor

Yeni bir açık kaynak emülatör, sekiz çekirdek OSDU servisini — Storage, Search, Dataset, File, Workflow, Legal, Schema ve Entitlements — tek bir in-memory süreç olarak yeniden uyguluyor; yerel geliştirme, eğitim içerikleri ve CI için tasarlandı.

OSDU-Lite, OSDU servis API'lerini tek bir in-memory süreçte yerel olarak çalıştırıyor

OSDU-Lite nedir

Bir geliştirici, Open Subsurface Data Universe (OSDU) platformunun HTTP yüzeyini tek bir in-memory süreç içinde yeniden üreten OSDU-Lite adlı açık kaynak bir emülatör yayınladı. dev.to'daki proje duyurusuna göre tüm uygulama tek bir Python dosyasında (server/server.py) yer alıyor ve gerçek bir dağıtıma karşı yazılmış bir istemci, hiçbir değişiklik yapılmadan doğrudan localhost:8089 adresine yönlendirilebiliyor. Sunulan fikir, yaygın olarak kullanılan AWS emülatörü LocalStack'i açıkça örnek alıyor: bulut yok, OpenSearch yok, OIDC sağlayıcısı yok, kalıcılık katmanı yok.

OSDU, enerji endüstrisi için standart servis sözleşmelerinden oluşan bir küme — Storage, Search, Dataset, File, Workflow, Legal, Schema ve Entitlements — ve üretim ortamındaki yer altı veri platformlarının temelini oluşturuyor. Ancak gerçek bir dağıtım; Kubernetes, ayrıca OpenSearch, Redis, PostgreSQL ve bir OIDC sağlayıcısı gerektiriyor. Yazarın yaklaşımı, bunun bir platform ekibi için makul bir beklenti olduğu, ancak bir istemcinin gerçekten çalışıp çalışmadığı gibi daha dar bir soruyu yanıtlamak için orantısız kadar fazla makine gerektirdiği yönünde.

Kurulum, GitHub'ın container registry'sinde sohaibqasem/osdu-lite olarak yayınlanan multi-arch bir imaja (amd64 ve arm64) karşı tek bir docker run komutu; kaynaktan derleme make start, sağlık kontrolü, entitlements, legal tag'ler, kind'ler ve search kontrolü için ise make smoke. Süreci yeniden başlatmak platformu temiz bir duruma sıfırlıyor; bu da yazarın hedeflediği üç kullanım senaryosuna uyuyor: yerel geliştirme, eğitim rehberleri ve CI.

Neler emüle ediliyor

Emülatör, çekirdek servisleri gerçek istemcilerin kullandığı API sürümlerinde kapsıyor:

  • Storage v2: PUT/GET/PATCH/DELETE, sürüm geçmişi, kopyalama, batch işlemleri, kind'ler ve cursor'lar
  • Search v2: Lucene tarzı sorgular, cursor sorguları, aggregation'lar, as-owner ve health
  • Dataset v1: kayıt, saklama ve alma talimatları, registry, revoke ve soft delete
  • File v2: metadata, yükleme URL'leri, imzalı teslim ve getLocation
  • Workflow v1: deploy/list/run yaşam döngüsü ve Osdu_ingest manifest alımı
  • Legal v1: legal tag CRUD işlemleri, doğrulama, batch getirme, özellikler ve sorgu operatörleri
  • Schema v1: kind listeleme ve schema create/update/system
  • Entitlements v1 ve v2: gruplar, üyeler, membersCount, roller ve appIds

Bilinçli sadakat tercihleri

dev.to yazısına göre, emülatöre karşı gerçek kod yazan herkes için iki davranış önemli. Birincisi, ingest işlemi bir dağıtımın doğrulayacağı şekilde doğrulanıyor: bir kaydın bilinen bir kind'a, acl.viewers ve acl.owners alanlarına ve Legal servisinde gerçekten var olan legal tag'lere ihtiyacı var. Başarısızlıklar bir nedenle birlikte 400 döndürüyor, böylece istemciler hatalı biçimlendirilmiş kayıtları sessizce gönderemiyor.

İkincisi, Storage ve Search tasarım gereği asenkron. Bir kayıt hemen depolanıyor ancak simüle edilmiş bir indexer gecikmesinden sonra — varsayılan olarak 0,7 saniye — aranabilir hale geliyor; bu da gerçek bir OSDU'da bir kaydı ingesting ettikten sonra onu search'te hemen bulamama deneyimini yeniden üretiyor.

Dataset alma talimatları ayrıca bütünlük verisi taşıyor; bilinen her dosya için boyut ve SHA-256 dahil — ve paketle gelen demo istemcisi, indirilen bir LAS dosyası checksum'u geçemezse işlemi durduruyor.

Well 360 referans örneği

Depo, çıplak API stub'ları sunmak yerine, resmi OSDU eğitim zincirinin yapısını izleyen eksiksiz bir Well 360 entegrasyonu içeriyor: Well'den Wellbore'a, oradan WellLog'a, Dataset'e ve LAS'a. Üç demo script, LAS yüklemeli kayıt kayıt ingest işleminden; 3 kuyu, 4 kuyu bacası, 4 well log ve 4 dataset'lik toplu yüklemeye; oradan da Osdu_ingest ile manifest almaya kadar ilerliyor.

Merkez parça, gerçek org.opengroup.osdu:os-core-common SDK'sına karşı derlenmiş bir Java tüketici olan Well360App. EAGLE-01 kuyusunu arıyor, W-1001 kaydını okuyor, kuyu bacalarını ve well log'larını çözümlüyor, dataset alma talimatlarını getiriyor, LAS dosyasını indirip checksum'unu doğruluyor, ardından bir cursor search çalıştırıyor. Hiçbir durum yazmıyor; yazar bunu zincirin tamamı için güvenli, salt okunur bir sonda olarak konumlandırıyor.

Testler ve CI

Proje, sıfır bağımlılıklı stdlib unittest içinde 73 test taşıyor — Docker veya canlı sunucu gerekmiyor — ve kayıt doğrulama ile sürüm geçmişi, silme ve temizleme, search sorgu dili ve cursor yaşam döngüsü, indexer gecikmesi, dataset bütünlüğü, File v2, manifest alımı, LegalTag operatörleri, Schema, entitlements RBAC ve TTL temizliği kapsıyor.

CI bilinçli olarak offline ve deterministik: birim test paketi, canlı bir smoke testi ve demo'nun tükettiği os-core-common API yüzeyini sabitleyen bir istemci sözleşme kontrolü. Hiçbir CI adımı harici bir paket registry'sine bağımlı değil.

Gerçek bir OSDU'ya geçiş

Varsayılanlar — base URL, partition, bearer token, ACL grupları ve onaylı legal tag'ler — geçersiz kılınabilir ve Java Search ile Storage kodunun, ingest etmeden önce rotaları ve schema sürümlerini doğrulamak dışında, gerçek bir dağıtıma karşı değişmeden çalıştığı belirtiliyor. OIDC, TLS, retry ve metric gibi üretim kaygıları, bir emülatör için bilinçli olarak kapsam dışı.

Neden önemli

OSDU'nun değeri sözleşmelerinde yatıyor, ancak bugüne kadar bu sözleşmelere karşı test yapmak ya tam bir bulut ve Kubernetes yığını hazırlamak ya da gerçek API'lardan sapabilen el yapımı mock'lar anlamına geliyordu. Emülatörler bu kalıbın başka yerlerde işe yaradığını zaten kanıtladı — AWS için LocalStack — ve şimdi enerji endüstrisinin veri platformu standardına uzanıyor. Detaylar önemli: katı ingest doğrulaması ve simüle edilmiş indexer gecikmesi, emülatöre karşı çalıştırılan kodun gerçek bir OSDU üzerinde büyük olasılıkla aynı şekilde davranacağı anlamına geliyor; resmi SDK'ya karşı derlenmiş ve API yüzeyi CI'da sabitlenmiş Java demosu ise uyumluluğu bir iddiadan otomatik olarak kontrol edilen bir şeye dönüştürüyor. Eğitim içerikleri yazanlar, entegrasyon geliştiricileri ve demo hazırlayan herkes için ilk OSDU çalıştırmanın maliyeti, bir bulut hesabı kurmaktan tek bir container komutuna düşüyor.

  • #osdu
  • #emulator
  • #local-development
  • #docker
  • #open-source

İlgili yazılar