DevOps uygulamaları ve CI/CD
1) Hedefler ve ilkeler
Hızlı ve güvenli: kısa döngüler, küçük gruplar halinde değişiklikler, otomatik kontroller.
Tekrarlanabilirlik: kod olarak altyapı (IaC), çevre = kod + politika.
Gözlemlenebilirlik: metrikler/izler/kutudan çıkar, SLO bir sözleşme olarak.
Uyumluluk: denetim, değişiklik kontrolü, bölgesel veri yalıtımı.
Altın kural: "Önce kalite, sonra hız - aksi takdirde hız asla görünmez".
2) Dallar ve ortamlar
Gövde tabanlı + özellik bayrakları - temel seçim.
Kısa özellik hatları (≤ 2-5 gün), bagajda günlük birleştirme.
Artımlı teslimat ve güvenli geri dönüşler için sunucu tarafı bayrakları.
Git ortamları: 'dev', 'sahne', 'prod' (+ bölgesel 'prod-eu', 'prod-latam').
Eserlerin tanıtımı: Toplanan bir görüntü medya aracılığıyla tanıtılır (digest tarafından değişmez etiket).
GitFlow: düzenleyici meclislerin/SDK'ların nadir sürümleri - daha sonra dalları + "sertleştirme'yi serbest bırakın.
3) Kalite piramidi ve "kırmızı çizgi"
1. Statik analiz (SAST, linters, lisanslar).
2. Birim/Özellik tabanlı testler (saniye).
3. API'ler ve olaylar için sözleşme testleri (CDC) (OpenAPI/AsyncAPI, Schema Registry).
4. Entegrasyon (Testcontainers, yerel broker).
5. Kritik yolları E2E: kayıt, KYC, para yatırma, oyun başlatma, çıktı.
6. Ödemeler/cüzdan/oyun sağlayıcıları için yükleme/kaos testleri.
Kalite geçmez - depozito bloke edilir. Değişiklik kaydı olmadan "manuel istisnalar" yoktur.
4) Tedarik zinciri
Her görüntü/paket için SBOM (CycloneDX/SPDX).
Eser imzaları (cosign), kabulde "sadece imzalı" politika.
SCA/Dependabot: güvenlik açıkları ve lisanslar.
Provenance/SLSA: tekrarlanabilir montajlar, kapalı yapı maddesi, onaylar.
Sırlar: Yöneticide (KMS/Dış Sırlar), repo/günlüklerde tek bir sır değil.
5) GitOps и IaC
Kod olarak Infra: Bulut için Terraform/Pulumi; Dümen/Kustomize k8s için.
GitOps denetleyicisi (ArgoCD/Flux): bildirimsel manifestolar, PR incelemesi, denetim izi.
Windows/donmalar: turnuva haftaları/yoğun saatler - üretim sürümlerinin otomatik olarak duraklatılması.
OPA/Kyverno ilkeleri: hayır ': en son', root olmayan, salt okunur FS, hostPath izin vermiyor.
6) Aşamalı teslimat
Kanarya: 1 - 5 - 10 - 25 - 50 - Korkuluk metriklerinde %100 (p95 gecikme, 5xx, hata bütçesi yanması).
Mavi-Yeşil: hızlı anahtar + geri alma planı.
Gölge/Yansıtma: Yanıtı etkilemeden istekleri kopyalama (yeni PSP adaptörleri için).
Özellik bayrakları: segmente göre dahil etme (bölge/rol/ortak/kanal) + kill-switch.
7) Veritabanı geçişleri (genişlet ve sözleşme)
Adım 1: eski kodla uyumlu olan şemayı (yeni sütunlar/dizinler) genişletin.
Adım 2: Her iki versiyona/alana yazan kodu boşaltın.
Adım 3: Arka plan joba veri taşıma, ilerleme metrikleri.
Adım 4: Okumayı yeni alanlara geçirin.
Adım 5: Eskisini çıkarmak ayrı bir sürümdür.
Prime time'da DDL yasağının engellenmesi; yüksek tablolar için - çevrimiçi göçler.
8) Gözlemlenebilirlik ve SLO
Metrikler: RPS, p50/95/99, 4xx/5xx, doygunluk (CPU/mem/queue), DLQ/broker lag.
İş metrikleri: TTP (time-to-play), TtW (time-to-wallet), FTD-success, KYC-TtV.
İzler: Ağ geçidinden veri tabanına kadar iz.
SLO: örneğin, 'Deposit p95 ≤ 300-500 ms', 'başarı ≥ 98. %5 ',' kullanılabilirlik ≥ 99. 9%`.
Yazma hızı uyarıları + bozulma sırasında otomatik duraklatma bültenleri.
9) Olaylar, ölüm sonrası, vardiyalar
Kritik akışlardaki Runbook'lar (deposit/output/ACC, canlı oyunlar).
Öncelik ölçeği: P1...P4, sahip, ETA, iletişim (banner, durum sayfası, ortaklar).
Eylem öğeleri ve tarihleri ile suçsuz postmortem.
Çağrı üzerine değişiklikler, sohbet uyarıları, her N dakikada durum güncellemeleri.
Dock izi: kim/ne zaman/ne gönderildi (taahhüt, eser, çevre, bayrak).
10) Güvenlik ve Uyumluluk (DevSecOps)
SAST/DAST/IAST, CI'da gizli tarama.
mTLS servis↔servis, küçük TTL ile JWT, anahtar rotasyonu.
PII/PAN'ın günlüklerde/izlerde maskelenmesi; WORM yönetici etkinlik günlükleri.
Coğrafi ayrım: bölgelere göre kümeler/veritabanları, ağ geçidi yönlendirmesi.
Değişim yönetimi: Hassas alanlar için bilet/onay (cüzdan/limitler).
11) DORA metrikleri ve FinOps
Dağıtım Frekansı (günlük küçük sürümler).
Değişiklikler için Teslim Süresi (ideal: izle).
MTTR (kurtarma: Dakika/saat).
Değişim Hatası Oranı (hedef ≤ %15).
FinOps: ortamların maliyeti, RPS önbellekleme, sıcak havuzlar, işçilerin otomatik duraklaması, "işlem başına maliyet".
12) iGaming özgüllüğü
Zirveler (turnuvalar/canlı): Büyük değişiklikleri dondurmak, önbellek/görüntüleri ısıtmak, kota artırmak.
Ödemeler/cüzdan: bireysel havuzlar/düğümler, yükseltilmiş SLO'lar, bölgeye göre kanarya sunumu, PSP sağlayıcıları tarafından ikili telemetri.
CC/compliance: Ayrı sürümler, zorunlu uyumluluk sonrası güncellemeler.
Ortaklar/İştirakler: Güvenli SDK, destek pencereli API sürümü ve eski müşterilerin izlenmesi.
13) Örnek CI/CD (YAML, GitHub Eylemleri - 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) Kontrol listeleri
Main ile birleştirmeden önce
- Birim/CDC/entegrasyon yeşil.
- Linters/SAST/lisansları temizdir.
- Güncellenmiş OpenAPI/AsyncAPI şemaları ve veritabanı geçişleri.
- Fiche bayrakları eklendi, follbacks tanımlandı.
Prod'da serbest bırakılmadan önce
- Resim imzalandı, SBOM eklendi, HIGH/CRIT açıkları kapatıldı.
- Oluşturulan gösterge panoları/uyarılar; SLO kapıları bağlı.
- Geri alma planı, kill-switch, Shadow (gerekirse).
- Bölgesel kısıtlamalar ve veri politikası onaylandı.
Olaylar
- Runbook bulundu ve güncel.
- Kullanıcılara/ortaklara iletişim (şablon, ETA).
- Ölüm sonrası 48 saat, tarihleri olan eylem öğeleri.
15) Anti-desenler
"Her çevre için yeniden birleştirme" (eser tanıtımı yok).
Denetim/tekrarlanabilirlik olmadan manuel dağıtım adımları.
Veritabanı geçişleri "kafa kafaya", uyumsuz API yanıtları.
CI değişkenlerindeki veya bilgi havuzundaki sırlar.
Flag/rollback olmadan felaket özellikleri.
Kanarya salınımında SLO/korkuluk eksikliği.
PII/PAN ile günlükler, maskeleme yok.
16) Yararlı mikrokopi şablonları
Serbest bırakma (ortaklara):- "Ödeme modülünün güncellemesini aşamalar halinde sunuyoruz (%10 - %100). 2 dakikaya kadar kısa süreli kayıt gecikmeleri mümkündür. ETA tamamlanması - 9 pm EET "
- "Ödeme sağlayıcısı X istikrarsız. Kayıt 15 dakikaya kadar sürebilir. Bir düzeltme üzerinde çalışıyoruz. Bir sonraki durum güncellemesi 30 dakika içinde"
- "Güncelleme, artan gecikmeler nedeniyle beklemede. Önceki versiyonu iade ediyoruz. Veriler ve işlemler kaydedildi"
17) Uygulama süreci (4 sprint)
1. Kalite standartları ve boru hattı: SAST/Birim/CDC, tek görüntü, imzalar, SBOM.
2. GitOps + ortamları: Helm/Kustomize, ArgoCD, artefakt promosyonu, gizli politika.
3. Aşamalı sürümler ve SLO kapıları: kanarya/gölge, korkuluklar, otomatik hub.
4. Güvenilirlik ve maliyet: kaos testleri, otomatik ölçekli/sıcak havuzlar, FinOps panoları.
Son hile sayfası
Gövde + bayraklar + küçük partiler = stressiz hız.
Tek imzalı eser + SBOM = kontrollü tedarik zinciri.
GitOps + policies = tekrarlanabilirlik ve denetim.
Kanarya/Mavi-Yeşil + SLO kapıları = güvenli sürümler.
DB = sıfır kesinti süresi için genişletme ve sözleşme.
Gözlenebilirlik ve DORA = yönetilebilir iyileştirmeler.
Bölgesel izolasyon ve uyum = yasalara uyum ve güven.