Sanal alanlar ve test ortamları
TL; DR
Sağlam sanal alan = tam izolasyon, sentetik/kişisel olmayan veriler, harici sistemlerin gerçekçi simülatörleri, öngörülebilir taraflar ve zaman yolculuğu, yerleşik idempotency ve webhooks, şeffaf sınırlar ve metrikler. Yiyecek - ulaşılamaz, anahtarlar - kazma, promosyon - sadece kontrol listelerinde.
1) Çevre haritası ve rolleri
Kural: sandbox ≠ prod. Herhangi bir bağlantı - gerçek araçlara/oyunlara/kişisel verilere erişimi olmayan tek yönlü simülatörler aracılığıyla.
2) Veri: sentetikler, anonimleştirme, oturma
Varsayılan sentetikler. Pasaport/kart veri üreteçleri, geçerli ancak finansal olmayan PAN'lar (test BIN'leri), canlı oran ve bakiye modelleri.
Aşama için anonimleştirme: tanımlayıcıların tokenleştirilmesi, kümeler için farklı gizlilik, nadir kombinasyonların kaldırılması.
Sids ve determinizm: Tek takım - tek durum.
bash make db-reset && make db-seed ENV=sandbox SEED=2025_11_03
Zaman yolculuğu: Son tarih/son kullanma testleri için ortamın küresel "saati".
3) Simülatörler ve fişler (saplamalar)
Ödemeler/Bankalar/PSP
Auth/Capture/İade/Ödeme со сценариями: 'Onaylandı', 'reddedildi _ yetersiz', '3ds _ gerekli', 'zaman aşımı', 'çoğaltma'.
PSP webhooks: HMAC imzalı, retrai, gecikmeler ve "kirli internet".
KYC/AML/Yaptırımlar
Ответы: 'clear', 'pep _ match', 'sanction _ hit', 'doc _ mismatch', 'manual _ review'.
Prod'da olduğu gibi idempotency ve oran sınırlarını destekleyin.
Oyun sağlayıcıları/Katalog
Lobi, özellik, RTP/rounds - UX vakaları için sözde rastgele üretim, kontrollü "ödemeler/başarısızlıklar".
Seçenek: Simülatör "önem" anahtarı (mutlu yol vs kaos).
4) Sandbox'ta Webhooks
HMAC imzaları (v1), 'X-Event-Id', 'X-Timestamp' başlıkları, pencere ≤ 5 dakika.
Üstel geri alma, DLQ ve tekrar oynatma.
Konsol "yeniden gönder've denemelerin günlükleri.
pseudo
POST /psp/webhooks
Headers: X-Signature, X-Timestamp, X-Event-Id
Body: { event_id, type, data, attempt }
5) Idempotans ve determinizm
Tüm mutasyonlar 'Idempotency-Key'kabul eder.
Simülatörler sonucu anahtarla saklar (TTL 24-72 h).
"Tohum determinizmi": aynı girdi ile - aynı sonuç (tekrarlanabilir testler için).
6) Güvenlik ve erişim
Ağ izolasyonu/VPC, bireysel sırlar ve etki alanları ('sandbox. örnek. com ').
RBAC/ABAC: rolleri "ortak", "qa", "dev", belirteçlerin ospreys minimumdur.
Oran limitleri ve kotalar: kiracı/anahtar başına adil pay, anlaşılabilir '429'/' Retry-After'.
Sadece KMS/Vault'taki sırlar; Düzenli rotasyon.
Kod/yapılandırma düzeyinde gerçek ödemelerin yasaklanması (feature-flag hard block).
7) API Ağ Geçidi ve sandbox'ta gözlemlenebilirlik
Aynı politikalar: OAuth2/OIDC/JWT, CORS, WAF, DDoS profili.
Metrikler: p50/p95/p99, 4xx/5xx, isabet oranı limitleri, gecikme web kitapları, idempotent isabetleri.
Günlükler/izler: PII yok; Korelasyon 'trace _ id'.
Dashboard "Sandbox Health": çalışma süresi, webhook kuyrukları, simülatör hataları.
8) Özellik bayrakları, sürümleri ve uyumluluk
Kum havuzundaki özelliklerin dahil edilmesi - sahne - prod.
API için SemVer; Swagger/Redoc sanal alanlarında kullanımdan kaldırma/Sunset banner'ı.
GraphQL vitrinleri için ısrarlı sorgular (varsa).
9) Promosyon и CI/CD
1. Yapı/ünite
2. Sözleşme/Sahte testler (OpenAPI/Protobuf/GraphQL SDL)
3. Entegrasyon vs. Simülatörler
4. Sahne alanı regresyonu (anon. snapshots)
5. Kanarya в sopası.
Kapı-kontrol listesi promosyonu: aşağıda § 12.
10) Ortaklar için UAT komut dosyaları (sandbox)
Ödemeler: Web kitapları ve PSP hataları ile auth/capture/return/payout.
KYC/AML: Tüm durumlar + manuel yükseltme.
Idempotency: tekrarlanan 'Idempotency-Key' - aynı sonuç.
Hız sınırı: '429'un doğru kullanımı.
Zaman pencereleri: belirteçlerin sona ermesi, 'Retry-After', zaman yolculuğu durumları.
Webhooks: signatures/retrays/DLQ, manuel tekrar ve dedup.
11) Veri politikası ve gizlilik
Gerçek PAN/KYC rıhtımlarını asla sandbox/stage'de saklamayın.
Anonimleştirme: maskeleme, doğrudan tanımlayıcıları kaldırma, sentetik korelasyon.
Günlük ve webhook organlarının TTL depolanması rutin ≤.
12) Kontrol listeleri
12. 1 Yeni bir sanal alan başlatma
- İzole Ağ/Baz/Önbellek/Nesne Depolama
- KMS/Vault'ta oluşturulan sırlar, role göre erişim
- PSP/KYC/oyun simülatörleri hecelenir ve sürümlendirilir
- Swagger/Redoc + Postman koleksiyonu (sandbox uç noktaları)
- Webhooks: HMAC, yeniden deneme, DLQ, tekrar konsol
- Oran/Kota profilleri, Amortisman/Günbatımı afişleri (varsa)
- Gösterge panoları ve uyarılar (gecikme, 5xx, 429, DLQ)
12. 2 Promosyon serbest bırakma (sahne - prod)
- Sözleşme diff kontrolleri (kırılma yok)
- Aşamada p95/p99 normal yükleyin
- Webhooks UAT uygulandı, idempotency tamam
- Özellik bayrakları hazırlanır, geri alma planı vardır
- Changelog, göç kılavuzu ve ortaklara posta
13) Antipatterns
Prod hizmetlerine/veritabanlarına "gizlice" dokunan bir sanal alan.
Sahne alanı/sandbox'ta gerçek kart/pasaport verileri.
Webhook'ları/geri çekilmeleri olmayan simülatörler sadece "mutlu bir yol'dur.
Hiçbir idempotence - yinelenen ödemeler/bahisler.
Tüm ortaklar için ortak bir HMAC sırrı.
Sınırlar veya şeffaf 429/Retry-After yoktur.
14) Mini snippet'ler
.env sandbox (örnek)
dotenv
API_BASE=https://sandbox.api.example.com
OAUTH_ISS=https://sandbox.idp.example.com
PSP_SIM_URL=https://sandbox.psp-sim.example.com
KYC_SIM_URL=https://sandbox.kyc-sim.example.com
WEBHOOK_SECRET_ROTATION_DAYS=90
FEATURE_FORCE_SANDBOX_PAYMENTS=1
OpenAPI parçası (sandbox sunucusu)
yaml servers:
- url: https://sandbox.api.example.com/v1 description: Public Sandbox
Idempotency pseudocode
pseudo if store.exists(idem_key): return store.get(idem_key)
res = do_business()
store.set(idem_key, res, ttl=72h)
return res
PSP Simülatörü Tetikleyicileri
json
{ "scenario": "payout", "case": "declined_insufficient", "payout_id": "p_123" }
15) Sandbox gözlemlenebilirliği ve SLO
Çalışma süresi sandbox API ≥ 99. %5 (entegrasyon vitrini düşmemelidir).
Webhooks p95 ≤ 3 s - 2xx normal yükte.
Ağ geçidi ≤ 0'ın 5xx hata bütçesi. 1%.
Bağlantı portalı mevcuttur ve sözleşme ile senkronize edilmiştir.
16) Yönetişim
Çevre sahibi (SRE/Platform) ve steward API (sözleşmeler).
Değişiklikleri kırmak için RFC süreci, Kullanımdan Kaldırma/Günbatımı takvimi.
Genel sanal alan için ayrı limitler/kotalar ve "adil kullanım" fiyatlandırması.
Özgeçmiş Özeti
Sanal alan, geliştiriciler için bir üründür, "tabanın kopyası'değil. "Ver: sıkı izolasyon, sentetik veriler, webhooks ve retras ile tam teşekküllü simülatörler, yanlardan ve zaman yolculuğundan determinizm, özellik bayrakları ve şeffaf sınırlar. Her şeyi sözleşmelere, gözlemlenebilirliğe ve yönetişime bağlayın - entegrasyonlarınız hızlı, güvenli ve öngörülebilir hale gelecek ve ağrısız hale gelecektir.