GH GambleHub

Rolbeklər və sabitliyin bərpası

(Bölmə: Texnologiya və Infrastruktur)

Qısa xülasə

Geri dönüş - minimum məlumat itkisi və SLO pozuntuları riski ilə son sabit versiyaya idarə olunan qayıdışdır. Etibarlı prosesə daxildir: SLO siqnalları, aydın geytalar və geri dönüş meyarları, keçid mexanizmi (GitOps/Ingress/mesh), uyğun məlumat sxemi, təcrid olunmuş konfiqlər/sirlər/keşlər, runabuk və post-insident təkmilləşdirmə dövrü.

1) Nə zaman geri çəkilmək (başlanğıc meyarları)

SLO/biznes geytaları: p95/99 həddindən yuxarı, error-rate ↑, ödənişlərin/bahislərin konversiyasının azalması, PSP vaxtlarının artması.
Texniki siqnallar: podların boyası, yaddaş sızması, növbələrin böyüməsi, tokenlərin deqradasiyası/san (LLM), Edge-də 5xx.
Məlumat riski: səhv miqrasiyalar, uyğunsuzluqlar, yetim əməliyyatlar/ödənişlər.
Təhlükəsizlik/PII: sızma şübhəsi - dərhal geri çəkilmə/izolyasiya.

Qayda: 2 + açar metrik həddindən kənarda olarsa> N dəqiqə - geri dönüş başlayır.

2) Rolback növləri

1. Əlavə: konteynerlərin/paketlərin əvvəlki etiketə geri qaytarılması.
2. Fici: feature flag/kill-switch vasitəsilə ani söndürmə.
3. Marşrutlaşdırma: sabit versiyada (canary → stable) və ya Blue → Green-də çəkinin geri qaytarılması.
4. Verilənlər bazası: məntiqi geri qaytarma (kompensasiya), mərhələli sxem geri qaytarılması; PITR - son çarədir.
5. Infrastruktur: manifestlərin geri çəkilməsi/Terraform-plan; şəbəkə konfiqurasiyaları/WAF qaytarılması.
6. Verilənlər/cache/növbələr: mesajların sıfırlanması/əlilliyi/təkrar oynaması; version caches.

3) Təhlükəsiz geri dönüş memarlıq prinsipləri

sxemlərin uyğunluğu: strategiya expand → migrate → contract (geri expand və contract arasında mümkündür).
Təcrid olunmuş asılılıqlar: təftiş üçün ayrı-ayrı sirlər/konfiqlər/keşlər/növbələr.
İdempotent əməliyyatları: miqrasiyaların və job-un təkrar başlaması təhlükəsizdir.
Artefaktların immutabilliyi: şəkillər, çartlar, SQL skriptləri - versiyalaşdırılmış və imzalanmışdır.
GitOps-həqiqət: cari versiyası və marşrutlaşdırma manifest-anbar qeyd olunur.

4) Geri dönüş mexanikası (Kubernetes/GitOps)

Argo Rollouts (geri çəkisi)

yaml apiVersion: argoproj. io/v1alpha1 kind: Rollout metadata: { name: api }
spec:
strategy:
canary:
steps:
- setWeight: 5
- pause: { duration: 10m }
in case of analysis failure → automatic rollback to stable

GitOps-geri dönüş (ideya)


git revert <commit_with_bad_version>
git push # Argo CD/Flux revert cluster to previous revision

NGINX: stable sürətli switch

nginx map $cookie_canary $to_canary { default 0; 1 1; }
upstream stable { server api-stable:80; }
upstream canary { server api-canary:80; }
server {
location / {
if ($to_canary) { proxy_pass http://canary; }
proxy_pass http ://stable; # removed canary cookie - instant rollback
}
}

5) DB Rolback və məlumatların qorunması

Expand → Migrate → Contract:
  • Expand: Yeni sahələr/indekslər əlavə edin, kod köhnə və yeni sxemi dəstəkləyir.
  • Migrate: kod yeni bir sxem yazmağa başlayır, köhnə sındırmaq deyil.
  • Contract: köhnə yalnız sabitləşdikdən sonra silinir.
  • PITR/snapshot: Yalnız məntiqi kompensasiya mümkün olmadıqda istifadə edin.
  • Kompensasiya: əlavələri/balansları/ödənişləri düzəltmək üçün ayrı-ayrı skriptlər/joblar.
  • Read-only pəncərələr: tənqid edildikdə - vəziyyəti «dondurmaq» üçün yazını müvəqqəti bloklayın.
Nümunə (SQL-fikir, həddindən artıq təhlükəsiz):
sql
-- expand
ALTER TABLE wallet ADD COLUMN bonus_balance NUMERIC DEFAULT 0 NULL;
CREATE INDEX CONCURRENTLY idx_wallet_bonus ON wallet(bonus_balance);

-- migrate in code, two-sided write
-- contract (after stabilization)
ALTER TABLE wallet DROP COLUMN legacy_bonus_balance;

6) Geri dönərkən növbələr və keşlər

Version cache: prefiks versiyası ('v2:') → təhlükəsiz birlikdə yaşamaq.
Əlillik: geri çəkildikdə - kütləvi təmizləmə 'v2:', geri qaytarılma 'v1:'.
Növbələr: versiya üzrə partiyalar/topiklər; «nəzarət nöqtəsindən» mesajları təkrarlamaq.
Deadpublikation/idempotentlik: dubl olmadan təkrar emal üçün idempotentlik açarları.

7) SLO geytləri və avtomatik geri çəkilmələr

Metriklər: p95/99, error-rate, saturations (CPU/IO/GPU), queue depth, tokenlər/san, ödəniş çevirmə.

Siyasət (nümunə):

if p95_latency_ms > 250 for 5m OR error_rate > 1. 5% for 3m OR payment_conv < baseline-0. 3%
then rollback release && open incident && freeze deploys

8) Runabooks (playbooks)

A) Buraxıldıqdan sonra p99 və 5xx artım

1. Stop promote (canary/blue-green dondur).
2. Sabit audit üçün Switch traffic.
3. Cash-hit/növbə/PSP gecikmələrini yoxlayın.
4. Diaqnostikanı çıxarın: qeydlər, profillər, müştəri/sxemlərin versiyaları.
5. Rabitə: ChatOps, status-kanal, insident-kart.
6. Düzeltici hərəkətə başlayın: patch/hot fix/fich ləğv.

B) DB miqrasiyasında səhv

1. Freeze writes (read-only, qısa).
2. proqram → sabit versiyası geri (köhnə sxem ilə uyğun).
3. Kompensasiya/rollback-script yerinə yetirin.
4. Yazını dondurun; drift/səhvləri müşahidə edin.

C) Ödənişlərin deqradasiyası (PSP)

1. PSP marşrutunu əvvəlki marşruta keçin.
2. Prosessinq buraxılışının geri çəkilməsi.
3. Bütün tamamlanmamış ödənişlərin yoxlanılması, idempotent açarları ilə təkrar.

D) LLM/tövsiyələr deqradasiya

1. Yeni model/parametrləri söndürün (feature flag).
2. Əvvəlki enpoint/çəki geri; yeni təftiş KV cache təmizləmək.
3. Tokens/s, ilk latency tokenini, toksikliyini yoxlayın.

9) Rabitə və relizlərin dondurulması

Freeze window: geri qaytarıldıqdan sonra - RCA/fix-ə qədər fasilə.
Vahid kanal: status yenilənməsi, hərəkətlərin xronologiyası, kim nə etdi.
Stakholders: məhsul/CS/ödənişlər/hüquqşünaslar (PII ilə).

10) Post-insident: təhlil və profilaktika

RCA (ittihamsız): əsas səbəb, faktorların töhfəsi, niyə geytlər işləmədi (əgər işləməyibsə).
Fəaliyyət: miqrasiya testləri, limitlər, fiziki geytlər, müşahidə.
SLO-eşik: çox «yumşaq «/» sərt »olduqda düzəliş.
Sənədləşmə: Runabuki yeniləmək, həyəcan, məşq (game-day) əlavə etmək.

11) Alətlər və şablonlar

GitOps: Argo CD/Flux - 'revert '/' rollback' commit versiyası ilə.
Progressive delivery: Argo Rollouts/Flagger - stop/geri metrik.
Edge/Ingress: çəki marşrutu, cookies routing, sürətli switch.
Feature flags: fractional rollout, kill-switch.
DB miqrasiya: up/down, dry-run, throttling ilə mig-frameworks.
Observability: hazır dashboard «release compare» (stable vs canary).

12) Geri çəkilməyə hazırlıq yoxlama siyahısı

1. Version və imzalanmış artefaktlar (şəkillər/çartlar/SQL).
2. İki relsli konfiqlər/sirlər/keşlər/növbələr (versiya prefiksləri).
3. expand → migrate → contract.
4. SLO gates və auto-skid ilə kanarya və mavi-yaşıl relizlər.
5. Əsas ssenarilərdə Runabook (ödənişlər/BD/cache/LLM).
6. ChatOps düymələri: '/rollback ', '/freeze', '/promote '.
7. Audit və loging: kim, nə vaxt, nə yuvarlandı; diaqnostika artefaktları.
8. Game-day təlim: uğursuzluqlar və bərpa imitasiya.
9. Biznes və sapport ilə ünsiyyət planı.
10. Müqayisə metrikası (stable vs new) bir ekranda.

13) Anti-nümunələr

Kod yayılana qədər dağıdıcı miqrasiyalar (əks uyğunluq yoxdur).
Versiyasız ümumi caches/növbələr → «çirkli» geri dönüş.
No GitOps/dəyişiklik tarixi → Prod «əl» düzəlişlər.
Gates/telemetriya olmadan Kanarya Release → gec aşkarlama.
freeze və RCA olmadan geri dönüş → hadisənin təkrarlanması.
Biznes metrik olmadan yalnız texniki monitorinq (ödənişlər/dərəcələr).
Bütün reviziyalar üçün «ümumi sirləri» → hadisəni təcrid etmək çətindir.

Nəticələr

Etibarlı rolback «stop-kran» deyil, buraxılışlarda quraşdırılmış bir prosesdir: versiya və uyğunluq, təcrid olunmuş asılılıqlar, SLO-geytlar, GitOps-reallıq, avtomatik geri dönüşlər və aydın runabuklar. Bu yanaşma iGaming platformalarına məlumat və gəlir itkilərini minimuma endirərək sabitliyi tez bir zamanda qaytarmağa və hər bir hadisəni təkmilləşdirmə mənbəyinə çevirməyə imkan verir.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.