DevOps պրակտիկա և CI/CD
1) Նպատակներն ու սկզբունքները
Արագ և անվտանգ 'կարճ ցիկլեր, փոքր փոփոխություններ, ավտոմատ ստուգումներ։
Կրկնությունը 'ենթակառուցվածքը որպես կոդ (IaC), միջավայրը = կոդ + քաղաքականություն։
Դիտարկումը 'չափումներ/թրեյսներ/արկղից, SLO որպես պայմանագիր։
Կոմպլանսը 'աուդիտ, փոփոխությունների վերահսկողություն, տվյալների կանոնավոր մեկուսացում։
Ոսկու կանոն. <<Սկզբում որակը, ապա արագությունը, հակառակ դեպքում արագությունը երբեք չի հայտնվի>>։
2) Ճյուղեր և միջավայրեր
Trunk-based + feature flags-ը հիմնական ընտրություն է։
Կարճ fice-ճյուղերը (No. 2-5 օր), ամենօրյա merge trunk-ում։
Դրոշները (server-side) իրական առաքման և անվտանգ արձագանքների համար։
Git-միջավայրը '«dev' no 'stage 'line» (+ տարածաշրջանային «07-eu», «07-latam»)։
Արտեֆակտների պրոմոուշինը 'մի հավաքված պատկեր շարժվում է միջավայրի միջոցով (imutable digest)։
Երբ GitFlow: կարգավորող հավաքման հազվագյուտ օրինագծեր/MSK - այդ ժամանակ ռելիզային ճյուղերը + «hardening»։
3) Որակի բուրգը և կարմիր գիծը
1. Ստատիկ վերլուծություն (SFC, ոսպնյակներ, լիցենզիաներ)։
2. Unit/Property-based թեստերը (վայրկյաններ)։
3. Euract-tes.ru (CDC) API-ի և իրադարձությունների համար (OpenAPI/AsyncAPI, Schema Registry)։
4. Ինտեգրացիոն (Testcontainers, տեղական բրոկերներ)։
5. E2E քննադատական ճանապարհներ ՝ wwww.KYC wwww.indows.ru
6. Ծանրաբեռնված/քաոս թեստեր վճարելու/դրամապանակի/խաղերի պրովայդերների համար։
Որակը չի անցնում արգելափակված։ Չկա «ձեռքով բացառություններ» առանց change record։
4) Ծրագրավորման շղթա (supply chain)
SBSA յուրաքանչյուր պատկերի համար (Cyclant DX/SPDX)։
Արտեֆակտների ստորագրությունները (cosport), «միայն ստորագրված» քաղաքականությունը admission-ում։
SCA/Dependabot 'խոցելիություն և լիցենզիա։
Provenault/SLIM 'վերարտադրված հավաքումներ, փակված բիլդի գործակալ, attestron։
Գաղտնիքները 'մենեջերում (KFC/External Secrets), ոչ մի գաղտնիք ռեպոյի/լոգարանների մեջ։
5) GitOps и IaC
Infra as Code: Terraform/Pulumi ամպի համար; Helm/Kustomize-ը k8s-ի համար։
GitoPs-վերահսկիչը (ArgoCD/Flux) 'ագրեսիվ մանիֆեստներ, PR-revew, audit trail։
Պատուհաններ/սառնամանիքներ ՝ ծովահեն շաբաթներ/գագաթնակետային ժամացույցներ, պրոտո-սուլֆերի մեքենա-դադար։
OPA/Kyverno: 108 'latest', non-root, read-only FS, hostPath արգելք։
6) Առաջադիմական առաքում
Canary: 1 385-10-25-50-100 տոկոսը guardrail (p95 latency, 5xx, error budget burn)։
Blue-Green: արագ անջատիչ + արձագանքի պլան։
Shadow/Mirroring: Հարցումների պատճենումը առանց պատասխանելու (PSA նոր հարմարվողների համար)։
Feature flags: Սեգմենտներ (տարածք/դեր/գործընկեր/ջրանցք) + kill-switch։
7) Intel BD (expand-and-intract)
Քայլ 1: մենք ընդլայնում ենք սխեման (նոր սյունակներ/ինդեքսներ) - միասին հին կոդի հետ։
Քայլ 2 'կոդով, որը գրում է երկու տարբերակներում/դաշտերում։
Քայլ 3: Ֆոնի ջոբայի տվյալների տեղայնացումը, առաջընթացի չափումները։
Քայլ 4 'կարդալը նոր դաշտերին։
Քայլ 5։ Հին հեռացումը առանձին է։
Արգելափակող DDL-ի արգելքը 2019 թվականին։ բարձր սեղանների համար 'առցանց ֆորումը։
8) Դիտարկումը և SLO-ն
Մետրիկները ՝ RPS, p50/95/99, 4xx/5xx, saturation (CPU/mem/queue), DLQ/lag բրոկերներ։
Բիզնես մետրիկները ՝ TTP (Time-to-play), TtW (Time-to-wallet), FTD-success, KYC-TtV։
Թրեյսներ ՝ trace-id նավից մինչև BD։
SLO: Օրինակ '"Deposit p95 24300-500 ms", "success 2498։ 5%`, `availability ≥ 99. 9%`.
Burn rate alerta + avto-դադար ածխաջրածինների քայքայման ժամանակ։
9) Միջադեպեր, հետմորտեմներ, հերթափոխեր
Runbooks-ը կրիտիկական հոսքերի վրա (դեպոզիտ/եզրակացություն/CUS, նախկին խաղեր)։
Առաջնահերթություն 'P1... P4, սեփականատեր, ETA, հաղորդակցություն (բանկեր, կարգավիճակ, գործընկերներ)։
Blameless-ը հետմահու է action items-ի և ամսաթվերի հետ։
On-call, չաթ-նախազգուշացում, ստատիկ նորարարություններ յուրաքանչյուր N րոպեում։
Դոկ հետք. Ո՞ վ/երբ (ինչ-որ բան, արտեֆակտը, միջավայրը, դրոշը)։
10) Անվտանգությունը և կոմպլենսը (DevSecOps)
SFC/DFC/IFC, գաղտնիք-սկանը CI-ում։
MTIM ծառայությունը ծառայւոթյուն է, JWT-ը փոքրիկ TTL-ի հետ, ռոտացիան։
Disking PII/PAN լոգոտներում/treiss; WORM ամսագրերը admin-գործողությունների։
Geo-segregation: կլաստերներ/BD տարածաշրջաններով, դռների միջով։
Change to: ticet/approval զգայուն գոտիների համար (դրամապանակ/լիմիտներ)։
11) DORA-մետրիկները և FinOps-ը
Deploy.ru Frequency (ամենօրյա փոքրիկ օրինակներ)։
Lead Time for Changes (իդեալական 'ժամացույց)։
MTTR (վերականգնումը ՝ րոպե/ժամ)։
Change Failure Rate (նպատակը 15 տոկոսն է)։
FinOps: Շրջակա միջավայրի արժեքը, RPS-cashing, տաք փամփուշտներ, համալսարանների auto-դադար, «cost per transaction»։
12) iGaming հատկություն
Պիկի (ռեդա/լայվ) 'մեծ փոփոխությունների սառեցում, տաքացնելով քեշը/պատկերները, քվոտայի թփերը։
Վճարումներ/դրամապանակներ 'առանձին փամփուշտներ/փամփուշտներ, բարձրացված SLO, կանարական rollout տարածաշրջաններում, PSA պրովայդերների կրկնակի հեռաչափը։
KUS/complaens: առանձին cadence ածխաջրածիններ, պարտադիր post-aplaens։
Գործընկերները/աֆֆիլիատները 'անվտանգ SDK, API տարբերակը աջակցության պատուհանի և հին հաճախորդների մոնիտորինգի հետ։
13) CI/CD (YAML, GitHub Actions) Օրինակ CI/CD (YAML, GitHub Actions ArgoCD)
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) Չեկ թերթերը
Merge main
- Unit/CDC/ինտեգրումը կանաչ է։
- Linters/SFC/լիցենզիաները մաքուր են։
- Նորարարված են OpenAPI/AsyncAPI և BD կոդերը։
- Ֆիչե դրոշները ավելացված են, ֆոլբեկները որոշվում են։
Նախքան ֆորումը
- Պատկեր ստորագրվել է, SBSA-ը տեղադրված է, HIGH/CRIT խոցելիությունը փակված է։
- Dashbords/alerts ստեղծվել են; SLO խաղացողները միացված են։
- Արձագանքման պլանը, kill-switch, Shadow (եթե անհրաժեշտ է)։
- Տվյալների սահմանափակումները և քաղաքականությունը ապացուցված են։
Միջադեպերը
- Runbook-ը գտավ և արդիական։
- Հաղորդակցություն 2019/2019 (ձևանմուշ, ETA)։
- Postmortem 48 ժամվա ընթացքում, items գործողությունը ամսաթվերով։
15) Anti-patterna
«Մենք նորից հավաքում ենք յուրաքանչյուր միջավայրի համար» (ոչ արտեֆակտը)։
Ձեռքի քայլերը 'առանց հաճախականության/կրկնության։
API-ի պատասխանները անհամատեղելի են։
Գաղտնիքները CI-ի փոփոխականներում կամ ռեպոզացիայում։
Աղետալի ֆիչիները առանց դրոշի/հակառակը։
SLO/guardrails-ի բացակայությունը Կանարեկային ենթախմբում։
Լոգները PII/PAN-ից, դիմակավորման բացակայությունը։
16) Microcopy օգտակար ձևանմուշները
Ռելիզը (1934)
"Մենք նորարարություն ենք նետում երկրորդային տեմպերով (10 տոկոսը 100 տոկոսն է)։ Հնարավոր է երկարաժամկետ ձգձգումներ մինչև 2 րոպե։ ETA ավարտը 21: 00 EET"։
Պատահականություն (ապրանքի բանկեր)
"Մետրոպոլիտենի պրովայդեր X-ը սխալ է։ Հանցագործությունը կարող է տևել մինչև 15 րոպե։ Մենք աշխատում ենք ուղղման վրա։ Կարգավիճակի հաջորդ նորարարությունը 30 րոպե անց"։
Արձագանք
"Նորարարությունը դադարեցվել է ուշացման աճի պատճառով։ Վերադարձնում ենք նախորդ տարբերակը։ Տվյալները և վիրահատությունները պահպանված են"։
17) Իրականացման գործընթացը (4 սպրինտ)
1. Որակի և pline ստանդարտները ՝ SFC/Unit/CDC, մեկ պատկեր, ստորագրություն, SBSA։
2. GitOps + միջավայրը ՝ Helm/Kustomize, ArgoCD, արտեֆակտային խթան, գաղտնիքների քաղաքականություն։
3. Առաջադիմական մրցույթները և SLO-գեյտները 'canary/shadow, guardrails, ավտոպաուզա։
4. Պիտերբուրգը և արժեքը 'քաոս թեստեր, ավտո/տաք փամփուշտներ, FinOps-dashbords։
Գլամուրային փուչիկ
Trunk + flags + փոքրիկ կուսակցությունները = արագությունը առանց սթրեսի։
Մեկ ստորագրված արտեֆակտը + SBSA = վերահսկվող մատակարարման շղթա։
GitOps + քաղաքականություն = վերարտադրողականություն և աուդիտ։
Canary/Blue-Green + SLO-gats = անվտանգ ֆորումներ։
Expand-and-intract-ը BD-ի համար = զրոյական հոսքեր։
Դիտարկումը և DORA = կառավարվող բարելավումները։
Հիբրիդային մեկուսացումը և համադրումը = օրենքների և վստահության համապատասխանությունը։