GH GambleHub

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
💡 Գաղափարն այն է, որ մենք հավաքում և ստորագրում ենք միակ պատկերը, հրապարակում ենք SBIM, խթանում ենք GitOps-ի միջոցով։ prod rolaut - կանացի, guardrails։

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 = կառավարվող բարելավումները։

Հիբրիդային մեկուսացումը և համադրումը = օրենքների և վստահության համապատասխանությունը։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։