GH GambleHub

Migratsiya pleybuklari

1) Migratsiyalar tasnifi

DB sxemalari: ustunlarni qo’shish/o’zgartirish, indekslar, shardlash, kalitlar turini o’zgartirish.
Maʼlumotlar: ommaviy backfill/cleanup, normallashtirish, retenshn/arxivlash.
Servislar va API: endpointlarni o’zgartirish, versiyalash, kontraktlarni refaktoring qilish.
Navbatlar/shinalar: topiklarni koʻchirish, partiyalashtirish kalitlarini oʻzgartirish, voqealar formati.
Infratuzilma: yangi/K8s/bulutga/mintaqaga oʻtish ,/KMS sirlarini oʻzgartirish.
Omborlar va tahlillar: dvigatelni o’zgartirish (OLTP/OLAP), datasetlarni formatlash/partiyalashtirish.
Xavfsizlik/komplayens: kalitlarni rotatsiya qilish, «uchish» shifrlash, ma’lumotlarni geo-lokalizatsiya qilish.

2) Muvaffaqiyatli migratsiya tamoyillari

1. Expand → Migrate → Contract. Avval sxema/xatti-harakatlarni kengaytiramiz (mos keladi), so’ngra ma’lumotlar/trafikni ko’chiramiz, keyin eskisini olib tashlaymiz.
2. Shadow & Dual. Soya tekshiruvi (shadow read/write) va validatsiya uchun ikki marta yozish.
3. Ficha bayroqlari va «qizil tugma». Tez oʻchirish, bosqichma-bosqich yoqish (persentil/tenantlar/mintaqalar).
4. Idempotentlik va takrorlanuvchanlik. Skriptlar va vazifalarni nojo’ya ta’sirlarsiz qayta ishga tushirish mumkin.
5. O’zgarishlardan oldin kuzatilishi. Dashbordlar/alertlar oldindan, loglar/treyslarda migratsiya markerlari.
6. Orqaga qaytish hujjatlashtirilgan. Qaytarish Runbook ham oldinga reja kabi batafsil.
7. Mini-partiyalar va pauzalar. SLI va biznes invariantlarini tekshirib, kichik qismlarda ko’chib o’tamiz.

3) Inventarizatsiya va qaramlikni tahlil qilish

Iste’molchilar xaritasi: servislar, joblar, hisobotlar, tashqi sheriklar, BI/ETL, vebxuklar.
Kontraktlar va sxemalar: API/voqealar versiyasi, backward/forward mosligi.
Foydalanuvchilar/sirlar: kim o’qiydi/yozadi, qayerda keshi/nusxalar.
Domen invariantlari: o’ziga xoslik, balans, idempotentlik, hisobot sutkalari.
Hajmi/tezligi: maʼlumotlar oʻlchami, RPS, eng yuqori oynalar, RPO/RTO.

4) Pleybukning kanonik shabloni (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) Migratsiya patternlari

5. 1 DB sxemalari (RDBMS/NoSQL)

Qoʻshing - oʻzgartirmang. Yangi nullable ustunlar/indekslar → kod eski va yangi oʻqiydi.
Onlayn qayta qurish. Onlayn indekslar/parallel DDLdan foydalaning.
Seriallashtirish versiyalari. JSON/Proto/Euro ustunlarida payload versiyasi.
Kalitlar koʻchishi. PK almashtirilganda - vaqtinchalik muvofiqlik jadvali + trigger/CDC.

5. 2 Maʼlumotlar (backfill/cleanup)

CDC + backfill. Avval oʻzgarishlar oqimi (orqada qolmaslik uchun), keyin paketli backfill.
Partiyalar va muddatlar. Laglarni nazorat qiluvchi kichik batchlar, chekpoyntlar va qayta ishga tushirish.
Idempotent yangilanishlar. Tabiiy kalitlar/versiyalar boʻyicha Upsert.

5. 3 Voqealar va navbatlar

Hodisalar versiyasi.’event _ type @vN’, konsumerlar notanish maydonlarga eʼtibor bermaydi.
Topiklarni ko’chirish. Ikki marta e’lon qilish, iste’molchilar ikkalasidan barqarorlashgunga qadar o’qiydilar; keyin eskisini «kesish».
Partition key. Kalit migratsiyasi - muvofiqlik va idempotentlik xaritasi bilan qayta nashr etish orqali.

5. 4 Servislar va API

Blue/Green/Canary. Hovuzni isitish, qisman trafik, tez qaytish.
Ficha bayroqlari. Tenant/mintaqa/foiz bo’yicha, kuzatilayotgan qo’shilish.
Kontraktlar. CDC shartnomalari va muvofiqlik testlari - almashtirilgunga qadar.

5. 5 Mintaqalar/klaudlar

Geo-qoʻshaloq yozuv. Ma’lumotlar ikki mintaqaga yoziladi; oʻqish - yaqinlik.
State transfer. Rasm + replikatsiya; «qizil chiziq» RPO, DNS/Anycast yuklash.
Yurisdiksiyalar. Ma’lumotlarning roziligi/mahalliylashtirilishi, to’plamlarni olib chiqish uchun «taqiqlangan» ro’yxatlar.

6) Ijro fazalari (batafsil)

1. Tayyorlash

Dashbordlar, alertlar, limitlar, ficha-bayroqlar, tiklanish testiga ega bekaplar, steyjada haydash.

2. Shadow (soyali tekshirish)

Foydalanuvchilarga ta’sir qilmasdan yangi tizimga so’rovlar/yozuvlar ko’zgu. Javoblarni/holatlarni taqqoslaymiz.

3. Dual-write / Dual-read

Ikki tomonga ham yozamiz. O’qish asta-sekin yangi tizimga o’tkaziladi. Nomuvofiqlik holatlari tahlil qilinadi.

4. Backfill

Tarixiy maʼlumotlarni partiyalarga toʻldiramiz. CDCni nazorat qilish, storij/kesh yukini kuzatish.

5. Cutover (almashtirish)

Segmentlar bo’yicha kanarim (tenantlar/hududlar/foizlar). Tez qaytishni qoʻllab-quvvatlaymiz.

6. Contract (tozalash)

Eski yo’llarni kesib tashlaymiz, eskirgan maydonlarni/indekslarni/topiklarni «xavfsizlik davri» dan keyin olib tashlaymiz.

7. Verifikatsiya va retro

Hisobot, metrika, darslar, pleybuk/chek varaqlarini yangilash.

7) Migratsiya vaqtida kuzatish va SLO

Texnik SLI: p50/p95/p99, error rate, retry/timeout, utilization, lag CDC, navbatlar chuqurligi.
Biznes-SLI: tranzaksiya/konversiya muvaffaqiyati, invariantlar (balanslar, limitlar, dublikatlar).
Maxsus belgilar:’migration _ id’,’phase’,’tenant’,’flag _ state’.
Alertlar-qo’riqchilar: dumlar ostonalari va xatolar, SLO bo’yicha «avto-stop» (abort).
Qiyosiy panellar: v1 vs v2, kalit metriklar bo’yicha «delta».

8) Orqaga qaytish va avariya stsenariylari

Mantiqiy orqaga qaytish: bayroqlar/orqaga harakatlanish, backfill muzlatish.
Ma’lumotlar: «kompensatsiyalar» (Saga), voqealar nusxasi, DLQ → boshlang’ich tizim.
Sirlar/kalitlar: oldingi kalit/sertifikatga qaytarish (dual-key).
DNS/trafik: «teskari drift» Anycast/ALB, TTL migratsiya oynasiga qisqa.
Kommunikatsiyalar: oldindan kelishilgan kanal va maqom formati.

9) Xavfsizlik, maxfiylik, komplayens

Maʼlumotlarni minimallashtirish. Faqat kerakli maydonlarni ko’chirish; nusxadagi anonimlashtirish profillari.
Kriptografiya. Simda va tinch holatda shifrlash, KMS rotatsiyasi; kalitlar bilan operatsiyalar jurnali.
Vaqt boʻyicha kirish. Migratsiya joblari uchun vaqtinchalik rollar, tugatilgandan keyin huquqlarni tanlash.
Izlar. Loglarda/treyslarda PDni yashirish, eksportni cheklash.

10) O’zgarishlar va kommunikatsiyalarni boshqarish

RACI: kim tasdiqlaydi, kim bajaradi, kim xabardor qilinadi.
Freeze-davrlar: migratsiya oynasida ahamiyatsiz relizlarni taqiqlash.
Maqomlari: T-24h, T-1h, start, kanaring, cutover, marra, post-dengiz.
Tashqi hamkorlar: muvofiqlik oynalari, shartnoma xatlari, sinov qum qutisi.

11) Runbook namunalari

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 Tekshirilganlik (snepshot/tanlov)


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 Oʻqishni oʻzgartirish


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

12) Anti-patternlar

expand-migrate-contract o’rniga «katta portlash».
CDC’siz Backfill → abadiy ushlash va drift.
Idempotentlik yo’qligi → dubli/iflos ma’lumotlar.
Skriptsiz qoʻl qadamlari → inson xatolari.
Dashbordsiz/qo’riqchilarsiz migratsiya → «ko’r-ko’rona parvoz».
Tasdiqlanmagan qaytish → qaytish kerak boʻlganda ishlamaydi.
Iste’molchilarni e’tiborsiz qoldirish (BI/sheriklar) → «buzilgan» hisobotlar/integratsiyalar.

13) Arxitektorning chek-varaqasi

1. Maqsad, chegaralar, migratsiya turi va natija invariantlari aniqlanganmi?
2. Iste’molchilar va kontraktlar xaritasi tuzildi, mos keladigan testlar yashil bo’ladimi?
3. Dashbordlar, alertlar,’migration _ id’, SLO/guardrails belgilari tayyorlandi?
4. Amalga oshirilgan shadow va/yoki dual-write, backfill idempotenten?
5. Bajariladigan rollback runbook bormi?
6. Oyna/muvofiqlashtirish/kommunikatsiyalar kelishilgan, freeze yoqilganmi?
7. Kanaring va kengaytirish/to’xtash mezonlari bilan bosqichma-bosqich reja tayyormi?
8. Xavfsizlik/komplayens: kalitlar, kirish, PII-sanitariya?
9. Hujjatlar/SDK/spekulalar xuddi shu reliz davrida yangilanadimi?
10. Tugallangandan keyin post-dengiz va pleybukni yangilash rejalashtirilganmi?

Xulosa

Migratsiya pleybuklari - bu xavfni boshqarishning arxitektura amaliyoti: kichik qaytariladigan qadamlar, shaffof metriklar, tayyor orqaga qaytish va «expand-migrate-contract» intizomi. Ta’riflangan shablonlarga amal qilib, siz sxemalar, ma’lumotlar, xizmatlar va hududlarni ishlamay va kutilmagan hodisalarsiz ko’chib o’tib, biznes invariantlari va foydalanuvchilarning ishonchini saqlab qolasiz.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.