GH GambleHub

Miqrasiya pleybukları

1) Miqrasiya təsnifatı

DB sxemləri: sütunların əlavə edilməsi/dəyişdirilməsi, indekslər, şardlaşdırma, açar tipinin dəyişdirilməsi.
Məlumatlar: kütləvi backfill/cleanup, normallaşma, retenshn/arxivləşdirmə.
Xidmətlər və API: end-point dəyişikliyi, versiyalaşdırma, müqavilələrin refaktorinqi.
Növbələr/şinlər: topiklərin hərəkəti, partizan açarlarının dəyişdirilməsi, hadisələrin formatı.
Infrastruktur: Yeni/K8s/bulud/region klasterinə keçid ,/KMS sirlərinin dəyişdirilməsi.
Depolama və analitika: mühərrikin dəyişdirilməsi (OLTP/OLAP), datasetlərin formatı/partizanlaşdırılması.
Təhlükəsizlik/komplayens: açarların rotasiyası, şifrələmə, məlumatların geo-lokallaşdırılması.

2) Uğurlu miqrasiya prinsipləri

1. Expand → Migrate → Contract. Əvvəlcə sxemi/davranışı genişləndiririk (uyğun), sonra məlumatları/trafiki köçürürük, sonra köhnəsini silirik.
2. Shadow & Dual. Kölgə yoxlama (shadow read/write) və validasiya üçün ikiqat giriş.
3. Ficha bayraqları və «qırmızı düymə». Sürətli bağlantı, addım-addım qoşulma (persentil/tenant/regionlar).
4. İdempotentlik və təkrarlanabilirlik. Skriptlər və tapşırıqlar yan təsirləri olmadan yenidən başlaya bilər.
5. Dəyişmədən əvvəl müşahidə. Daşbordlar/alertlər əvvəlcədən, log/treys miqrasiyası işarələri.
6. Geri çəkilmə sənədləşdirilmişdir. Runbook geri plan kimi ətraflı.
7. Mini partiyalar və fasilələr. SLI və biznes invariantlarını yoxlayaraq kiçik hissələrdə miqrasiya edirik.

3) Asılılığın inventarlaşdırılması və təhlili

İstehlakçı xəritəsi: xidmətlər, joblar, hesabatlar, xarici tərəfdaşlar, BI/ETL, vebhuklar.
Müqavilələr və sxemlər: API/hadisə versiyaları, backward/forward uyğunluğu.
Access/Secrets: Kim oxuyur/yazır, harada keşi/replikalar.
Domen invariantları: unikallıq, balans, idempotentlik, hesabat günü.
Həcm/sürət: məlumat ölçüsü, RPS, pik pəncərələr, RPO/RTO.

4) Kanonik pleybuk şablonu (YAML-skelet)

yaml playbook: "migrate-orders-to-v2"
owner: "orders-team"
stakeholders: ["platform", "data", "security", "support"]
change_type: ["schema", "data", "api"]
risk_level: "high"
preconditions:
- "Dashboards ready: latency/error/lag"
- "Runbook rollback validated on stage"
- "Backups verified (restore tested)"
plan:
phase_1_prepare:
steps:
- "Add new nullable columns (expand)"
- "Deploy code with dual-write (flag off)"
- "Enable CDC stream to target"
phase_2_shadow:
steps:
- "Shadow-read v2, compare with v1 (1%)"
- "Fix discrepancies; iterate"
phase_3_dual_write:
steps:
- "Enable dual-write (10%→50%→100%)"
- "Start backfill in batches (size=10k, sleep=200ms)"
phase_4_cutover:
steps:
- "Switch reads to v2 by tenants (canary)"
- "Monitor SLI 30m; expand scope"
phase_5_contract:
steps:
- "Drop old indices/columns after T+14d"
- "Disable old topic/api; update docs/SDK"
guardrails:
abort_if:
- "error_rate > 0. 5% for 5m"
- "p95 > baseline1. 5 for 10m"
- "data_mismatch > 0. 01%"
rollback:
steps:
- "Flip flag: reads back to v1"
- "Stop backfill; continue dual-write to v1"
- "Replay missed events (DLQ→v1)"
validation:
checks:
- "Row counts match within epsilon"
- "Business invariants hold (balances, limits)"
comms:
- channel: "on-call-bridge"
- status_updates: "T-24h, T-1h, start, cutover, finish"
window: "low-traffic Sun 02:00–05:00 UTC"

5) Miqrasiya nümunələri

5. 1 DB sxemləri (RDBMS/NoSQL)

Əlavə edin - dəyişməyin. Yeni nullable sütunlar/indekslər → kod köhnə və yeni oxuyur.
Onlayn yenidənqurma. Online indekslər/paralel DDL istifadə edin.
Seriallaşdırma versiyaları. JSON/Proto/Euro sütunlarında payload versiyası.
Açarların miqrasiyası. PK dəyişdikdə - müvəqqəti uyğunluq cədvəli + trigger/CDC.

5. 2 Məlumat (backfill/cleanup)

CDC + backfill. Əvvəlcə dəyişiklik axını (geri qalmamaq üçün), sonra paket backfill.
Partiyalar və müddətlər. Lag nəzarət ilə kiçik batches, check-point və yenidən başlamaq.
İdempotent yeniləmələri. Təbii açarları/versiyaları Upsert.

5. 3 Hadisələr və növbələr

Hadisələrin versiyası. 'event _ type @vN', konsumerlər naməlum sahələrə məhəl qoymur.
Topiklərin hərəkəti. İkiqat nəşr, istehlakçılar sabitləşməyə qədər hər ikisini oxuyur; sonra köhnə «kəsmə».
Partition key. Açarın miqrasiyası - uyğunluq və idempotentlik kartı ilə yenidən nəşr vasitəsilə.

5. 4 Xidmətlər və API

Blue/Green/Canary. Isınma hovuzu, qismən trafik, sürətli geri dönüş.
Fiç bayraqları. Tenant/regionlar/faizlər üzrə, müşahidə olunan daxil olma.
Müqavilələr. CDC müqavilələri və uyğunluq testləri - keçid əvvəl.

5. 5 Regionlar/klass

Geo-ikiqat qeyd. Məlumatlar iki bölgəyə yazılır; oxu - yaxın.
State transfer. Şəkil + replikasiya; «qırmızı xətt» RPO, DNS/Anycast daşıma.
Yurisdiksiyalar. Razılıq/məlumatların lokalizasiyası, setlərin çıxarılması üçün «qadağan edilmiş» siyahılar.

6) Icra mərhələləri (ətraflı)

1. Hazırlıq

Daşbordlar, alertlər, limitlər, fiça bayraqları, bərpa testi ilə arxalar, steyjada qaçış.

2. Shadow (kölgə yoxlama)

Istifadəçilərə təsir etmədən yeni sistemə sorğular/qeydlər güzgü. Cavabları/vəziyyətləri müqayisə edirik.

3. Dual-write / Dual-read

Hər iki tərəfə yazırıq. Oxu - tədricən yeni sistemə tərcümə. Uyğunsuzluq qeydləri təhlil olunur.

4. Backfill

Tarixi məlumatları partiyalarla yükləyirik. CDC laqına nəzarət edirik, hekayə/cache yükünü izləyirik.

5. Cutover (keçid)

Seqmentlər üzrə kanarim (tenantlar/regionlar/faizlər). Sürətli geri dönüş dəstəkləyir.

6. Contract (təmizləmə)

Köhnə yolları kəsirik, köhnəlmiş sahələri/indeksləri/topikləri «təhlükəsizlik dövründən» sonra silirik.

7. Verifikasiya və retro

Hesabat, metriklər, dərslər, playbook/çek vərəqlərinin yenilənməsi.

7) Miqrasiya zamanı müşahidə və SLO

Texniki SLI: p50/p95/p99, error rate, retry/timeout, utilization, lag CDC, növbə dərinliyi.
Biznes-SLI: əməliyyatların/konvertasiyaların müvəffəqiyyəti, invariantlar (balanslar, limitlər, dublikatlar).
Xüsusi etiketlər: 'migration _ id', 'phase', 'tenant', 'flag _ state'.
Alertlər-mühafizəçilər: quyruqlara və səhvlərə qapılar, SLO-da «avto-stop» (abort).
Müqayisə panelləri: v1 vs v2, əsas metrlərə görə «delta».

8) Geri çəkilmə və qəza ssenariləri

məntiqi geri: bayraqlar/geri trafik marşrutu, backfill dondurma.
Data: «kompensasiya» (Saga), hadisə replay, DLQ → mənbə sistemi.
Secrets/Keys: əvvəlki açar/sertifikat (dual-key) geri.
DNS/trafik: «əks drift» Anycast/ALB, TTL qısa keçid pəncərə.
Rabitə: əvvəlcədən razılaşdırılmış kanal və status formatı.

9) Təhlükəsizlik, gizlilik, uyğunluq

Məlumatların minimuma endirilməsi. Yalnız lazımi sahələri daşıyırıq; anonimləşdirmə profilləri.
Kriptoqrafiya. Simli və dinc şifrləmə, KMS rotasiyası; açar əməliyyatları jurnalı.
Time Access. Miqrasiya jobları üçün müvəqqəti rollar, tamamlandıqdan sonra hüquqların seçilməsi.
İzlər. Log/Tracks PD maskalama, ixrac məhdudiyyətləri.

10) Dəyişikliklər və kommunikasiyanın idarə edilməsi

RACI: kim iddia edir, kim yerinə yetirir, kim məlumatlandırılır.
Freeze-periodlar: miqrasiya pəncərəsinə əhəmiyyətsiz relizlərin qadağan edilməsi.
Statuslar: T-24h, T-1h, başlanğıc, canaring, cutover, finiş, post-dəniz.
Xarici tərəfdaşlar: uyğunluq pəncərələri, müqavilə məktubları, test qum qutusu.

11) Runbook şablonları

11. 1 Backfill (psevdokod)


for batch in paginate(ids, size=10_000):
try:
rows = read_v1(batch)
upsert_v2 (rows) # idempotently mark_checkpoint (batch. end)
sleep(jitter_ms(100..300))
except Throttle:
sleep (5s) # backpressure respect except Fatal as e:
alert("backfill-failed", e, context=batch)
abort_if_needed()

11. 2 Check-up (snapshot/nümunə)


sample = random_ids(n=10_000, stratify=tenant,timestamp)
v1 = fetch_v1(sample); v2 = fetch_v2(sample)
assert schema_compatible(v2)
assert key_invariants_hold (v1, v2) # sum, statuses, versions mismatch_rate = diff (v1, v2). rate()
abort_if(mismatch_rate > 0. 0001)

11. 3 Oxu keçid


flag. enable("read_from_v2", segment="tenants: cohort_A")
monitor(30m)
if SLO_ok(): expand_segment()
else: rollback_segment()

12) Anti-nümunələr

expand-migrate-contract əvəzinə «Böyük partlayış».
CDC olmadan Backfill → əbədi tutma və sürüklənmə.
İdempotentliyin olmaması → duple/çirkli məlumatlar.
Skriptsiz əl addımları → insan səhvləri.
Daşbordsuz miqrasiya → «kor uçuş».
Təsdiqlənməmiş geri dönüş → geri dönüş lazım olduqda işləmir.
İstehlakçılara məhəl qoymamaq (BI/Partners) → «sınıq» hesabatlar/inteqrasiya.

13) Memarın yoxlama siyahısı

1. Məqsəd, sərhədlər, miqrasiya növü və nəticənin invariantları müəyyən edilib?
2. İstehlakçıların və müqavilələrin xəritəsi tərtib edilib, uyğunluq testləri yaşıldır?
3. Daşbordlar, alertlər, 'migration _ id', SLO/guardrails işarələri hazırlanıb?
4. Həyata shadow və/və ya dual-write, backfill idempotent?
5. Bir Practice Rollback Runbook var, Backup Recovery Check?
6. Pəncərə/koordinasiya/rabitə razılaşdırılmış, freeze daxil?
7. Kanarinq və genişləndirmə/dayandırma meyarları ilə addım-addım plan hazırdır?
8. Təhlükəsizlik/uyğunluq: açarlar, girişlər, PII-sanitariya?
9. Sənədləşmə/SDK/Species eyni buraxılış dövrü yenilənir?
10. Post-dəniz və tamamlandıqdan sonra playbook yeniləmə planlaşdırılır?

Nəticə

Miqrasiya pleybukları risklərin idarə edilməsinin memarlıq təcrübəsidir: kiçik geri dönən addımlar, şəffaf metriklər, hazır geri dönüş və «expand-migrate-contract» intizamı. Təsvir olunan şablonları izləyərək, iş və istifadəçi inamını qoruyaraq, boş və sürprizsiz sxemləri, məlumatları, xidmətləri və bölgələri köçürürsünüz.

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.