GH GambleHub

Sanal alanlar ve test ortamları

1) Neden seçilmiş konturlara ihtiyacımız var

Sanal alanlar ve test ortamları şunları yapmanızı sağlar:
  • Üretimi riske atmadan hipotezleri ve entegrasyonları hızlı bir şekilde test edin;
  • Geri bildirim döngüsünü hızlandırın (PR> dakikalar içinde önizleme bağlantısı);
  • Hataları ve olayları güvenli bir kopyada çoğaltmak;
  • Sözleşme, entegrasyon, yük ve kaos testleri gerçekleştirin
  • Ekipleri eğitin ve "oyun alanında" ortakları donatın.

Temel ilkeler: izolasyon, konfigürasyon paritesi, test determinizmi, veri güvenliği, varsayılan gözlemlenebilirlik.

2) Ortamların hiyerarşisi ve amaçları

Yerel (Dev) - yerel geliştirme: Docker Compose/Testcontainers, hafif sağlayıcı simülatörleri.
Sandbox, sahte veriler ve gerçek protokollerle harici entegrasyonlar (PSP, KYC, oyun toplayıcıları) için bir standdır.
QA/Test - entegrasyon ve e2e testleri, kararlı veri düzeltmeleri, regresyonlar.
Aşama/Ön Prod - üretime mümkün olduğunca yakın anahat (konfigürasyonlar/limitler/topoloji).
Geçici Önizleme - çevre "PR üzerinde" (saatlerce/günlerce yaşar), çevrimdışı kaynaklar ve URL, birleştirme/kapatma işleminden sonra otomatik yıkım.

Parite kuralı "Test/Stage ≈ Prod'daki ayarlar, politikalar ve altyapı bağımlılıkları'dır, farklılıklar sadece sırlarda ve sınırlardadır.

3) Sandbox türleri

1. Sağlayıcı sanal alanları: Harici PSP/KYC/oyunları test bitiş noktaları sağlar; Nadir ve hatalı durumları (zaman aşımları, 5xx, kararsız imzalar) simüle etmek için bir simülatör katmanı ekliyoruz.
2. İşlevsel sanal alanlar: etki alanı hizmetlerinin özerk örnekleri (ödemeler, bonuslar, başarılar) + düzeltmeler.
3. Eğitim/demo sanal alanlar: DevPortal ile ortaklar için API "vitrin", anahtarlar, kotalar ve oran sınırı.

4) Sözleşmeler, simülatörler ve moki

Sözleşme testi (Pact/Buf): Tüketici/sağlayıcı planlar üzerinde anlaşır; Uyumsuz değişiklikler CI'da engellenir.
Sağlayıcı simülatörleri: oyun kenarı kılıfları (çift çarpışmalar, saat kayması, süresi dolmuş zaman damgalı HMAC imzası).
Olay Düzeltmeleri (Kafka/NATS): Case Library'nin ödemesi. Yetkili ',' kyc. Doğrulanmış ',' oyunu. yuvarlak. Yerleşmiş.
Hata enjeksiyonu: kontrollü gecikmeler, düşme hızı, sıra dışı mesajlar.

Webhooks sanal alanında HMAC imzası örneği:

X-Timestamp: 1730812800
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))

5) Test verileri, GDPR/PCI ve anonimleştirme

Asla gerçek PII/PAN üretim dışı kullanmayın.
Anonimleştirme: sentetik üretimi + hassas alanların tokenizasyonu; Sadece demo hesapları için beyaz liste.
Veri fabrikaları: Öngörülebilir kimlikleri ve durumları olan kullanıcı/işlem/oturum fabrikaları.
Deterministik tohumlar: Test çalışmaları ve çarşamba günleri arasında aynı düzeltmeler.
Saklama politikası: Önizleme ortamlarının ve test veritabanlarının otomatik olarak temizlenmesi.

6) Sırlar ve erişim

Çarşamba günleri ayrı sırlar; Geçici krediler ve kısıtlı roller.
KMS/HSM ve rotasyonlar; Git'te hariç tutulan sırlar.
QA/Stage için RBAC/ABAC; erişim denetimi, sadece müzakere yoluyla camı kırmak.

7) Endüstriyel olmayan ortamlarda gözlemlenebilirlik

Günlükler - yapılandırılmış, PII olmadan, maskeleme ile;

Metrik gecikme süresi p50/p95/p99, hata oranı, iş hacmi, DLQ, retrai;

İzleme (OTel): Simülatöre giriş isteğinden uçtan uca 'trace _ id';

Kod Olarak Gösterge Panoları - panolar ve uyarılar hizmetin yanında sürüm haline getirilir.

8) Geçici önizleme ortamları (PR başına)

Varsayılan davranış:
  • PR: CI bir görüntü toplar, geçişler oluşturur, Kubernetes'te 'pr- ' ad alanını yükseltir;
  • Test kullanıcılarının önizleme URL'leri ve belirteçleri verilir;
  • Etkin izleme/metrikler; PR kapatıldığında ortam silinir.
PR'de ad alanı için örnek manifestosu:
yaml apiVersion: v1 kind: Namespace metadata:
name: pr-4821 labels:
env: preview owner: team-payments

9) Yerel kalkınma: Compose/Testcontainers

Minimal 'docker-compose. yml 'yerel olarak çalıştırmak için:
yaml version: "3. 9"
services:
api:
build:.
environment:
- DB_URL=postgres://postgres:postgres@db:5432/app? sslmode=disable
- KAFKA_BROKER=kafka:9092 ports: ["8080:8080"]
depends_on: [db, kafka]
db:
image: postgres:16 environment: [POSTGRES_PASSWORD=postgres]
ports: ["5432:5432"]
kafka:
image: bitnami/kafka:latest environment:
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 ports: ["9092:9092"]

Testlerde bağımlılıkların otomatik olarak kaldırılması için - Düzeltmeleri olan Testcontainers.

10) Yük ve stabilite testleri

Yükleme profilleri: "Turnuvalar", "ödeme dalgaları", "kitlesel kabartmalar".
KPI: RPS, p95/p99, kaynak sınırları (CPU/bellek), TTFB, Time-to-Wallet.
Kaos enjeksiyonları: sağlayıcıların bağlantısının kesilmesi, gecikmede artış, "lapa lapa" ağlar.
Devre kesici/geri kapanma politikaları Sahne Alanı'nda kontrol edilir; Dips DLQ gidin ve çoğaltın.

11) Geri alma ve tekrar oynatma politikaları

DLQ'dan olaylar için ağ geçidini yeniden oynatın (manuel/otomatik modlar, tuşlara göre filtreler).
Geçiş üsleri: Önizleme/Sahne Alanı'nda yukarı/aşağı ve kuru çalıştırmayı temizleyin; Yıkıcı değişikliklere karşı koruma.

12) DevPortal ile Entegrasyon

Sanal alanların ve sağlayıcıların kataloğu, alan gereksinimleri, sorgu örnekleri.
Her PR/şube için "Önizleme Aç" düğmesi; SLO/SLA metrikleri widget'ı.
Sözleşmelerden SDK ve Postman/Insomnia koleksiyonlarının oluşturulması.

13) Sandbox çevre güvenliği

Harici sanal alanlar için WAF + IP-allowlist;

Anahtar başına kotalar ve oran limitleri;

Bireysel alanlar/alt alanlar; Etkin olmayan anahtarların otomatik olarak kaldırılması;

Her yapıdaki görüntü güvenlik açıklarının ve bağımlılıklarının taranması.

14) Süreçler: kim kullanır ve nasıl

Geliştiriciler - yerel ve önizleme, hızlı geri bildirim.
QA - Yönetilen veriler ve simülatörler ile istikrarlı Test/Aşama.
Ortaklar - DevPortal, kotalar ve izleme ile harici Sandbox.
SRE/Platform - yük profilleri, kaos, SLO doğrulaması.

15) Sandbox başlatma kontrol listesi

  • Kayıt Defterindeki sözleşmeler, simülatörler başarı/hatalar/zaman aşımları/tekrarları kapsar.
  • Test verileri sentetik, deterministik, PII/PAN yok.
  • KMS'den sırlar, roller sınırlı, denetim etkin.
  • Metrikler/yollar/günlükler mevcuttur; Hata bütçesini ve DLQ'yu uyarır.
  • Geçici önizlemeler PR ve otomatik olarak yıkıldı.
  • Yük profilleri ve kaos senaryoları kod ile tanımlanır.
  • Geçiş ilkeleri ve olay tekrarı Sahne Alanı'nda kontrol edildi.
  • DevPortal kılavuzlar ve sorgu koleksiyonları yayınlar.

16) Uygulama Yol Haritası

M0-M1 (MVP): yerel ortamlar (Compose), temel PSP/KYC simülatörü, CI sözleşme testleri, K8s önizleme alanları.
M2-M3: fikstür katalogları, Kod olarak Gösterge Panoları, DLQ + manuel tekrar, yük profilleri.
M4-M6: Anahtarlı/kotalı tam teşekküllü harici Sandbox, kaos altyapısı, SDK autogen, "paralel iki sürüm" geçiş politikası.
M6 +: Yük devretme ile coğrafi olarak dağıtılmış Stage, testlerde SLA yoluyla sağlayıcıların akıllı yönlendirilmesi, DevPortal'da otomatik eğitim komut dosyaları.

17) Çevre olgunluk modeli (kısa)

1. Temel - Test/Sahne, manuel veri, zayıf izolasyon var.
2. Gelişmiş - simülatörler, sözleşme testleri, gözlemlenebilirlik, kısmi önizlemeler.
3. Uzman - PR ortamları başına, kod olarak kaos/yük, DevPortal, güçlü güvenlik ve tam otomasyon.

Kısa sonuç

Düzgün tasarlanmış sanal alanlar ve test ortamları, teslimatın "hava yastığı've" hızlandırıcısı'dır. İzolasyon, üretim ile parite, sağlayıcı simülatörleri, deterministik test verileri, önizleme ortamlarının güçlü gözlemlenebilirliği ve otomasyonu, hızlı ve güvenilir bir kod, kontrol, serbest bırakma döngüsü sağlar, regresyon riskini azaltır ve platform ölçeklendirmesini basitleştirir.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.