Амалияи Deveops ва CI/CD
1) Ҳадафҳо ва принсипҳо
Зуд ва бехатар: давраҳои кӯтоҳ, партияҳои хурди тағирот, чекҳои автоматӣ.
Такроршаванда: инфрасохтор ҳамчун рамз (IA), муҳити зист = код + сиёсат.
Мушоҳида: ченакҳо/роҳҳо/гузоришҳо аз қуттӣ, SLO ҳамчун шартнома.
Мувофиқат: аудит, назорати тағирот, ҷудокунии минтақавии маълумот.
Қоидаи тиллоӣ: "Аввал сифат, баъд суръат - вагарна суръат ҳеҷ гоҳ пайдо намешавад".
2) Филиалҳо ва муҳитҳо
Парчамҳо дар асоси танаи + - интихоби асосӣ.
Хатҳои хусусияти кӯтоҳ (≤ 2-5 рӯз), ҳамарӯза дар тана.
Парчамҳои паҳлӯии сервер барои таҳвили афзоянда ва хатсайрҳои бехатар.
Муҳитҳои git: 'dev' → 'марҳилаи' → 'prod' (+ минтақавӣ 'prod-eu', 'prod-latam').
Таблиғи артефактҳо: як тасвири ҷамъоваришуда тавассути ВАО тарғиб карда мешавад (теги тағйирнопазир бо ҳазм).
Вақте ки GitFlow: нашри нодири маҷлисҳои танзимкунанда/SDK - пас филиалҳо + "сахтшавӣ" -ро раҳо мекунанд.
3) Пирамидаи сифат ва "хати сурх"
1. Таҳлили статикӣ (SAST, линтерҳо, литсензияҳо).
2. Санҷишҳои воҳид/амвол (сонияҳо).
3. Санҷишҳои шартномавӣ (CDC) барои API ва чорабиниҳо (Open
4. Интегратсия (Testcontainers, брокерҳои маҳаллӣ).
5. E2E роҳҳои муҳим: бақайдгирӣ → KYC → амонат → оғози бозӣ → баромад.
6. Санҷишҳои боркунӣ/бетартибӣ барои пардохтҳо/ҳамён/провайдерҳои бозӣ.
Сифат намегузарад → амонат баста мешавад. Ягон "истисноҳои дастӣ" бидуни сабти тағирот вуҷуд надоранд.
4) Занҷираи таъминот
SBOM барои ҳар як тасвир/бастаҳо (Cyclone .DX/SPDX).
Имзоҳои артифактӣ (cosign), сиёсати қабулро "танҳо имзо" кардаанд.
SCA/Dependabot: осебпазирӣ ва иҷозатномаҳо.
Provenance/SLSA: маҷлисҳои репродуктивӣ, агенти сохтмонии пӯшида, аттестатсия.
Асрори: дар менеҷер (KMS/Сирри беруна), на сирри ягона дар репо/гузоришҳо.
5) Гитопс и И.С
Инфра ҳамчун рамз: Terraform/Pulumi for Cloud; Helm/Kustomize барои k8s.
Назоратчии GitCCD/Flux): манифести декларативӣ, баррасии PR, пайгирии аудит.
Windows/ях мекунад: ҳафтаҳо/соатҳои авҷи мусобиқа - худкори таваққуфи истеҳсолот.
Сиёсати OPA/Kyverno: не ': охирин', решавӣ, танҳо хондани FS, манъ кардани host
6) Расонидани прогрессивӣ
Canary: 1 → 5 → 10 → 25 → 50 → 100% оид ба ченакҳои муҳофизатӣ (p95 ниҳонӣ, 5xx, сӯхтани буҷа).
Кабуд-Сабз: гузариши зуд + нақшаи бозгашт.
Соя/Зеркало: дархостҳои нусхабардорӣ бидуни таъсир ба посух (барои адаптерҳои нави PSP).
Парчамҳои хусусият: фарогирӣ аз рӯи сегмент (минтақа/нақш/шарик/канал) + kill-switch.
7) Муҳоҷирати пойгоҳи додаҳо (тавсеа ва шартнома)
Қадами 1: васеъ кардани схема (сутунҳо/индексҳои нав) - мувофиқ бо рамзи кӯҳна.
Қадами 2: рамзи партофтан, ки ба ҳарду шакл/майдон менависад.
Қадами 3: Муҳоҷирати додаҳои пасзаминаи корӣ, нишондиҳандаҳои пешрафт.
Қадами 4: Гузариш ба майдонҳои нав.
Қадами 5: Бартараф кардани кӯҳна як нашри алоҳида аст.
Бастани манъи DDL дар вақти саривақтӣ; барои мизҳои баланд - муҳоҷирати онлайн.
8) Мушоҳида ва SLO
Нишондиҳандаҳо: RPS, p50/95/99, 4xx/5xx, пуррагӣ (CPU/mem/навбат), ақибмонии DLQ/брокер.
Нишондиҳандаҳои корӣ: TTP (вақт ба бозӣ), TTW (вақт ба ҳамён), FTD-муваффақият, KYC-TTV.
Нишонаҳо: пайгирӣ аз дарвоза ба пойгоҳи додаҳо.
SLO: масалан, 'Амонат p95 ≤ 300-500 мс', муваффақият ≥ 98. 5% ',' мавҷудият ≥ 99. 9%`.
Огоҳии сатҳи сӯхтан + релизҳои худкори таваққуф ҳангоми таназзул.
9) Ҳодисаҳо, пас аз марг, тағирот
Китобчаҳо дар ҷараёнҳои интиқодӣ (амонат/баромад/ACC, бозиҳои зинда).
Миқёси афзалиятнок: P1...P4, соҳиб, ETA, иртибот (баннер, саҳифаи вазъ, шарикон).
Постмортемаи беайб бо ашё ва санаҳои амал.
Алтернативаҳо ҳангоми занг, огоҳиҳои чат, ҳолати ҳар як дақиқаи N навсозӣ мешаванд.
Роҳчаи банд: кӣ/кай/чӣ интишор шудааст (содир, артефакт, муҳити зист, парчам).
10) Амният ва мувофиқат (Dev
SAST/DAST/IAST, сканкунии махфӣ дар CI.
MTLS servis↔servis, JWT бо TTL хурд, гардиши калидҳо.
Маскани PII/PAN дар гузоришҳо/роҳҳо; Гузоришҳои фаъолияти маъмурияти WORM.
Ҷуғрофия: кластерҳо/пойгоҳи додаҳо аз рӯи минтақа, масири дарвоза.
Идоракунии тағирот: чипта/тасдиқ барои минтақаҳои ҳассос (ҳамён/маҳдудиятҳо).
11) Нишондиҳандаҳои DORA ва FIN
Басомади густариш (нашри ҳаррӯзаи хурд).
Вақти роҳбарӣ барои тағирот (идеалӣ: тамошо).
MTTR (барқароршавӣ: дақиқаҳо/соатҳо).
Тағйир додани меъёри нокомӣ (ҳадаф ≤ 15%).
Финҳо: арзиши муҳитҳо, кэши RPS, ҳавзҳои гарм, таваққуфи худкори коргарон, "арзиши як амалиёт".
12) Хусусияти IGaming
Қуллаҳо (мусобиқаҳо/зинда): яхкунонии тағиротҳои асосӣ, гарм кардани кэш/тасвирҳо, афзоиши квота.
Пардохтҳо/ҳамёнҳо: ҳавзҳо/гиреҳҳои инфиродӣ, SLO-ҳои баланд, паҳншавии канарейка аз рӯи минтақа, телеметрияи дугона аз ҷониби провайдерҳои PSP.
CC/мувофиқат: cadence алоҳидаи релизҳо, навсозиҳои ҳатмии мувофиқат.
Шарикон/Шарикон: SDK-и бехатар, версияи API бо равзанаи дастгирӣ ва мониторинги мизоҷони кӯҳна.
13) Намунаи CI/CD (YAML, Амалҳои Git
yaml name: ci-cd on:
push:
branches: [ main ]
paths: [ "services/wallet/" ]
jobs:
build_test_scan:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Setup Node uses: actions/setup-node@v4 with: { node-version: 22 }
- run: npm ci --omit=dev working-directory: services/wallet
- run: npm test -- --ci working-directory: services/wallet
- name: Lint & SAST run: npm run lint && npm run sast working-directory: services/wallet
- name: Build image run:
docker build -t registry. local/wallet:${{ github. sha }} -f Dockerfile.
cosign sign --key $COSIGN_KEY registry. local/wallet:${{ github. sha }}
- name: SBOM & Scan run:
syft packages registry. local/wallet:${{ github. sha }} -o cyclonedx-json > sbom. json trivy image --exit-code 1 --severity HIGH,CRITICAL registry. local/wallet:${{ github. sha }}
- name: Push image run: docker push registry. local/wallet:${{ github. sha }}
deploy_stage:
needs: build_test_scan runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Bump Helm values (image tag)
run: yq -i '.image. tag = "${{ github. sha }}"' helm/wallet/values-stage. yaml
- name: Create PR to gitops repo run: gh pr create -R org/gitops -B stage -H stage-bump/wallet-${{ github. sha }} -t "wallet:${{ github. sha }}" -b "Promote to stage"
promote_prod:
if: github. ref == 'refs/heads/main'
needs: deploy_stage runs-on: ubuntu-latest steps:
- name: Gate: SLO/quality checks run:./scripts/gates/check_stage_health. sh # p95, 5xx, e2e ok
- name: Canary 10%
run:./scripts/gitops/canary. sh wallet ${{ github. sha }} 10
- name: Auto-pause on degradation run:./scripts/gates/guardrails. sh./scripts/gitops/rollback. sh wallet
- name: Roll to 100%
run:./scripts/gitops/rollout. sh wallet ${{ github. sha }} 100
14) Рӯйхати санҷишҳо
Пеш аз якҷояшавӣ ба асосӣ
- Воҳиди/CDC/ҳамгироии сабз.
- Литсензияҳои Linters/SAST/тоза мебошанд.
- Схемаҳои Open
- Парчамҳои Fiche илова карда шуданд, пайраҳаҳо муайян карда шуданд.
Пеш аз нашр дар prod
- Тасвири имзошуда, SBOM замима карда шуд, осебпазирии HIGH/CRIT баста шуд.
- Панели панелҳо/огоҳиҳо сохта шудаанд; Дарвозаҳои SLO пайваст карда шудаанд.
- Нақшаи бозгашт, куштан-гузариш, соя (агар лозим бошад).
- Маҳдудиятҳои минтақавӣ ва сиёсати маълумот тасдиқ карда шуданд.
Ҳодисаҳо
- Дафтарчаи корӣ ёфт ва то ба имрӯз.
- Иртибот бо корбарон/шарикон (қолаб, ETA).
- Постмортем дар 48 соат, ашёҳои амал бо сана.
15) Анти-намунаҳо
"Азнавсозӣ барои ҳама муҳит" (таблиғи артефакт нест).
Қадамҳои дастиро бе аудит/такрорӣ ҷойгир кунед.
Муҳоҷирати пойгоҳи додаҳо "сар-ба", посухҳои номувофиқи API.
Асрҳо дар тағирёбандаҳои CI ё дар репозитория.
Хусусиятҳои фалокатбор бе парчам/бозгашт.
Набудани SLO/guardrail оид ба баровардани канария.
Сабтҳо бо PII/PAN, ниқоб нест.
16) Қолабҳои фоиданоки микрокопӣ
Озод кардан (ба шарикон):- "Мо навсозии модули пардохтро марҳила ба марҳила таҳия карда истодаем (10% → 100%). Таъхири кӯтоҳмуддати бақайдгирӣ то 2 дақиқа имконпазир аст. ETA ба итмом мерасад - 9 саҳар. ЭЭТ"
- "Таъминкунандаи пардохт X ноустувор аст. Бақайдгирӣ метавонад 15 дақиқаро дар бар гирад. Мо дар ислоҳ кор карда истодаем. Навсозии навбатии вазъ дар 30 дақиқа аст"
- "Навсозӣ бо сабаби зиёд шудани таъхирҳо боздошта мешавад. Мо нусхаи қаблиро бармегардонем. Маълумот ва амалиёт захира карда шуданд"
17) Раванди татбиқ (4 спринт)
1. Стандартҳои сифат ва қубур: SAST/Unit/CDC, тасвири ягона, имзоҳо, SBOM.
2. Муҳитҳои Gitops +: Helm/Kustomize, Argocd, таблиғи артефакт, сиёсати махфӣ.
3. Варақаҳои прогрессивӣ ва дарвозаҳои SLO: канарӣ/сояҳо, посбонҳо, худкор-hub.
4. Эътимоднокӣ ва арзиш: озмоишҳои бетартибӣ, ҳавзҳои autoscale/ҳавзҳои гарм, панелҳои панели Fin
Варақаи ниҳоии фиреб
Танаи + парчамҳо + партияҳои хурд = суръати стресс.
Артефакти ягонаи имзошуда + SBOM = занҷири таъминоти назоратшаванда.
Сиёсатҳои Gitops + = репродуктивӣ ва аудит.
Дарвозаҳои Canary/Blue-Green + SLO = релизҳои бехатар.
Тавсеа ва шартнома барои DB = сифр вақти корӣ.
Мушоҳида ва DORA = такмилдиҳии идорашаванда.
Ҷудокунӣ ва риояи минтақавӣ = риояи қонунҳо ва эътимод.