Gum gutulary we synag gurşawy
TL; DR
Ygtybarly sandyk gutusy = doly izolýasiýa, sintetiki/şahsylaşdyrylmadyk maglumatlar, daşarky ulgamlaryň hakyky simulýatorlary, öňünden aýdyp boljak sidler we wagt-syýahat, gurlan idempotentlik we webhuklar, aç-açan çäkler we metrikler. Önüm - elýeterli däl, açarlar - aýlanýar, promotion - diňe çek sahypalary boýunça.
1) Daşky gurşawyň kartasy we olaryň rollary
Düzgün: sandbox ≠ prod. Islendik aragatnaşyk - hakyky serişdelere/oýunlara/şahsy maglumatlara girip bilmeýän birtaraplaýyn simulýatorlar arkaly.
2) Maglumatlar: sintetika, anonimleşdirmek, oturtmak
Adaty sintetika. Pasport/kartoçka maglumatlarynyň generatorlary, hakyky, ýöne maliýe däl PAN (test BIN), nyrhlaryň we balanslaryň "janly" patternleri.
Stage üçin anonimleşdirmek: kesgitleýjileri bellemek, agregatlar üçin differensial gizlinlik, seýrek kombinasiýalary aýyrmak.
Sidler we determinizm: bir topar - bir döwlet.
bash make db-reset && make db-seed ENV=sandbox SEED=2025_11_03
Wagt-travel: möhletler/ekspirasiýa synaglary üçin gurşawyň global "sagady".
3) Simulýatorlar we tüpeňler (stubs)
Tölegler/banklar/PSP
Auth/Capture/Refund/Payout со сценариями: `approved`, `declined_insufficient`, `3ds_required`, `timeout`, `duplicate`.
PSP webhuklary: HMAC tarapyndan gol çekilen, retralar, gijikdirmeler we "hapa internet".
KYC/AML/Sanctions
Ответы: `clear`, `pep_match`, `sanction_hit`, `doc_mismatch`, `manual_review`.
Idempotentlik we rate limits proddaky ýaly goldaw.
Oýun üpjün edijileri/katalog
Lobbi, fiçler, RTP/tapgyrlar - UX-wakalar üçin "tölegler/şowsuzlyklar" tarapyndan dolandyrylýan pseudo-görnükli nesil.
Opsiýa: simulýatoryň "agyrlygy" (happy-path vs chaos).
4) Gum gutusyndaky webhuklar
HMAC (v1) gollary, "X-Event-Id", "X-Timestamp" sözbaşylary, penjire ≤ 5 minut.
Eksponensial backoff, DLQ we replay bilen retrailer.
"Gaýtadan ibermek" konsoly we synanyşyklaryň ýazgylary.
pseudo
POST /psp/webhooks
Headers: X-Signature, X-Timestamp, X-Event-Id
Body: { event_id, type, data, attempt }
5) Idempotentlik we determinizm
Mutasiýa "Idempotency-Key" -ni kabul edýär.
Simulýatorlar netijäni açar boýunça saklaýarlar (TTL 24-72 sagat).
"Seed-determinizm": şol bir girelgede - şol bir netije (gaýtalanýan synaglar üçin).
6) Howpsuzlyk we elýeterlilik
Tor izolýasiýasy/VPC, aýry-aýry syrlar we domenler ('sandbox. example. com`).
RBAC/ABAC: "partner", "qa", "dev" rollary, token toplary az.
Rate-limits we kwotalar: adalatly per-tenant/açar, düşnükli '429 '/' Retry-After'.
Diňe KMS/Vault-da syrlar; yzygiderli aýlanmak.
Hakyky tölegleriň kod/konfiga derejesinde gadagan edilmegi (feature-flag hard blok).
7) API Gateway we sandbox gözegçilik
Şol bir syýasatlar: OAuth2/OIDC/JWT, CORS, WAF, DDoS-profil.
Metrikler: p50/p95/p99, 4xx/5xx, hit-rate limitleri, latency webhooks, idempotent hitleri.
Giriş/söwda: PII bolmasa; korelýasiýa 'trace _ id'.
"Gum gutusynyň saglygy" dashbord: apteim, webhuklaryň nobatlary, simulýatorlaryň ýalňyşlyklary.
8) Baýdaklar, wersiýalar we gabat gelmek
Sandbox → stage → prod.
API üçin SemVer; Deprecation/Sunset banneri Swagger/Redoc sandyk gutusynda.
GraphQL-vitrinler üçin persisted queries (bar bolsa).
9) CI/CD и promotion
1. Build/Unit →
2. Contract/Mock tests (OpenAPI/Protobuf/GraphQL SDL) →
3. Simulýatorlara garşy integrasiýa →
4. Stage regress (anon. snapshotlar) →
5. Canary в prod.
Gate-çek-sanawy promotion: aşakdaky § 12.
10) Hyzmatdaşlar üçin UAT-ssenariýalar (sandyk gutusynda)
Tölegler: PSP webhuklary we ýalňyşlyklary bilen auth/capture/refund/payout.
KYC/AML: ähli statuslar + el eskalasiýasy.
Idempotentlik: gaýtalanýan 'Idempotency-Key' → şol bir netije.
Rate-limit: dogry gaýtadan işlemek '429'.
Wagtlaýyn penjireler: tokenleriň ekspirasiýasy, 'Retry-After', wagt-syýahat halatlary.
Webhooks: gollar/retrailer/DLQ, el bilen replay we dedup.
11) Maglumatlar syýasaty we gizlinlik
Hiç haçan hakyky PAN/KYC doklaryny sandbox/stage-da saklamaň.
Anonymizasiýa: gizlemek, göni kesgitleýjileri aýyrmak, sintetiki baglanyşyk.
TTL reglament ≤ webhuk ýazgylaryny we jisimlerini saklamak.
12) Çek-listler
12. 1 Täze gum gutusyny işe girizmek
- Izolirlenen tor/baza/kesh/obýekt ammary
- Syrlar KMS/Vault-da döredildi, rollar boýunça elýeterlilik
- PSP/KYC/oýun simulýatorlary öňe sürülýär we wersiýa edilýär
- Swagger/Redoc + Postman kolleksiýasy (sandbox endpoints)
- Webhuklar: HMAC, retry, DLQ, replay konsoly
- Rate/Quota profilleri, Deprecation/Sunset bannerleri (bar bolsa)
- Daşbordlar we alertler (latency, 5xx, 429, DLQ)
12. 2 Promotion release (stage→prod)
- Şertnamalaýyn diff-barlaglar (breaking)
- Ýüklemek p95/p99 stage kadaly
- Webhuklar UAT-dan geçdi, idempotentlik ok
- Baýdaklar taýýar, yzyna gaýtarmak meýilnamasy bar
- Changelog, migrasiýa gollanmasy we hyzmatdaşlara iberilmegi
13) Antipatternler
Prod-hyzmatlara/bazalara "gizlin" degýän Sandbox.
stage/sandbox-da hakyky kartoçka/pasport maglumatlary.
Webhuksyz/retrajsyz simulýatorlar - diňe "bagtly ýol".
Biperwaýlygyň ýoklugy → tölegleriň/stawkalaryň dublikatlary.
Ähli hyzmatdaşlar üçin bir umumy HMAC-syr.
Çäklendirmeler we aç-açan 429/Retry-After ýok.
14) Kiçi snippetler
.env. sandbox (mysal)
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 bölek (sandbox serweri)
yaml servers:
- url: https://sandbox.api.example.com/v1 description: Public Sandbox
Pseudo idempotentlik kody
pseudo if store.exists(idem_key): return store.get(idem_key)
res = do_business()
store.set(idem_key, res, ttl=72h)
return res
PSP simulýatorynyň triggerleri
json
{ "scenario": "payout", "case": "declined_insufficient", "payout_id": "p_123" }
15) Synlamak we SLO sandyk gutusy
Uptime sandbox API ≥ 99. 5% (integrasiýa penjiresi ýykylmaly däldir).
Webhooks p95 ≤ 3 adaty ýükde 2xx çenli.
Error budget 5xx şlýuzy ≤ 0. 1%.
Dok-portal elýeterlidir we şertnama bilen sinhronlaşdyrylýar.
16) Governance
Gurşawyň eýesi (SRE/Platform) we steward API (şertnamalar).
Breaking-üýtgeşmeler üçin RFC prosesi, Deprecation/Sunset senenamasy.
Köpçüligiň çägesi üçin aýratyn çäklendirmeler/kwotalar we "fair-use" bahasy.
Jemleme
Sandbox "bazanyň nusgasy" däl-de, işläp düzüjiler üçin önüm. Beriň: berk izolýasiýa, sintetiki maglumatlar, webhuklar we retralar bilen doly hukukly simulýatorlar, sidler we time-travel arkaly determinizm, fika baýdaklary we aç-açan çäkler. Hemme zady şertnamalar, gözegçilik we gözegçilik bilen baglanyşdyryň - we integrasiýalaryňyz çalt, howpsuz we öňünden aýdyp boljak we goýberilişleriňiz agyrysyz bolar.