Özellik Bayrakları ve Yayın Yönetimi
Özellik Bayrakları ve Yayın Yönetimi
1) Sürümler varsa neden bayraklar?
Özellik Bayrakları (özellik bayrakları), işlevin dağıtımını ve dahil edilmesini serbest bırakmanıza olanak tanır: kod istikrarlı ve önceden üretime girer ve iş içermesi, segmentler, trafik yüzdeleri, pazarlar, VIP/düzenleyici gruplar, cihazlar vb. İçin hedefleme ile yapılandırma/konsol tarafından kontrol edilir. Artıları:- Serbest bırakma hızı ve güvenliği: küçük artışlar + anında geri alma.
- Yarıçap kontrolü: aşamalı sunum, halkalar, SLO durdurucular.
- Deneyler ve A/B: Çok değişkenli bayraklar, etki istatistikleri.
- Operasyonel senaryolar: Riskli ödeme/oyun yolları için kill-switch.
Anahtar ilke: "karanlık gemi, parlak etkinleştirmek" - önceden teslim, bilinçli dahil.
2) Bayrak türleri
Boolean: açma/kapama özellikleri, acil durdurma bayrakları (kill-switch).
Çok değişkenli: davranışlar (A/B/C algoritması, limitler, katsayılar).
Yapılandırma/Uzaktan Yapılandırma: parametreler (zaman aşımları, bahis limitleri, bonus miktarı).
İzin/Yetki: Rollere/katmanlara göre işlevlere/sınırlara erişim.
Operasyonel: trafik yönlendirme (gölge isteği, yeni bir hizmetin dahil edilmesi).
3) Mimari ve veri akışları
Kontrol Düzlemi: konsol/bayrak sunucusu, depolama kuralları/segmentleri, denetim.
Veri Düzlemi (SDK/Proxy/Edge): Bayrakları elde etme ve önbelleğe alma, kuralları yerel olarak değerlendirme (minimum gecikme süresi), kullanılamadığında folback.
- Çekme: SDK, yapılandırmayı periyodik olarak senkronize eder (ETag/stream).
- Push/Streaming: Sunucu Tarafından Gönderilen Olaylar/WebSocket.
- Edge Cache/Proxy: Kullanıcıya daha yakın, p99'u düşürür.
- Kuralların yerel değerlendirmesi (sıcak yolda ağ atlama olmadan).
- Zaman aşımları ve folkbacks ("engelleyici" bayrak okuması olmadan).
- Yapılandırma anlık görüntülerinin imzası/sürümü.
4) Hedefleme ve segmentler
Özellikler: ülke/bölge, dil, platform, KYC seviyesi, VIP seviyesi, risk oranı, hesap yaşı, ödeme yöntemi, sorumlu oyun sınırları.
Segmentler: sürümleri olan kaydedilmiş kurallar; "yumuşak" (pazarlama) ve "sert" (uyumluluk).
Öncelikler/çatışmalar: açık kural emirleri, "son maç" testler olmadan izin verilmez.
Coğrafi/düzenleyici: yargı yetkisine göre ürün kullanılabilirliği bayrakları; Değişmez yüklemler (örneğin, ülkeye özgü indirim yasağı).
json
{
"flag": "new_withdrawal_flow",
"default": false,
"rules": [
{"when": {"country": "CA", "kyc_level": "FULL"}, "rollout": 25},
{"when": {"segment": "vip_tier_3_plus"}, "rollout": 100},
{"when": {"country": "DE"}, "force": false}
],
"expiresAt": "2026-03-31T00:00:00Z"
}
5) Aşamalı sunum: Stratejiler
Kanarya %: %1 - %5 - %25 - %50 - %100 SLO otomatik durdurma ile.
Rings: internal team - beta kullanıcıları - bir bölge - küresel olarak.
Cihaz/istemciye göre örnekleme: yapışkanlığı (hash ID) düşünün.
Gölge trafiği: Bir isteği kullanıcıyı etkilemeden yeni bir yola çoğaltma.
Karanlık başlatma: etkin, ancak görünür değil (metrikleri toplama, önbellekleri ısıtma).
- 10 dakika içinde p95 API gecikmesi 'withdraw'> + %15'in bozulması.
- Hatalar 5xx> 0. 5 % veya ödeme sağlayıcısının başarısızlıklarında bir artış> + 0. 3 p.p.
- Segmentteki eşiğin üzerinde uyarı sahtekarlığı/risk puanlaması.
6) Kill-switch
SRE/On-Call tarafından görülebilen ayrı bir bayrak sınıfı.
TTL önbellek (milisaniye) ile garantili yerel puan.
İade edilemez bağlantı kesilmeleri: sebep + ölüm sonrası bilet gerektirir.
Entegrasyonların otomatik işlemi: bonusu devre dışı bırakmak, ödemeleri manuel moda aktarmak, sağlayıcı X için para yatırmayı yasaklamak.
7) CI/CD ve GitOps ile entegrasyon
CI: bayrak şemalarının doğrulanması, tiftik kuralları, anonimleştirilmiş örneklere karşı kuru çalışma hedeflemesi.
CD: bayrak yapılandırmalarının artifaktlar (semver) olarak tanıtılması, hassas bayraklar için "onay kapıları" (ödemeler/uygunluk).
GitOps: ayrı bir yapılandırma deposundaki bayraklar, birleştirme isteği = değişim olayı, kutunun dışında denetim.
8) Güvenlik ve uyumluluk
RBAC/ABAC: Kim oluşturabilir/dahil edebilir/faiz artırabilir; Görevlerin ayrımı (geliştirici ≠ üretici ≠ ürün sahibi)
Denetim: kim/ne zaman/ne/neden; Gerekçe (bilet/JIRA), olaylarla karşılaştırma.
PII minimizasyonu: hedefleme nitelikleri anonimleştirme/hashing yoluyla geçer.
SDK/Proxy'de Anlık Görüntü İmza Bütünlüğü Denetimi.
Yapılandırmaların teslimi için SLA: "güvenli varsayılan'a indirgenir.
9) Gözlemlenebilirlik ve metrikler
Çalışma:- Bayrak yayılma süresi (p50/p95), yerel önbelleğin isabet oranı, güncelleme sıklığı.
- Etkin bayrakların/eskimiş/asılı bayrakların sayısı (tarihe göre kaldırılmamıştır).
- SLO korumaları: gecikme, hata, dönüşüm, sağlayıcı kararlılığı.
- DORA: tükenme oranı, açılma zamanı, açıldıktan sonra başarısızlık oranı, MTTR.
- A/B göstergeleri: CR, ARPPU, LTV sinyalleri, dolandırıcılık puanlaması üzerindeki etkisi.
10) Bayrak yaşam döngüsü
1. Tasarım: hedef/metrik/sahip/son kullanma tarihi ('expiresAt'), geri alma senaryoları.
2. Uygulama: SDK çağrıları, geri dönüşler, telemetri "pozlama "/" karar ".
3. Rollout: aşamalı servis + SLO kapısı.
4. Stabilize: efekti düzeltin, belgeleri/köklendirmeyi güncelleyin.
5. Temizleme: kod dallarını kaldırın, bayrağı kapatın, "artıkları" denetleyin.
11) Uygulama örnekleri
11. 1 Web/Düğüm. js
ts
// Инициализация SDK (псевдо)
const flags = await sdk.init({ sdkKey: process.env.FLAGS_KEY, user: { id: userIdHash, country, vipTier } });
// Не блокировать рендер:
const showNewCashout = flags.bool("new_withdrawal_flow", false);
if (showNewCashout) {
renderNewFlow();
} else {
renderClassic();
}
11. 2 Kotlin/JVM
kotlin val client = FlagsClient(sdkKey = System.getenv("FLAGS_KEY"))
val context = UserContext(id = userHash, country = country, kycLevel = kyc)
val enabled = client.getBoolean("risk_guard_withdrawals", default = true, context = context)
if (!enabled) {
// аварийный режим: все выводы в manual review routeToManual()
}
11. 3 NGINX (harita üzerinden harici geçiş)
nginx map $http_x_feature $cashout_new {
default 0;
"~enabled" 1;
}
location /withdraw {
if ($cashout_new) { proxy_pass http://new_flow; }
if (!$cashout_new) { proxy_pass http://classic_flow; }
}
12) Risk yönetimi ve ilerici adımlar
Dahil etme adımları: Çalışanların %1'i - %5 "beta" - %10 RU - %25 AB - DE (düzenleyici) hariç %100.
Sınırlayıcılar: maks. 1 adım/30 dakika; 15 dakika pencere başına metriklerin istikrar gereksinimi.
Otomatik durdurma: platform düzeyinde politika (aşağıdaki OPA'ya bakın).
rego package flags.guard
deny[msg] {
input.flag == "new_withdrawal_flow"
input.metrics["withdraw_5xx_rate"] > 0.5 msg:= "Stop rollout: withdraw 5xx too high"
}
13) Erişim kontrolü ve onayları
Değişiklik Türleri: Standart (güvenli) vs hassas (ödemeler/ödemeler/limitler).
Onaylar: ürün sahibi + teknoloji. Sorumlu kişi + uyumluluk (yargı yetkileri için).
Zaman pencereleri (donma): Yüksek riskli dönemlerde (prime time, büyük turnuvalar) kapanımların/uzantıların yasaklanması.
14) Deneyler ve istatistikler
Pozlama olayları: Bayrağın kararını niteliklerle kaydedin.
Analytics: Mevcut kullanıma sunma değeri, segmentler, dönüşümler/hatalar üzerindeki etki.
İstatistiksel kontroller: doğru bölme, kontrol kovaryatları (cihazlar/coğrafi).
Etik ve düzenleyici: Yerel yasalarla sınırlandırılmış segmentasyondan kaçının.
15) Anti-desenler
'Expires' olmadan uzun ömürlü bayraklar, kodda 'şube mezarlığı'.
Sıcak yolda SDK ağ çağrısını engelleme.
PII tarafından aşırı hedefleme, niteliklerin anonimleştirilmemesi.
SLO korumaları/otomatik durdurma olmadan etkinleştirme.
Yüksek riskli akışlar için kill-switch yok (para yatırma/çekme/bonus).
Denetim ve gerekçe olmadan "gizli" manuel bayrak düzenlemeleri.
16) Uygulama kontrol listesi (0-60-90)
0-30 gün
Bir bayrak platformu seçin/bir self-host (SDK, proxy, önbellek) hazırlayın.
Şema girin ('flag', 'owner', 'purpose', 'expires' At ',' risk _ level ').
SLO metriklerini platforma bağlayın (gecikme/anahtar API hataları).
31-60 gün
Hassas bayraklar, OPA korumaları tarafından onayları ekleyin.
Aşamalı stratejileri (yüzde/halka), kill-switch panelini yapılandırın.
Bayrak şeması linterini CI'ye gömün; İlk "asılma'yı soymaya başla.
61-90 gün
GitOps ile tam entegrasyon (MR bayrak düzenleme, denetim).
Görsel panolar: kapsama SDK, dağıtım süresi, önbellek isabetlerinin yüzdesi.
Düzenli "Bayrak Borç Günü": kodu silme ve bayrakları kapatma.
17) Olgunluk metrikleri
Teknik: p95 konfigürasyon kabulü <5 s; Önbellek isabet oranı SDK> %95; 'expiresAt'> %90 ile % bayrakları.
Süreçler: Onayları olan %100 hassas bayraklar; Ortalama "geri alma süresi" <3 dk.
Kod hijyeni: Küresel katılımdan sonraki 30 gün içinde kapatılan bayrakların oranı> %80.
İş etkisi: Geliştirilmiş DORA (↑ yayın frekansı, MTTR ↓), sürümler sırasında azaltılmış olaylar.
18) Uygulamalar: Şablonlar ve Politikalar
Bayrak Düzeni (YAML)
yaml flag: new_withdrawal_flow owner: payments-team risk_level: high purpose: "Новый поток вывода средств"
expiresAt: "2026-03-31T00:00:00Z"
sla:
propagation_p95_ms: 3000 slo_guards:
withdraw_p95_ms_increase_pct: 15 withdraw_5xx_rate_pct: 0.5 approvals:
required: ["product_owner","tech_lead","compliance"]
Sonsuz bayrak ilkesi yok (linter için koşullu)
yaml rules:
- check: expiresAt max_days_from_now: 180 action: error
SDK olay sözleşmesi (pozlama)
json
{
"event": "flag_exposure",
"flag": "new_withdrawal_flow",
"variant": "on",
"userKey": "hash_abcdef",
"context": {"country":"CA","vipTier":"3"},
"traceId": "9f1c...a2",
"ts": 1730623200000
}
19) Sonuç
Özellik Bayrakları, değişiklikler için bir "ses düğmesi'dir. Aşamalı kapanımları, SLO korumalarını, sert denetimi ve düzenli paspaslamayı birleştirin ve bayrakları CI/CD ve GitOps'a bağlayın. Sonuç olarak, bültenler sık, yönetilebilir ve güvenli hale gelecek ve olayların riski öngörülebilir ve kontrol edilebilir hale gelecektir.