Sandbox жана сыноо чөйрөлөр
TL; DR
Ишенимдүү Sandbox = толук обочолонуу, синтетикалык/жекелештирилген маалыматтар, тышкы системалардын реалдуу симуляторлору, алдын ала боло турган сиддер жана убакыт-саякат, орнотулган идемпотенттүүлүк жана вебхактар, ачык-айкын лимиттер жана метриктер. Прод - жеткис, ачкычтар - айланат, promotion - чек баракчалары боюнча гана.
1) Айлана-чөйрөнүн картасы жана алардын ролу
Эреже: sandbox ≠ prod. Ар кандай байланыш - реалдуу каражаттарга/оюндарга/жеке маалыматтарга кирүү мүмкүнчүлүгү жок бир тараптуу симуляторлор аркылуу.
2) Маалыматтар: синтетика, атын атагысы келбеген, сидинг
Синтетика демейки. Паспорт/карта маалыматтарынын генераторлору, валиддик, бирок финансылык эмес PAN (тест BIN), "тирүү" коюмдардын жана баланстардын үлгүлөрү.
stage үчүн анонимизациялоо: идентификаторлорду токенизациялоо, агрегаттар үчүн дифференциалдык купуялуулук, сейрек кездешүүчү комбинацияларды алып салуу.
Сиддер жана детерминизм: бир команда - бир мамлекет.
bash make db-reset && make db-seed ENV=sandbox SEED=2025_11_03
Time-travel: Global "саат" мөөнөтү/expiration тесттер үчүн курчап турат.
3) симуляторлор жана штепсель (stubs)
Төлөмдөр/банктар/PSP
Auth/Capture/Refund/Payout со сценариями: `approved`, `declined_insufficient`, `3ds_required`, `timeout`, `duplicate`.
PSP Webhook: кол HMAC, Retray, кечигүү жана "кир Интернет".
KYC/AML/Sanctions
Ответы: `clear`, `pep_match`, `sanction_hit`, `doc_mismatch`, `manual_review`.
Колдоо Демпотенттик жана rate limits катары прод.
Оюн провайдерлери/каталог
Лобби, чүчүкулак, RTP/раунддар - UX-кейстер үчүн "төлөмдөр/мүчүлүштүктөр" башкарылуучу псевдо-көрүнүктүү муун.
Параметр: "катуулук" симулятор (бактылуу-жол vs chaos).
4) кум кутусунда Webhook
HMAC кол тамгалары (v1), "X-Event-Id", "X-Timestamp" аталыштары, терезе ≤ 5 мүнөт.
экспоненциалдуу backoff, DLQ жана replay менен Retray.
Консол "кайра" жана аракет Логи.
pseudo
POST /psp/webhooks
Headers: X-Signature, X-Timestamp, X-Event-Id
Body: { event_id, type, data, attempt }
5) Идемпотенттүүлүк жана детерминизм
Бардык мутациялар "Idempotency-Key" кабыл алат.
Симуляторлор ачкыч натыйжасын сактайт (TTL 24-72 саат).
"Seed-детерминизм": бир эле кириш менен - бирдей жыйынтык (кайталануучу тесттер үчүн).
6) Коопсуздук жана жеткиликтүүлүк
Тармактарды изоляциялоо/VPC, жеке сырлар жана домендер ('sandbox. example. com`).
RBAC/ABAC: ролдору "өнөктөш", "QA", "Dev", токендердин топтому минималдуу.
Rate-limits жана квоталар: per-tenant/ачкычтын адилеттүү үлүшү, түшүнүктүү '429 '/' Retry-After'.
Secrets гана KMS/Vault; үзгүлтүксүз ротация.
Коддун/конфиганын деңгээлинде реалдуу төлөмдөргө тыюу салуу (feature-flag hard block).
7) API Gateway жана sandbox байкоо
Ошол эле саясат: OAuth2/OIDC/JWT, CORS, WAF, DDoS-кароо.
Метриктер: p50/p95/p99, 4xx/5xx, hit-rate лимиттери, latency webhooks, демпотенттик хиттер.
Логи/соода: PII жок; 'trace _ id' корреляциясы.
Dashboard "Ден соолук Sandbox": аптайм, Webhook кезек, симулятор каталар.
8) Ficha желектери, нускалары жана шайкештиги
sandbox → этап → прод.
SemVer үчүн API; баннер Deprecation/Sunset Swagger/Redoc Sandbox.
Persisted queries үчүн GraphQL-дисплей (бар болсо).
9) CI/CD и promotion
1. Build/Unit →
2. Contract/Mock tests (OpenAPI/Protobuf/GraphQL SDL) →
3. Симуляторлорго каршы интеграция →
4. Этап регресс (анон. snapshots) →
5. Canary в prod.
Gate чек тизмеси promotion: § 12 төмөн.
10) өнөктөштөр үчүн UAT скрипт (Sandbox менен)
Төлөмдөр: auth/capture/refund/payout менен вебхуктар жана PSP каталары.
KYC/AML: бардык статустар + кол эскалация.
Idempotency: кайталап 'Idempotency-Key' → ошол эле натыйжасы.
Rate-limit: туура иштетүү '429'.
Убактылуу терезелер: Токендердин экспирациясы, 'Retry-After', убакыт саякат учурлары.
Webhooks: кол тамгалар/retry/DLQ, кол менен replay жана дедуп.
11) Маалымат саясаты жана купуялык
Эч качан чыныгы PAN/KYC Docks sandbox/этап сактоо.
Атын атагысы келбеген: жашыруу, түз идентификаторлорду алып салуу, синтетикалык корреляция.
TTL сактоо сайттардын логдор жана тел ≤ жөнгө салуу.
12) Чек-баракчалар
12. 1 жаңы Sandbox ишке киргизүү
- Обочолонгон тармак/база/кэш/объект сактоо
- Secrets KMS/Vault түзүлгөн, ролдорду жетүү
- PSP/KYC/оюн симуляторлору жылмакай жана которулган
- Swagger/Redoc + Postman чогултуу (sandbox endpoints)
- Webhook: HMAC, retry, DLQ, консол replay
- Rate/Quota профилдери, Deprecation/Sunset баннерлери (бар болсо)
- Dashbord жана Алерт (latency, 5xx, 429, DLQ)
12. 2 Promotion release (stage→prod)
- Келишимдик diff-текшерүү (жок breaking)
- Жүктөө p95/p99 кадамы боюнча нормалдуу
- Webhooks UAT өттү, Идемпотенттик ок
- Ficha желектери даярдалган, кайтаруу планы бар
- Changelog, миграциялык жол жана өнөктөштөргө жөнөтүү
13) Антипаттерндер
Sandbox, "жашыруун" prod-кызматтарды/базаларды таасир этет.
stage/sandbox реалдуу карта/паспорт маалыматтар.
webhook/retrains жок симуляторлор - "бактылуу жол" гана.
Демпотенттиктин жоктугу → төлөмдөрдүн/коюмдардын дубликаттары.
Бардык өнөктөштөр үчүн бир жалпы HMAC сыры.
Эч кандай чектөөлөр жана ачык-айкын 429/Retry-After.
14) Мини Сниппет
.env. sandbox (мисал)
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 үзүндүсү (sandbox Server)
yaml servers:
- url: https://sandbox.api.example.com/v1 description: Public Sandbox
Psevdocode idempotentity
pseudo if store.exists(idem_key): return store.get(idem_key)
res = do_business()
store.set(idem_key, res, ttl=72h)
return res
PSP симулятор триггерлери
json
{ "scenario": "payout", "case": "declined_insufficient", "payout_id": "p_123" }
15) Байкоо жана SLO Sandbox
Uptime sandbox API ≥ 99. 5% (интеграциялардын витринасы түшпөшү керек).
Webhooks p95 ≤ 3 кадимки жүк менен 2xx чейин.
Error budget 5xx шлюз ≤ 0. 1%.
Док-портал жеткиликтүү жана келишим менен синхрондолгон.
16) Governance
Айлана-чөйрөнүн ээси (SRE/Platform) жана туруктуу API (келишимдер).
Breaking-өзгөртүү үчүн RFC жараяны, Deprecation/Sunset календары.
Жеке лимиттер/квоталар жана баалар "fair-use" коомдук кумдук үчүн.
Резюме
Sandbox - бул "базанын көчүрмөсү" эмес, иштеп чыгуучулар үчүн продукт. Бериңиз: катуу изоляция, синтетикалык маалыматтар, вебхуктар жана ретралар менен толук кандуу симуляторлор, сиддер жана убакыт саякаты аркылуу детерминизм, фича-желектер жана ачык-айкын лимиттер. Баарын келишимдер, байкоо жана governance менен байлап - жана сиздин интеграциялар тез, коопсуз жана алдын ала айтууга болот, ал эми релиздер оорутпайт.