Ավազաքարեր և թեստային միջավայրեր
1) Ինչո՞ ւ է անհրաժեշտ ընտրված ուրվագծերը
Ավազաքարերը և թեստային միջավայրերը թույլ են տալիս
արագ ստուգել հիպոթեզներն ու դեղամիջոցները առանց ռիսկի վաճառելու։
արագացնել ֆիդբեկ ցիկլը (PR-ն րոպեում ավելի բարձր հղում է);
վերարտադրել սխալներն ու միջադեպերը անվտանգ օրինակների վրա։
կատարել պայմանագրային, ինտեգրալ, բեռային և քաոս թեստեր։
սովորեցնել թիմերը և ակտիվացնել գործընկերներին «խաղահրապարակում»։
Հիմնական սկզբունքները 'մեկուսացումը, մուտացիաները, թեստերի դետերմինիզմը, տվյալների անվտանգությունը, լռելյայն դիտարկումը։
2) Միջավայրի հիերարխիան և նրանց նշանակումը
Dev (Dev) տեղական զարգացում է 'Docker Compose/Testcontainers, պրովայդերների թեթև սիմուլյատորներ։
Sandbox-ը արտաքին ինտեգրման համար (PFC, KYC, խաղերի ագրեգատորներ) ֆեյկովի տվյալներով և իրական արձանագրություններով։
QA/Test - ինտեգրացիոն և e2e թեստեր, կայուն տվյալների ֆիքսումներ, ռեգրեսիաներ։
Stage/Pre-Express-ը հնարավորինս մոտ է կոդավորման երկարացմանը (կազմաձևեր/limits/ligologia)։
Ephemeral Diview-ը «PR» շրջապատումն է (ապրում է ժամերով/օրերով), ինքնավար ռեսուրսները և URL-ը, մեքենայական քանդումը merge/close-ից հետո։
Parity: «ռուսական, քաղաքական և ենթակառուցվածքային կախվածությունները Test/Stage International», տարբերությունները միայն գաղտնիքներում և սահմաններում։
3) Ավազի տեսակները
1. Պրովայդերների ավազները ՝ արտաքին PFC/KYC/խաղերը տալիս են test endpoin.ru; մենք ավելացնում ենք սիմուլյատորների շերտը, որպեսզի մոդելավորենք հազվագյուտ և սխալ դեպքեր (timeouts, 5xx, անկայուն ստորագրություններ)։
2. Ֆունկցիոնալ ավազները 'մետրոպոլիտենի ծառայությունների ինքնաբերական ինստանսներ (վճարումներ, բոնուսներ, գործիքներ) + ֆիքսատորներ։
3. Ուսումնական/դեմո-ավազակները 'API-ի «վիտրինը» DevPortal-ի գործընկերների, բեկորների, քվոտաների և rate limit-ի համար։
4) Պայմանագրեր, սիմուլյատորներ և կամուրջներ
Euract-testing (Pact/Buf): սպառողը/պրովայդերը համապատասխանում են սխեմաներին։ անհամատեղելի փոփոխությունները արգելափակված են CI-ում։
Պրովայդերների սիմուլյատորները 'վերարտադրում են edge-Cass (կրկնակի կոլեկցիոներներ, ժամացույցներ, HMAC ստորագրություն ժամկետանց Timestamp)։
Իրադարձությունների ֆիքսուրները (Kafka/NATS) 'Cass' payline գրադարանը։ authorized`, `kyc. verified`, `game. round. settled`.
Fultinj.ru 'կառավարվող ուշացումները, drop-rate, out-of-order հաղորդագրությունները։
HMAC ստորագրության օրինակ webhooks-ում
X-Timestamp: 1730812800
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))
5) Թեստային տվյալները, GDPR/PCI և անանունացում
Երբեք չենք օգտագործում իրական PII/PAN-ը վաճառքից դուրս։
Անանունացում 'սինթետիկ գեներացիա + զգայուն դաշտերի խառնուրդ; սպիտակ ցուցակները միայն ցուցադրական հաշիվների համար։
Ռուսական factories 'օգտագործողների/գործարքների/նստաշրջանների գործարաններ կանխատեսելի ID և ստատուսների հետ։
Deterministic seeds 'նույն ֆիքսումները թեստերի և միջատների միջև։
Ռեթենշնի քաղաքականությունը 'մեքենա-մաքրումը վերափոխելով շրջակա միջավայրի և թեստային BD-ները։
6) Գաղտնիքները և հասանելիությունը
Առանձին գաղտնիքները չորեքշաբթի ընթացքում։ ժամանակավոր քրեդներ և սահմանափակ դերեր։
KFC/HSM և ռոտացիաներ; բացառված են Git-ի գաղտնիքները։
RBAC/ABAC QA/Stage-ի համար; հասանելիության աուդիտը, break-glass-ը միայն շարժիչների միջոցով։
7) Observability
Լոգները կառուցվածքային են, առանց PII-ի, դիմակավորված։
Latency p50/p95/p99, error-rate, throughput, DLQ, retrai;
Treising (OTel) '«trace _ id» -ի միջոցով, որն ուղղված է սիմուլյատորին։
Dashboards as Code-ը dashbords-ն և alerts տարբերակվում են ծառայության կողքին։
8) Efemer-PR (per-PR)
Լռելյայն վարքագիծը
PR 24CI-ն հավաքում է պատկերը, ստեղծում է արտադրանք, բարձրացնում է namespace 'pr-
արտադրվում է URL-ի և թեստային օգտագործողների հոսանքները։
ներառում է tresing/metriks; PR-ի փակման ժամանակ շրջապատը հեռացվում է։
Namespace-ի օրինակ PR-ում
yaml apiVersion: v1 kind: Namespace metadata:
name: pr-4821 labels:
env: preview owner: team-payments
9) Տեղական զարգացումը 'Compose/Testcontainers
Նվազագույն 'docker-compose։ yml 'գործարկման համար
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"]
Թեստերում կախվածությունը ինքնաբերելու համար Testcontainers-ը ֆիքսված է։
10) Բեռի և կայուն փորձարկումներ
Բեռի ավելցուկ '«կիսագնդեր», «վճարման ալիքներ», «զանգվածային թնդանոթներ»։
KPI: RPS, p95/p99, ռեսուրսային լիմիտներ (CPU/memory), TTFB, Time-to-Wallet։
Chaos-միգրացիաներ ՝ ռուսական պրովայդերներ, լատենտության աճը, ցանցի «flaky»։
Circuit breaker/backoff քաղաքականությունը ստուգվում է Stage-ում։ ձախողումները գնում են DLQ-ում և կրկնվում։
11) Արձագանքման և վերամշակման քաղաքականություն
Replay-դարպասը DLQ-ից իրադարձությունների համար (ձեռքով/մեքենա ռեժիմներ, բեկորների ֆիլտրեր)։
Միգրացիայի հիմքերը ՝ պարզ up/down և www.y-run ավելի բարձր/Stage; պաշտպանություն կործանարար փոփոխություններից։
12) DevPortal-ի ինտեգրումը DevPortal-ի հետ
Ավազների և պրովայդերների կատալոգը, դիմումների պահանջները, հարցումների օրինակները։
«Open Disview» կոճակը յուրաքանչյուր PR/ճյուղի մոտ։ տեսնում է SLO/SLA մետրը։
MSK-ի և Postman/Insomnia-ի գեներացիան։
13) Ավազի պարագծի անվտանգությունը
WAF + IP-allowlist արտաքին ավազների համար;
քվոտաներ և rate limits բանալին;
առանձին ենթախմբեր/ենթաբաժիններ; ավտոմատ հեռացում ոչ ակտիվ շարժիչների;
յուրաքանչյուր տոմսի վրա պատկերների և կախվածության խոցելիությունը։
14) Գործընթացներ ՝ ով և ինչպես է օգտագործում
Զարգացողները տեղական և ավելի բարձր են, արագ ֆիբեկ։
QA-ն կայուն Test/Stage-ն է կառավարվող տվյալների և սիմուլյատորների հետ։
Գործընկերները արտաքին Sandbox-ն են DevPortal-ի, քվոտաների և մոնիտորինգի հետ։
MSE/Պլատֆորմը բեռի, քաոսի, SLO ստուգման ավելցուկներն են։
15) Ավազի գործարկման թուղթ
- Registry-ում պայմանագրերը, սիմուլյատորները ծածկում են հաջողությունները/սխալները/թայմաուտները/կրկնությունները։
- Թեստային տվյալները սինթետիկ են, դետերմինացված, առանց PII/PAN։
- KHL գաղտնիքները, դերերը սահմանափակ են, աուդիտը ներառված է։
- Metriki/treiss/logs հասանելի են. ալտերտերը error-budget և DLQ-ի վրա։
- Ephemeral-ը բարձրանում է PR-ով և քանդվում։
- Բեռի պրոֆիլները և քաոս սցենարները նկարագրված են կոդով։
- Միգրացիայի և իրադարձությունների վերամշակման քաղաքականությունը ստուգված է Stage-ում։
- DevPortal-ը հրապարակում է սկավառակներ և հարցումների հավաքածուներ։
16) Իրականացման ճանապարհային քարտեզը
M0-M1 (MVP) 'տեղական միջավայրերը (Compose), PMS/KYC հիմնական սիմուլյատորը, CI-ի պայմանագրային թեստերը, K8s-ի նեյրոսեքսները։
M2-M3: 108 և ֆիքսված, Dashboards as Code, DLQ + ձեռքով գետեր, բեռների ավելցուկ։
M4-M6: լիարժեք արտաքին Sandbox-ը 'բեկորների/քվոտաների, քաոս ենթակառուցվածքի, MSK-ի ավտոգենի, «երկու տարբերակների զուգահեռ»։
M6 +: Geo-բաշխված Stage-ը failover-ից, SLA-ի SLA-ի փորձարկումների խելացի-միկրոակտիվացումը, DevPortal-ի ավտոմատացված ուսուցման սցենարները։
17) Միջավայրի հասունության մոդելը (հակիրճ)
1. Մոսկվան 'կա Test/Stage, ձեռքով տվյալներ, թույլ մեկուսացում։
2. Առաջընթացը սիմուլյատորներն են, պայմանագրային թեստերը, դիտարկումը, մասնակի գերազանցությունը։
3. Փորձագիտական 'per-PR միջավայրը, քաոսը/108 որպես կոդ, DevPortal, խիստ անվտանգություն և ամբողջական ավտոմատիզացիա։
Հակիրճ եզրակացություն
Ճիշտ նախագծված ավազաքարերը և թեստային միջավայրերը «անվտանգության բարձն» են և «արագացուցիչը» մատակարարումը։ Մեկուսացումը, կրկնօրինակումը, պրովայդերների սիմուլյատորները, դետերմինացված թեստային տվյալները, ուժեղ դիտարկումը և վերափոխման ավտոմատացումը տալիս են արագ և հուսալի ցիկլ «կոորդինատային ռելիզի ստուգում», նվազեցնելով ռեգրեսիայի ռիսկը և պարզեցնելով պլատֆորմի մեծացումը։