Қуттиҳои қуттиҳо ва муҳити озмоишӣ
TL; ДР
Қуттии мустаҳкам = изолятсияи пурра, маълумоти синтетикӣ/ғайришахсӣ, тренажерҳои воқеии системаҳои беруна, паҳлӯҳои пешгӯишаванда ва вақти сафар, idempotency ва webhooks, маҳдудиятҳои шаффоф ва ченакҳо. Ғизо - дастнорас, калидҳо - кофтан, таблиғ - танҳо дар рӯйхатҳои назоратӣ.
1) Харитаи муҳити зист ва нақшҳои онҳо
Қоида: қуттии қуттӣ ≠ прод. Ҳама гуна пайвастшавӣ - тавассути тренажерҳои яктарафа бидуни дастрасӣ ба воситаҳои воқеӣ/бозиҳо/маълумоти шахсӣ.
2) Маълумот: синтетика, беном, нишастан
Синтетикаи пешфарз. Генераторҳои маълумот дар бораи шиноснома/корт, PAN-ҳои эътиборнок, вале ғайри молиявӣ (санҷиши BIN), шакли зинда ва тавозун.
Анонимизатсия барои марҳила: токенизатсияи идентификаторҳо, махфияти дифференсиалӣ барои агрегатҳо, нест кардани комбинатсияи нодир.
Сидҳо ва детерминизм: як даста - як давлат.
bash make db-reset && make db-seed ENV=sandbox SEED=2025_11_03
Вақти сафар: "соат" -и ҷаҳонии муҳити зист барои санҷишҳои мӯҳлат/мӯҳлат.
3) Симуляторҳо ва васлҳо (пояҳо)
Пардохтҳо/Бонкҳо/PSP
Auth/Capture/Баргардонидан/Payout so szenariymi: 'тасдиқшуда', 'радшуда _ нокифоя', '3ds _ талаб', 'вақт', 'нусхабардорӣ'.
Вебхукҳои PSP: HMAC имзо, ретрай, таъхирҳо ва "интернети ифлос".
KYC/AML/санксияҳо
Ответы: 'равшан', 'pep _ match', 'sanction _ hit', 'doc _ match', 'manual _ review'.
Дастгирии idempotency ва маҳдудиятҳои сатҳи мисли prod.
Провайдерҳои бозӣ/Каталог
Лобби, хусусият, RTP/давраҳо - насли псевдо-тасодуфӣ, "пардохтҳо/камбудиҳо" барои парвандаҳои UX назорат карда мешаванд.
Опсия: гузариши "вазнинӣ" -и симулятор (роҳи хушбахт ва бетартибӣ).
4) Вебхукҳо дар қуттии регзор
Имзоҳои HMAC (v1), сарлавҳаҳои 'X-Event-Id', 'X-Timestamp', тиреза ≤ 5 дақиқа.
Бозгашт бо бозгашти экспоненсиалӣ, DLQ ва такрорӣ.
Консол "дубора" ва гузоришҳои кӯшишҳо.
pseudo
POST /psp/webhooks
Headers: X-Signature, X-Timestamp, X-Event-Id
Body: { event_id, type, data, attempt }
5) Идемпотентсия ва детерминизм
Ҳама мутатсияҳо 'Idempotency-Key' -ро қабул мекунанд.
Симуляторҳо натиҷаро бо калид нигоҳ медоранд (TTL 24-72 соат).
"Детерминизми тухмӣ": бо ҳамон вуруд - ҳамон натиҷа (барои санҷишҳои такрорӣ).
6) Амният ва дастрасӣ
Ҷудокунии шабака/VPC, сирри инфиродӣ ва доменҳо ('қуттии қуттӣ. намуна. com ').
RBAC/ABAC: нақшҳои "шарик", "qa", "dev", ospreys токенҳо ҳадди аққал мебошанд.
Меъёрҳо ва квотаҳо: ҳиссаи одилона барои як иҷорагир/калид, фаҳмо '429 '/' Retry-After'.
Асрҳо танҳо дар KMS/Vault; гардиши мунтазам.
Манъи пардохтҳои воқеӣ дар сатҳи рамз/конфигуратсия (блоки сахти хусусият).
7) Дарвозаи API ва мушоҳида дар қуттича
Ҳамон сиёсатҳо: OAuth2/OIDC/JWT, CORS, WAF, профили DD o.SS.
Нишондиҳандаҳо: p50/p95/p99, 4xx/5xx, маҳдудиятҳои хит-суръат, вебхукҳои ниҳонӣ, хитҳои номатлуб.
Гузоришҳо/роҳҳо: PII нест; таносуби 'trace _ id'.
Панели панели "Sandbox Health": вақти корӣ, навбати вебҳук, хатогиҳои симулятор.
8) Парчамҳо, версияҳо ва мутобиқати хусусиятҳо
Ворид намудани хусусиятҳо ба регбокс → марҳила → prod.
Semver барои API; Парчами амортизатсия/ғуруби офтоб дар қуттиҳои Swagger/Redoc.
Дархостҳои доимӣ барои дӯконҳои Graph
9) Таблиғи CI/CD i
1. Сохтан/Воҳид →
2. Озмоишҳои шартномавӣ/масхарабозӣ (Open
3. Интегратсия ва тренажерҳо →
4. Регрессияи марҳилавӣ (лаҳзаҳои фаврӣ) →
5. Канарӣ в прод.
Пешбурди рӯйхати дарвозаҳо: дар зер § 12.
10) Скриптҳои UAT барои шарикон (қуттича)
Пардохтҳо: auth/гирифтан/баргардонидан/пардохт бо webhooks ва хатогиҳои PSP.
KYC/AML: ҳама статусҳо + густариши дастӣ.
Idempotency: такрори 'Idempotency-Key' → ҳамон натиҷа.
Меъёри маҳдудият: Коркарди дурусти '429'.
Тирезаҳои вақт: ба охир расидани нишонаҳо, 'Retry-After', ҳолатҳои сафари вақт.
Webhooks: имзоҳо/ретрейҳо/DLQ, такрори дастӣ ва тарҳҳо.
11) Сиёсати маълумот ва махфият
Ҳеҷ гоҳ докаҳои воқеии PAN/KYC-ро дар қуттии қуттӣ/марҳила нигоҳ надоред.
Анонимизатсия: ниқоб, хориҷ кардани идентификаторҳои мустақим, таносуби синтетикӣ.
Нигоҳдории TTL гузоришҳо ва ҷасадҳои webhook ≤ реҷаи муқаррарӣ.
12) Рӯйхати санҷишҳо
12. 1 Оғози қуттии нав
- Шабакаи ҷудошуда/База/Кэш/Нигоҳдории объект
- Асрори дар KMS/Vault эҷодшуда, дастрасӣ аз рӯи нақш
- PSP/KYC/тренажерҳои бозӣ навишта ва санҷида шудаанд
- Ҷамъоварии Swagger/Redoc + Postman (нуқтаҳои ниҳоӣ)
- Webhooks: HMAC, retry, DLQ, консолҳои такрорӣ
- Профилҳои нархгузорӣ/квотаҳо, баннерҳои амортизатсия/ғуруби офтоб (агар бошад)
- Панели панелҳо ва огоҳиҳо (дермонӣ, 5xx, 429, DLQ)
12. 2 Нашри таблиғот (марҳилаи → prod)
- Санҷиши фарқияти шартнома (шикастан нест)
- Дар марҳилаи муқаррарӣ p95/p99 бор кунед
- Вебхукҳо аз UAT гузаштанд, idempotency ok
- Парчамҳои хусусият омода карда шудаанд, нақшаи бозгашт мавҷуд аст
- Changelog, дастури муҳоҷират ва фиристодани паёмҳо ба шарикон
13) Антипаттернҳо
Қуттии қуттӣ, ки "пинҳонӣ" ба хидматҳои prod/пойгоҳи додаҳо таъсир мерасонад.
Маълумоти воқеии корт/шиноснома дар марҳила/қуттии қуттӣ.
Симуляторҳо бидуни webhooks/retreats танҳо "роҳи хушбахт" мебошанд.
Не idempotence → такрори пардохтҳо/гаравҳо.
Як сирри умумии HMAC барои ҳамаи шарикон.
Ягон маҳдудият ё 429/Retry-After шаффоф вуҷуд надорад.
14) порчаҳои мини
.env. қуттии регзор (мисол)
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
Фрагменти кушодани API (сервери қуттии қуттӣ)
yaml servers:
- url: https://sandbox.api.example.com/v1 description: Public Sandbox
Псевдокоди Idempotency
pseudo if store.exists(idem_key): return store.get(idem_key)
res = do_business()
store.set(idem_key, res, ttl=72h)
return res
Триггерҳои PSP Simulator
json
{ "scenario": "payout", "case": "declined_insufficient", "payout_id": "p_123" }
15) Мушоҳидаҳои Sandbox ва SLO
Қуттии қуттии API ≥ 99. 5% (намоиши ҳамгироӣ набояд афтад).
Webhooks p95 ≤ 3 s то 2xx ҳангоми сарбории муқаррарӣ.
Буҷаи хатогии 5xx дарвоза ≤ 0. 1%.
Портали docking дастрас аст ва бо шартнома ҳамоҳанг карда шудааст.
16) Идоракунӣ
Соҳиби муҳити зист (SRE/Платформа) ва идоракунандаи API (шартномаҳо).
Раванди RFC барои вайрон кардани тағирот, тақвими амортизатсия/ғуруби офтоб.
Маҳдудиятҳо/квотаҳо ва нархгузории "истифодаи одилона" барои қуттии ҷамъиятӣ.
Хулосаи дубора
Қуттии қуттӣ маҳсулот барои таҳиягарон аст, на "нусхаи пойгоҳ. "Бидеҳ: ҷудокунии қатъӣ, маълумоти синтетикӣ, тренажерҳои мукаммал бо вебҳукҳо ва ретраҳо, детерминизм тавассути тарафҳо ва вақти сафар, парчамҳои хусусӣ ва маҳдудиятҳои шаффоф. Ҳама чизро бо шартномаҳо, мушоҳидаҳо ва идоракунӣ пайваст кунед - ва интегратсияҳои шумо зуд, бехатар ва пешгӯишаванда мешаванд ва дарднокро раҳо мекунанд.