Veri doğrulama
1) Neden iGaming platformunun buna ihtiyacı var?
Raporlara ve KPI'lara güven: GGR/NET, dönüşümler, elde tutma, RG sinyalleri.
ML/puanlama güvenilirliği: dolandırıcılıkla mücadele/öneriler/RG için doğru özellikler.
Gerçek zamanlı işlemler: Ödemeler/UX etkilenmeden önce sürüklenme/olay kaybı uyarıları.
Uyumluluk: Olmaması gereken yerlerde PII/sırlar yok; kanıtlanabilir izlenebilirlik.
2) Nerede doğrulanır: kontrol seviyeleri
1. Enjeksiyon (batch/stream): şema, tipler, gerekli alanlar, idempotency/dedup.
2. Akış işleme: pencereler/filigranlar, sipariş, eksiklikler/gecikmeler, tam olarak bir kez.
3. ETL/ELT ve dönüşümler: bağlantılar/sevinçler, toplamlar, iş dengeleri.
4. DWH/vitrinler (Altın): tablolar arasındaki tutarlılık, tazelik, anahtarların benzersizliği.
5. Özellik Mağazası/çevrimiçi: özellik aralıkları, offlayn↔onlayn tutarlılık.
6. BI/API: sayım ve filtreler, gecikme/tazelik üzerine SLA'lar, k-anonimlik.
3) Çek türleri (katalog)
Şematik: tip/nullable/enum/regex/JSON-shape; Durdurmak için uyumsuz değişiklikler
Etki Alanı: ≥0 tutarları, ∈ para birimi {EUR, USD, TRY, BRL}, ≤ limit oranı, strana∈litsenzii.
Kimlik/anahtarlar: Birincil anahtar benzersizdir, yabancı anahtar "asılı" değildir.
Alan kalitesi: dolgunluk, uzunluk, biçim (IBAN, BIN, e-posta belirteci).
İstatistik/taban çizgileri: frekanslar, dağılımlar, nicel koridorlar.
Anomaliler: hacim/kesir sivri uçları, sıfırlar/kopyalar, şema sürüklenmesi.
Tazelik: Maks (ts) X'den eski değil; lag ingest - altın ≤ T.
Tutarlılık: parçaların toplamı = özet; Çoklu masa mutabakatı.
Gizlilik/güvenlik: İzin verilen bölgeler dışında sıfır PII; tokenization/maskeler.
Düzenleyici: RG/AML alanları mevcut ve makul.
4) Veri sözleşmeleri
Sözleşme, kaynak ve tüketiciler arasındaki şema + kalite kuralları + SLO'yu düzeltir.
Minimum sözleşme (parça):yaml dataset: payments_ingest_v2 owner: team-payments schema:
id: {type: string, pattern: "^[a-f0-9]{32}$", unique: true}
ts: {type: timestamp, timezone: "UTC", nullable: false}
amount: {type: decimal(18,2), min: 0. 00}
currency: {type: string, enum: ["EUR","USD","TRY","BRL"]}
psp: {type: string, required: true}
quality:
freshness_max: "PT5M"
completeness_min: 0. 995 duplicate_rate_max: 0. 001 pii_allowed: false slo:
p95_ingest_latency_ms: 30000 success_rate: 0. 995
Sözleşme değişiklikleri - semver ve geçişler yoluyla: 'MAJOR' kırılır, 'MINOR'bir alan ekler,' PATCH 'açıklamayı düzeltir.
5) Beklentiler ve politikalar
Beklentiler - boru hatlarında (batch/stream) gerçekleştirilen bildirimsel kontroller.
Beklentiler (YAML):yaml expectations:
- name: unique_primary_key check: "unique(id)"
severity: "error"
- name: amount_non_negative check: "amount >= 0"
severity: "error"
- name: currency_enum check: "currency in ['EUR','USD','TRY','BRL']"
severity: "error"
- name: ts_fresh_enough check: "now() - max(ts) <= interval '5 minutes'"
severity: "warn"
- name: pii_absent check: "no_plain_pii(columns: ['email','card','iban'])"
severity: "error"
Yanıt politikası:
- 'hata' - parti/parti karantinası, uyarı + bilet; Aşağı akış bloğu.
- 'varn' - geçer, ancak ayrıştırma görevi oluşturur; kaliteli işaretleme.
- 'info' - sadece izleme.
6) Akış: Kontrollerin özellikleri
Filigranlar/geç veriler: '120s ≤' geç olalım, aksi takdirde - karantina; sonlu pencerelerle dengeleyin.
Idempotency: event key + hash payload - broker/thread üzerinde kilitlenme.
Tam olarak bir kez: kritik akışlar (ödemeler/turlar) için işlemsel şarkı (+ idempotent lavabolar).
Hacim sayaçları: pencere başına "beklenen" vs "alınan"; Tutarsızlık uyarısı.
scala val deduped = stream
.keyBy(_.id)
.process(new DeduplicateWithin(Time. minutes(10)))
val validated = deduped
.filter(_.amount >= 0)
.filter(_.currency in Set("EUR","USD","TRY","BRL"))
emitToQuarantineIfLate(validated, allowedLateness = 120. seconds)
7) DWH/SQL: değişmezler ve uzlaştırmalar
SQL denetimleri (örnek):sql
-- uniqueness
SELECT id, COUNT() c FROM gold. payments GROUP BY 1 HAVING c>1;
-- freshness
SELECT NOW() - MAX(ts) AS lag FROM gold. payments;
-- reconciliation of totals
SELECT
SUM(amount) AS by_rows,
(SELECT total_amount FROM gold. payments_summary WHERE date=CURRENT_DATE) AS by_summary
FROM gold. payments
WHERE date = CURRENT_DATE;
Pencere eşleştirme: günlük 'detay - özet' mutabakatlar, tutarsızlık raporları, otomatik bilet.
8) Gizlilik ve güvenlik
Varsayılan PII sürümü: giriş maskeleri/belirteçleri; Günlüklerde "ham'e-posta/kart/telefonları yasaklıyoruz.
İzin politikası: PII içeren tablolar - ayrı katman/dizin, rollere göre erişim (RBAC/ABAC).
Raporların K-anonimliği: dilimdeki en az N satır.
Sızıntı dedektörleri: PII desenleri için düzenli kontroller, "sırlar" (anahtarlar/belirteçler).
Yargı bölgeleri: Jeo/kiracı izolasyonu (ülke/marka/lisans), ayrı anahtarlar.
9) Kalite ve SLO metrikleri
Kalite ölçümleri (D):- Tazelik - lag max (ts).
- Tamlık - boş olmayan/beklenen kayıtların oranı.
- Benzersizlik - yinelenen anahtarlar.
- Tutarlılık - değişmezler ve dengeler (tablolar arası).
- Doğruluk - harici alan kaynağı/kuralları ile doğrulama.
- Geçerlilik - eşleştirme/enum/regex türleri.
- 'Tazelik payments_gold ≤ 5 мин' (p95).
- 'Bütünlük game_rounds ≥ 99. %7/gün '.
- 'Duplicate _ rate ≤ 0. 1‰`.
- 'PII _ leak = 0'.
10) Uyarılar, biletler ve runbook
Yönlendirme: Slack/PagerDuty - etki alanı sahibi; Örnekleri ve diff'i otomatik olarak uygulayın.
Gruplama: set başına bir olay "etiketler: veri kümesi = ödemeler, marka = TR".
1. Ingest günlüğü ve broker kuyruğunu kontrol edin.
2. PSP tarafından "beklenen ve alınan'ı karşılaştırın.
3. Retrai/Switch PSP Rotasını Etkinleştir.
4. Açıklama nedeni; Sırtların yeniden başlatılması; ölüm sonrası.
11) Sürüm, testler ve feragat süreci
Kalite kurallarının semver: 'quality @ MAJOR. MINÖR. PATCH '.
Dönüşümlerin birim testleri (SQL/DBT/python) ve kaynaklar için sözleşme testleri.
ALTIN setler: regresyonda bilinen tutarsızlıklar/sızıntılar zorunludur.
Feragat: Kuralı ihlal etmek için kısa süreli izin (açıklama, mal sahibi, terim, telafi edici önlemler).
12) Kataloglar/eserler (hazır şablonlar)
12. 1 Datacet pasaportu
yaml dataset: gold. game_rounds owner: team-games steward: data-governance contracts: ["games_rounds_v3"]
quality_slo:
freshness_p95: "PT10M"
completeness_min: 0. 997 uniqueness_max_dup: 0. 0005 alerts:
channels: ["#dq-incidents","#games-ops"]
severity_map: {error: "P1", warn: "P2"}
12. 2 Karantina politikası
yaml quarantine:
storage: "s3://quarantine/payments/"
retention: "P30D"
access: ["team-payments","data-governance"]
auto_reprocess:
cron: "/15 "
max_attempts: 3
12. 3 Beklenti для Özellik Mağazası
yaml featureset: fs_payments_online_v1 checks:
- name: feature_freshness check: "now() - max(feature_ts) <= interval '60 seconds'"
severity: "error"
- name: range_amount_avg check: "amount_avg in [0, 2000]"
severity: "warn"
- name: enum_device check: "device in ['ios','android','web']"
severity: "error"
13) iGaming'in özellikleri: hazır kılıflar
Ödemeler/PSP: PSP raporlarına para yatırma/çekme işlemlerinin mutabakatı; Eksik durumlar - butch karantina; Büyüme için uyarı 'decline _ rate'.
Oyun sağlayıcıları: 'rounds _ per _ min' vs baseline + schema drift from the provider - transformation block of provider A, status banner.
RG/AML: zorunlu alanlar (sınırlar, kendini dışlama, KYC durumları); Gecikmiş KYC - ödeme bloğundaki bayrak, uygun bilet.
Pazarlama/CRM: kampanya parametrelerinin geçerliliği, UTM, olay tekdüzeliği; Vitrinlerde k-anonimlik.
14) Uygulama Yol Haritası
0-30 gün (MVP)
1. Anahtar kümeleri için sözleşmeler ekleyin: ödemeler, game_rounds, kullanıcılar, özellikler.
2. Beklentiler kataloğu (10-15 temel) + karantina + uyarılar.
3. Pano Tazeliği/Bütünlüğü/Benzersizliği; Olay raporu.
4. Runbook'и для 'Tazelik', 'Kopyalar', 'Şema sürüklenmesi'.
30-90 gün
1. Intertable mutabakatlar ve dengeler; feragat süreci ve semver kuralları.
2. Akış doğrulama (geç veri, deadlock, filigran); PII dedektörleri.
3. CI/CD ile entegrasyon: Kaynakların ve dönüşümlerin sözleşme testleri.
4. Etki alanı komutundaki kaliteli SLO'lar OKR'ler.
3-6 ay
1. AIOps eşik ipuçları; Nedenlerin otomatik lokalizasyonu.
2. Çapraz marka/coğrafi kalite politikası ve uygunluk raporları.
3. Post-mortems P1 olayları - altın setlerin ve kuralların yenilenmesi.
4. Akış uyarısı ve anomali analizi (tek döngü) ile bağlantı.
15) RACI
Veri Yönetişimi (A/R): standartlar, sözleşmeler, kural denetimi.
Domain Owners (R): Domain beklentileri ve değişmezleri.
Veri Platformu (R): beklentiler çerçevesi, karantina, uyarılar, izleme.
Güvenlik/DPO (A/R): gizlilik/PII/k-anonimlik, coğrafi/kiracı izolasyonu.
SRE/Gözlenebilirlik (C): olay yönlendirme, SLO/SLI.
Ürün/Finans (C): iş dengeleri, olay öncelikleri.
16) Anti-desenler
Doğrulama "sadece DWH'de" - geç, pahalı, acı verici.
Karantina yok - "kir" Gold/ML'ye gider ve güveni kırar.
Mevsimsellik/saat/pazar olmadan sert eşikler - uyarı fırtınası.
Sahip ve semver kurallarının eksikliği - istisnaların kaosu.
PII ve "ortak kanala ekran görüntüleri'ile günlükler.
Kalıcı bir devre yerine bir kerelik "sıhhi günler".
17) İlgili bölümler
DataOps Uygulamaları, Veri Denetimi ve Sürüm Oluşturma, Veri Kaynağı ve Yolu, Veri Akışı Uyarıları, Anomali ve Korelasyon Analizi, Erişim Kontrolü, Veri Güvenliği ve Şifreleme, Veri Saklama Politikaları, MLOps: Model Kullanımı.
Toplam
Doğrulama sonunda bir filtre değil, uçtan uca bir kalite sözleşmesidir: enjeksiyondan ve akıştan vitrinlere ve çevrimiçi özelliğe kadar. Açık beklentiler, karantinalar, uyarılar ve SLO'lar verileri güvenilir bir varlığa dönüştürür: raporlar doğrudur, modeller istikrarlıdır, ödemeler güvenlidir, uyumluluk sakindir.