Qum qutuları və test mühitləri
1) Niyə xüsusi konturlar lazımdır
Qum qutuları və test mühitləri imkan verir:- tez istehsal üçün risk olmadan hipotez və inteqrasiya yoxlamaq;
- fidbek dövrünü sürətləndirmək (PR → dəqiqələrdə preview-link);
- səhvləri və hadisələri təhlükəsiz surətdə təkrarlamaq;
- müqavilə, inteqrasiya, yük və xaos testləri yerinə yetirmək;
- komandaları öyrətmək və «oyun» meydançasında tərəfdaşları tanıtmaq.
Əsas prinsiplər: təcrid, konfiqurasiya pariteti, testlərin determinizmi, məlumatların təhlükəsizliyi, default müşahidə.
2) Mühit iyerarxiyası və onların təyinatı
Local (Dev) - yerli inkişaf: Docker Compose/Testcontainers, yüngül provayder simulyatorları.
Sandbox - saxta məlumatlar və real protokollarla xarici inteqrasiyalar (PSP, KYC, oyun aqreqatorları) üçün stend.
QA/Test - inteqrasiya və e2e testlər, sabit data fiksturları, regreslər.
Stage/Pre-Prod - prodakşenə maksimum yaxın kontur (konfiqurasiyalar/limitlər/topologiya).
Ephemeral Preview - «PR» mühiti (saatlarla/günlərlə yaşayır), avtonom resurslar və URL-lər, merge/close-dən sonra avtomatik sökülmə.
Parity qaydası: «Test/Stage ≈ Prodda parametrlər, siyasət və infrastruktur asılılığı», fərqlər yalnız sirr və limitlərdə.
3) Qum qutusu növləri
1. Qum qutusu provayderləri: xarici PSP/KYC/oyunlar test endpoints təmin; nadir və səhv halları (timeouts, 5xx, qeyri-sabit imzalar) simulyasiya etmək üçün simulyator qatını əlavə edirik.
2. Funksional qum qutuları: domen xidmətlərinin muxtar instansiyaları (ödənişlər, bonuslar, açivlər) + fiksturlar.
3. Təlim/demo qum qutuları: DevPortal, açarlar, kvotalar və rate limit ilə tərəfdaşlar üçün API «vitrin».
4) Müqavilələr, simulyatorlar və moki
Contract-testing (Pact/Buf): istehlakçı/provayder sxemləri razılaşdırmaq; uyğun olmayan dəyişikliklər CI bloklanır.
Provayder simulyatorları: edge cases (ikiqat kolbeklər, saat sürüklənməsi, vaxtı keçmiş timestamp ilə HMAC imzası) oynayır.
Hadisələrin fiksturları (Kafka/NATS): 'payment. authorized`, `kyc. verified`, `game. round. settled`.
Fault injection: idarə gecikmələr, drop-rate, out-of-order mesajlar.
X-Timestamp: 1730812800
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))
5) Test məlumatları, GDPR/PCI və anonimləşdirmə
Heç vaxt istehsal xaricində real PII/PAN istifadə etməyin.
Anonimləşdirmə: sintetika + həssas sahələrin tokenizasiyası; Yalnız nümayiş hesabları üçün ağ siyahılar.
Data factories: proqnozlaşdırıla bilən şəxsiyyət və statuslarla istifadəçi/əməliyyat/sessiya fabrikləri.
Deterministic seeds: testlər və mühit arasında eyni fikstürlər.
Retenşn siyasəti: qabaqcıl mühit və test DB avtomatik təmizlənməsi.
6) Sirləri və giriş
Çərşənbə günü ayrı sirləri; müvəqqəti kreditlər və məhdud rollar.
KMS/HSM və rotasiya; Git sirləri istisna.
QA/Stage üçün RBAC/ABAC; giriş auditi, break-glass yalnız koordinasiya vasitəsilə.
7) Qeyri-satış mühitində observability
Loqlar - strukturlaşdırılmış, PII olmayan, maskalanmış;
latency p50/p95/p99, error-rate, throughput, DLQ, retray metrləri;
Trace (OTel): giriş sorğusundan simulyatora qədər 'trace _ id' keçidi;
Dashboards as Code - Dashboards və Alerts xidmət yanında versiyası.
8) Efemer qabaqcıl mühit (per-PR)
Default davranış:- PR → CI görüntünü toplayır, miqrasiya yaradır, Kubernetes-də namespace 'pr-
'; - preview-URL və test istifadəçilərinin tokenləri verilir;
- Trace/metrika daxildir; PR bağlandıqda mühit silinir.
yaml apiVersion: v1 kind: Namespace metadata:
name: pr-4821 labels:
env: preview owner: team-payments
9) Yerli inkişaf: Compose/Testcontainers
Minimum 'docker-compose. yml 'lokal başlanğıc üçün: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"]
Testlərdə asılılığı avtomatik qaldırmaq üçün - Testcontainers fiksturları ilə.
10) Yük və davamlı sınaqlar
Yükləmə profilləri: «turnirlər», «ödəniş dalğaları», «kütləvi toplar».
KPI: RPS, p95/p99, resurs limitləri (CPU/memory), TTFB, Time-to-Wallet.
Chaos inyeksiyaları: provayderlərin bağlanması, gecikmənin artması, «flaky» şəbəkəsi.
Devre breaker/backoff siyasətləri Stage-də yoxlanılır; uğursuzluqlar DLQ gedir və replay.
11) Geri çəkilmə və replay siyasəti
DLQ hadisələri üçün replay-şlyuz (əl/avtomobil rejimləri, açar filtrləri).
Miqrasiya bazaları: açıq up/down və dry-run preview/Stage; dağıdıcı dəyişikliklərdən qorunmaq.
12) DevPortal ilə inteqrasiya
Qum qutusu və provayderlərin kataloqu, sahə tələbləri, sorğu nümunələri.
Hər bir PR/filialda «Open Preview» düyməsi; SLO/SLA metrik widget.
Müqavilələrdən SDK və Postman/Insomnia kolleksiyalarının generasiyası.
13) Qum qutusunun perimetri təhlükəsizliyi
WAF + xarici qum qutuları üçün IP-allowlist;
açar üçün kvotalar və rate limits;
fərdi domenlər/alt domenlər; aktiv olmayan açarların avtomatik çıxarılması;
Hər bir siyahıda görüntü və asılılıq zəifliklərinin skan edilməsi.
14) Proseslər: kim və necə istifadə edir
Tərtibatçılar - yerli və qabaqcıl, sürətli fidbek.
QA - sabit Test/Stage idarə verilənlər və simulyatorlar ilə.
Tərəfdaşlar - DevPortal, kvotalar və monitorinq ilə xarici Sandbox.
SRE/Platform - yükləmə profilləri, xaos, SLO yoxlama.
15) Qum qutusunu işə salmaq üçün çek siyahısı
- Registry-də müqavilələr, simulyatorlar müvəffəqiyyət/səhvlər/zaman/təkrarları əhatə edir.
- Test məlumatları sintetik, determinik, PII/PAN deyil.
- KMS sirləri, rolları məhduddur, audit daxildir.
- Metrik/treys/log mövcuddur; error-budget və DLQ.
- Ephemeral prevyu PR qaldırmaq və auto-yıxılır.
- Yükləmə profilləri və xaos ssenariləri kodla təsvir olunur.
- Miqrasiya siyasətləri və hadisələrin təkrarlanması Stage-də yoxlanılır.
- DevPortal qaydaları və sorğu kolleksiyalarını dərc edir.
16) Tətbiqi yol xəritəsi
M0-M1 (MVP): yerli mühit (Compose), PSP/KYC baza simulyatoru, CI-də müqavilə testləri, K8s-də prevew neyspaces.
M2-M3: fikstura kataloqları, Dashboards as Code, DLQ + əl replay, yükləmə profilləri.
M4-M6: açarları/kvotaları ilə tam xarici Sandbox, xaos infrastrukturu, SDK avtogen, miqrasiya siyasəti «paralel iki versiyası».
M6 +: failover ilə geo-paylanmış Stage, testlərdə SLA provayderlərinin ağıllı marşrutlaşdırılması, DevPortalda avtomatlaşdırılmış təlim ssenariləri.
17) Çevrənin yetkinlik modeli (qısa)
1. Əsas - Test/Stage, əl məlumatları, zəif izolyasiya var.
2. Qabaqcıl - simulyatorlar, müqavilə testləri, müşahidə, qismən qabaqcıl.
3. Ekspert - per-PR mühit, kod kimi xaos/yük, DevPortal, ciddi təhlükəsizlik və tam avtomatlaşdırma.
Qısa nəticə
Düzgün dizayn edilmiş qum qutuları və test mühitləri «hava yastığı» və «sürətləndiricidir». İzolyasiya, məhsul pariteti, provayderlərin simulyatorları, determinant test məlumatları, güclü müşahidə və qabaqcıl mühitin avtomatlaşdırılması reqres riskini azaldaraq və platformanın miqyasını asanlaşdıraraq sürətli və etibarlı «kod → yoxlama → buraxılış» dövrünü təmin edir.