DevOps პრაქტიკა და CI/CD
1) მიზნები და პრინციპები
სწრაფი და უსაფრთხო: მოკლე ციკლები, ცვლილებების მცირე სერია, ავტომატური შემოწმება.
განმეორება: ინფრასტრუქტურა, როგორც კოდი (IaC), გარემო = კოდი + პოლიტიკა.
დაკვირვება: მეტრიკა/ტრეისი/ყუთის ლოგები, SLO, როგორც კონტრაქტი.
შესაბამისობა: აუდიტი, ცვლილებების კონტროლი, რეგიონალური მონაცემთა იზოლაცია.
ოქროს წესი: „ჯერ ხარისხი, შემდეგ სიჩქარე - წინააღმდეგ შემთხვევაში სიჩქარე არასოდეს გამოჩნდება“.
2) ფილიალი და გარემო
Trunk-based + feature flags - ძირითადი არჩევანი.
მოკლე ჩიპების ფილიალები (2-5 დღის განმავლობაში), ყოველდღიური მერჯები ტრუნკში.
დროშები (სერვერის მხარე) სავარაუდო მიწოდებისა და უსაფრთხო დარტყმისთვის.
Git გარემოცვები: 'dev' - 'stage' 'stage' (+ რეგიონალური 'eu-eu ",' exillatam ').
არტეფაქტების პოპულარიზაცია: ერთი შეგროვებული სურათი მოძრაობს გარემოში (immutable tag by digest).
როდესაც GitFlow: მარეგულირებელი შეკრების იშვიათი გამოშვებები/SDK - მაშინ გამოშვება + „hardening“.
3) ხარისხის პირამიდა და წითელი ხაზი
1. სტატიკური ანალიზი (SAST, ლინტერი, ლიცენზია).
2. Unit/Property-based ტესტები (წამები).
3. Contract-tests (CDC) API და მოვლენებისთვის (OpenAPI/AsyncAPI, Schema Registry).
4. ინტეგრაცია (Testcontainers, ადგილობრივი ბროკერები).
5. კრიტიკული ბილიკების E2E: KYC - ანაბრის რეგისტრაცია, თამაშის დაწყება და დასკვნა.
6. დატვირთვის/ქაოსის ტესტები გადახდის/საფულისთვის/თამაშების პროვაიდერებისთვის.
ხარისხი არ გადის და გამონაბოლქვი იბლოკება. არ არსებობს „ხელით გამონაკლისი“ change-record- ის გარეშე.
4) პროგრამული უზრუნველყოფის მიწოდების ჯაჭვი (supply chain)
SBOM თითოეული გამოსახულების/პაკეტისთვის (CycloneDX/SPDX).
არტეფაქტების ხელმოწერები, „მხოლოდ ხელმოწერილი“ პოლიტიკა admission- ში.
SCA/Dependabot: დაუცველობა და ლიცენზია.
Provenance/SLSA: რეპროდუქციული შეკრებები, დახურული ბილეთის აგენტი, ატესტაცია.
საიდუმლოებები: მენეჯერში (KMS/External Secrets), არც ერთი საიდუმლო რეპო/ლოგოებში.
5) GitOps и IaC
Infra as Code: Terraform/Pulumi ღრუბლისთვის; Helm/Kustomize for k8s.
GitOps კონტროლერი (ArgoCD/Flux): დეკლარაციული მანიფესტები, PR review, audit trail.
ფანჯრები/ყინვები: ტურნირის კვირეული/მწვერვალი საათი - მანქანების შეფერხება პროტო-გამოშვებებით.
პოლიტიკოსები OPA/Kyverno: no ': latest', non-root, read-only FS, hostPath აკრძალვა.
6) პროგრესული მიწოდება
Canary: 1-5-10-25-50-100% guardrail (p95 latency, 5xx, error budget burn).
Blue-Green: სწრაფი შეცვლა + გამოტოვების გეგმა.
Shadow/Mirroring: მოთხოვნის კოპირება პასუხზე გავლენის გარეშე (ახალი PSP გადამყვანებისთვის).
Feature flags: ჩართვა სეგმენტებში (რეგიონი/როლი/პარტნიორი/არხი) + kill-switch.
7) მონაცემთა ბაზის მიგრაცია (ექსპანსია და კონტრაქტი)
ნაბიჯი 1: გავაფართოვოთ სქემა (ახალი სვეტები/ინდექსები) - შეესაბამება ძველ კოდს.
ნაბიჯი 2: კოდის გამონაყარი, რომელიც წერს ორივე ვერსიაში/ველში.
ნაბიჯი 3: ფონის ჯობის მონაცემების მიგრაცია, პროგრესის მეტრიკა.
ნაბიჯი 4: კითხვის შეცვლა ახალ ველებზე.
ნაბიჯი 5: ძველი მოცილება ცალკე გამოშვებაა.
პრემიერ დროში DDL ბლოკირების აკრძალვა; მაღალი ცხრილებისთვის - ონლაინ მიგრაცია.
8) დაკვირვება და SLO
მეტრიკა: RPS, p50/95/99, 4xx/5xx, saturation (CPU/mem/queue), DLQ/ბროკერების ლაგი.
ბიზნეს მეტრიკა: TTP (დროის თამაში), TtW (დრო-დრო), FTD-success, KYC-TtV.
ტრეისი: Trace-id კარიბჭედან BD- მდე.
SLO: მაგალითად, 'Deposit p95-300-500 ms', 'success-98. 5%`, `availability ≥ 99. 9%`.
Burn rate alerta + ავტომატური პაუზა დეგრადაციის დროს.
9) ინციდენტები, პოსტმორტემი, ცვლა
Runbooks კრიტიკულ ნაკადებზე (ანაბარი/გამომავალი/KUS, ცოცხალი თამაშები).
პრიორიტეტული მასშტაბი: P1... P4, მფლობელი, ETA, კომუნიკაცია (ბანერი, სტატუსის გვერდი, პარტნიორები).
Blameless postmortem მოქმედების items და თარიღები.
ალტერნატივები on-call, chat-gates, სტატუსის განახლებები ყოველ N წუთში.
დოკის კვალი: ვინ/როდის/რა ატვირთა (commit, არტეფაქტი, გარემო, დროშა).
10) უსაფრთხოება და შესაბამისობა (DevSecOps)
SAST/DAST/IAST, საიდუმლო სკანირება CI- ში.
mTLS სერვისი - მომსახურება, JWT მცირე TTL- ით, კლავიშების როტაცია.
Masking PII/PAN ლოგოებში/ტრეისებში; ADM- სამოქმედო WORM ჟურნალები.
Geo-segregation: მტევანი/BD რეგიონებში, მარშრუტიზაცია კარიბჭის საშუალებით.
Change მენეჯმენტი: ticet/approval მგრძნობიარე ზონებისთვის (საფულე/ლიმიტები).
11) DORA მეტრიკა და FinOps
Eployment Frequency (ყოველდღიური მცირე გამოშვებები).
Lead Time for Changes (იდეალი: საათი).
MTTR (აღდგენა: წუთი/საათი).
Change Failure Rate (მიზანი 15%).
FinOps: გარემოს ღირებულება, RPS ქეშირება, თბილი აუზები, მანქანების შეფერხება, „cost per transaction“.
12) iGaming სპეციფიკა
მწვერვალები (ტურნირები/ლაივი): ძირითადი ცვლილებების გაყინვა, ქეში/სურათების დათბობა, კვოტების ბუჩქები.
გადახდა/საფულე: ცალკეული აუზები/კვანძები, გაზრდილი SLO, რეგიონების კანარის rollout, PSP პროვაიდერების ორმაგი ტელემეტრია.
KUS/შესაბამისობა: ცალკეული cadence გამოშვებები, სავალდებულო შესაბამისობის პოსტ-აფრები.
პარტნიორები/აფილატები: უსაფრთხო SDK, API ვერსია ძველი მომხმარებლების მხარდაჭერის ფანჯრით და მონიტორინგით.
13) მაგალითი 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) ჩეკის ფურცლები
მერჯამდე
- Unit/CDC/ინტეგრაცია მწვანეა.
- Linters/SAST/ლიცენზიები სუფთაა.
- განახლებულია OpenAPI/AsyncAPI სქემები და BD მიგრაცია.
- დაემატა ფიჩეს დროშები, განისაზღვრება ფოლკლორული დროშები.
გამოშვებამდე
- სურათი გაფორმებულია, SBOM თან ერთვის, HIGH/CRIT დაუცველობა დახურულია.
- დაშბორდი/ალერტები შეიქმნა; SLO კარიბჭეები დაკავშირებულია.
- გამოტოვების გეგმა, kill-switch, Shadow (საჭიროების შემთხვევაში).
დადასტურებულია რეგიონალური შეზღუდვები და მონაცემთა პოლიტიკა.
ინციდენტები
- Runbook ნაპოვნი და აქტუალურია.
- მომხმარებლებთან/პარტნიორებთან კომუნიკაცია (შაბლონი, ETA).
- postmortem 48 საათზე, მოქმედება თარიღებით.
15) ანტი შაბლონები
„ჩვენ ხელახლა ვაგროვებთ თითოეულ გარემოს“ (არ არსებობს არტეფაქტი).
ხელუხლებელი ნაბიჯები აუდიტის/განმეორების გარეშე.
BD მიგრაცია „შუბლზე“, API- ს შეუთავსებელი პასუხები.
საიდუმლოებები ცვლადი CI ან საცავში.
კატასტროფული ფიჩები დროშის/გამოტოვების გარეშე.
SLO/guardrails- ის არარსებობა კანარის გამოშვებისას.
ლოგოები PII/PAN, შენიღბვის ნაკლებობა.
16) სასარგებლო მიკროკოპის შაბლონები
გამოშვება (პარტნიორები):- "ჩვენ განვაგრძობთ გადახდის მოდულის განახლებას ეტაპობრივად (10% 100%). შესაძლებელია მოკლევადიანი დავალიანების შეფერხება 2 წუთამდე. ETA დასრულება - 21:00 EET"
- "გადახდის პროვაიდერი X არასტაბილურია. ჩარიცხვა შეიძლება 15 წუთამდე დასჭირდეს. ჩვენ ვმუშაობთ გამოსწორებაზე. სტატუსის შემდეგი განახლება - 30 წუთის შემდეგ"
- "განახლება შეჩერებულია შეფერხებების ზრდის გამო. წინა ვერსიას ვუბრუნდებით. შენარჩუნებულია მონაცემები და ოპერაციები"
17) განხორციელების პროცესი (4 სპრინტი)
1. ხარისხის და ხარისხის სტანდარტები: SAST/Unit/CDC, ერთი სურათი, ხელმოწერა, SBOM.
2. GitOps + გარემო: Helm/Kustomize, ArgoCD, არტეფაქტის პოპულარიზაცია, საიდუმლოების პოლიტიკა.
3. პროგრესული გამოშვებები და SLO კარიბჭეები: canary/shadow, guardrails, autopause.
4. საიმედოობა და ღირებულება: ქაოსი ტესტები, სკეიტი/თბილი აუზები, FinOps დაშბორდები.
საბოლოო ყალბი ფურცელი
Trunk + flags + მცირე ნაწილები = სიჩქარე სტრესის გარეშე.
ერთი ხელმოწერილი არტეფაქტი + SBOM = კონტროლირებადი მიწოდების ჯაჭვი.
GitOps + პოლიტიკოსები = რეპროდუქცია და აუდიტი.
Canary/Blue-Green + SLO კარიბჭეები = უსაფრთხო გამოშვებები.
Expand and Contract BD- სთვის = ნულოვანი სისწრაფე.
დაკვირვება და DORA = კონტროლირებადი გაუმჯობესება.
რეგიონალური იზოლაცია და შესაბამისობა = კანონებთან შესაბამისობა და ნდობა.