GH GambleHub

Migrasiýa pleýbuklary

1) Migrasiýa klassifikasiýasy

DB shemalary: sütünleri goşmak/üýtgetmek, indeksler, şardlamak, açarlaryň görnüşini üýtgetmek.
Maglumatlar: köpçülikleýin backfill/cleanup, kadalaşma, retenşn/arhiw.
Hyzmatlar we API: endpointleri üýtgetmek, wersiýalaşdyrmak, şertnamalary gaýtadan işlemek.
Nobatlar/tekerler: topikleriň göçmegi, partiýa açarlarynyň üýtgemegi, wakalaryň formaty.
Infrastruktura :/K8s/bulut/sebit, syrlary üýtgetmek/KMS.
Ammar we analitika: hereketlendirijini üýtgetmek (OLTP/OLAP), datasetleriň formaty/partizasiýasy.
Howpsuzlyk/laýyklyk: açarlaryň aýlanmagy, "uçuň üstünde" şifrlemek, maglumatlaryň geo-lokalizasiýasy.

2) Üstünlikli migrasiýa ýörelgeleri

1. Expand → Migrate → Contract. Ilki bilen shemany/özüni alyp barşyny giňeldýäris (gabat gelýär), soň maglumatlary/traffigi geçirýäris, soň köne zatlary aýyrýarys.
2. Shadow & Dual. Kölegeli barlag (shadow read/write) we tassyklamak üçin goşa ýazgy.
3. Baýdaklar we "gyzyl düwme". Çalt ýapmak, ädimme-ädim açmak (persentil/tenantlar/sebitler).
4. Idempotentlik we gaýtalanma. Skriptleri we wezipeleri zyýanly täsirleri bolmazdan täzeden açyp bolýar.
5. Üýtgeşmelerden öň syn edilişi. Daşbordlar/alertler öňünden, göçmegiň bellikleri loglarda/trekslerde.
6. Yza gaýdyp gelmek resminamalaşdyryldy. Yzyna gaýtarmagyň Runbook meýilnamasy ýaly jikme-jik.
7. Kiçi oýunlar we arakesmeler. SLI we iş alternatiwalaryny barlap, ownuk böleklerde göçýäris.

3) Garaşlylygyň inventarizasiýasy we seljermesi

Sarp edijileriň kartasy: hyzmatlar, joblar, hasabatlar, daşarky hyzmatdaşlar, BI/ETL, webhuklar.
Şertnamalar we shemalar: API/wakalaryň wersiýalary, backward/forward laýyklygy.
Elýeterliligi/syrlary: kim okaýar/ýazýar, nirede keşi/replikalar.
Domeniň üýtgemegi: özboluşlylygy, deňagramlylygy, deňagramlylygy, hasabat günleri.
Göwrümi/tizligi: maglumatlaryň ululygy, RPS, iň ýokary penjireler, RPO/RTO.

4) Kanoniki pleýbuk şablony (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) Migrasiýa patternleri

5. 1 DB shemalary (RDBMS/NoSQL)

Goşuň - üýtgetmäň. Täze nullable sütünleri/indeksleri → kod köne we täze okaýar.
Onlaýn üýtgedip gurmak. Onlaýn indeksleri/paralel DDL-leri ulanyň.
Serializasiýa wersiýalary. JSON/Proto/Euro sütünlerinde töleg ýazyň.
Açarlaryň göçmegi. PK çalşylanda - wagtlaýyn laýyklyk tablisasy + trigger/CDC.

5. 2 Maglumatlar (backfill/cleanup)

CDC + backfill. Ilki bilen üýtgeşmeler akymy (yzda galmazlyk üçin), soň bolsa paket backfill.
Partiýalar we möhletler. Laglaryň gözegçiligi bolan kiçijik batçlar, barlag nokatlary we gaýtadan işe girizilmegi.
Idempotent täzelenmeleri. Tebigy açarlar/wersiýalar boýunça Upsert.

5. 3 Wakalar we nobatlar

Wakalaryň wersiýasy. 'event _ type @vN', konsumerler nätanyş ýerleri äsgermezlik edýärler.
Topikleriň göçmegi. Iki gezek neşir etmek, sarp edijiler durnuklaşýança ikisini hem okaýarlar; soňra köne "kesmek".
Partition key. Açaryň göçmegi - laýyklyk we idempotentlik kartasy bilen gaýtadan neşir etmek arkaly.

5. 4 Hyzmatlar we API

Blue/Green/Canary. Howuzy gyzdyrmak, bölekleýin traffik, çalt yza gaýdyp gelmek.
Baýdaklar. Tenantlar/sebitler/göterimler boýunça, syn edilýän goşulma.
Şertnamalar. CDC şertnamalary we laýyklyk synaglary - geçmezden öň.

5. 5 Sebitler/klaudlar

Geo-goşa ýazgy. Maglumatlar iki sebite ýazylýar; okamak - ýakynlykda.
State transfer. Surat + köpeltmek; "gyzyl çyzyk" RPO, DNS/Anycast daşamak.
Ýurisdiksiýalar. Maglumatlary kabul etmek/lokallaşdyrmak, toplumlary çykarmak üçin "gadagan edilen" sanawlar.

6) Ýerine ýetiriş tapgyrlary (jikme-jik)

1. Taýýarlyk

Daşbordlar, alertler, çäkler, fiça-baýdaklar, dikeldiş synagy bolan bekaplar, steýjada geçmek.

2. Kölege (kölege barlagy)

Ulanyjylara täsir etmezden täze ulgamdaky soraglary/ýazgylary aýnalaň. Jogaplary/ýagdaýlary deňeşdirýäris.

3. Dual-write / Dual-read

Iki tarapa ýazýarys. Okamak - kem-kemden täze sistema geçirýäris. Gapma-garşylyklaryň ýazgylary seljerilýär.

4. Backfill

Taryhy maglumatlary toparlara ýükleýäris. CDC lag-a gözegçilik edýäris, storage/keş ýüküni yzarlaýarys.

5. Cutover (geçiş)

Segmentler boýunça kanarim (tenantlar/sebitler/göterimler). Çalt yza gaýdyp gelmek.

6. Contract (arassalamak)

Köne ýollary kesýäris, köne meýdanlary/indeksleri/topikleri "howpsuzlyk döwründen" soň aýyrýarys.

7. Barlamak we retro

Hasabat, metrikler, sapaklar, pleýbukyň/çek-listleriň täzelenmegi.

7) Migrasiýa wagtynda synlamak we SLO

Tehniki SLI: p50/p95/p99, error rate, retry/timeout, utilization, lag CDC, nobatlaryň çuňlugy.
Işewürlik-SLI: amallaryň/konwersiýalaryň üstünligi, inwariantlar (balanslar, çäkler, dublikatlar).
Ýörite bellikler: 'migration _ id', 'phase', 'tenant', 'flag _ state'.
Alerts-garawullar: guýruklara bosagalar we ýalňyşlyklar, SLO boýunça "awto-stop" (abort).
Deňeşdirme panelleri: v1 vs v2, esasy metrler boýunça "delta".

8) Yza gaýdyp gelmek we awariýa ssenariýalary

Logiki yza gaýdyp gelmek: baýdaklar/traffigi yzyna gönükdirmek, backfill-i doňdurmak.
Maglumatlar: "kompensasiýa" (Saga), wakalaryň sözleri, DLQ → başlangyç ulgam.
Syrlar/açarlar: öňki açar/şahadatnama (dual-key).
DNS/traffik: "ters drift" Anycast/ALB, TTL göçmek penjiresine gysga.
Aragatnaşyk: öňünden ylalaşylan kanal we status formaty.

9) Howpsuzlyk, gizlinlik, gabat gelmek

Maglumatlary azaltmak. Diňe zerur ýerleri göçürýäris; göçürmede anonimleşdirmek profilleri.
Kriptografiýa. Simde we "rahat" şifrlemek, KMS aýlanmagy; açar amallarynyň sanawy.
Wagt elýeterliligi. Migrasiýa joblary üçin wagtlaýyn rollar, tamamlanandan soň hukuklary saýlamak.
Yzlar. PD-ni bloglarda/söwdalarda gizlemek, eksporty çäklendirmek.

10) Üýtgeşmeleri we aragatnaşyklary dolandyrmak

RACI: kim tassyklaýar, kim ýerine ýetirýär, kim habar berilýär.
Freeze-periodlar: göçmek penjiresine degişli däl goýbermeleri gadagan etmek.
Statuslar: T-24h, T-1h, başlangyç, kanaring, cutover, pellehana, post-deňiz.
Daşarky hyzmatdaşlar: laýyklyk penjireleri, şertnama hatlary, synag gutusy.

11) Runbook şablonlary

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 Çek � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �


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 Okalmagy üýtgetmek


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

12) Anti-patternler

expand-migrate-contract ýerine "Uly partlama".
CDC-siz Backfill → baky yzarlamak we süýşmek.
Idempotentligiň ýoklugy → dublikatlar/hapa maglumatlar.
Skriptsiz el ädimleri → adam ýalňyşlyklary.
Daşbordsyz/garawulsyz migrasiýa → "kör uçuş".
Tassyklanmadyk yzyna gaýtarmak → yzyna gaýtarmak zerur bolanda işlemeýär.
Sarp edijileri äsgermezlik etmek (BI/partnýorlar) → "döwülen" hasabatlar/integrasiýa.

13) Arhitektoryň çek-sanawy

1. Göçmegiň maksady, çäkleri, görnüşi we netijäniň üýtgemegi kesgitlenildi?
2. Sarp edijileriň we şertnamalaryň kartasy düzüldi, laýyklyk synaglary ýaşylmy?
3. Dashbordlar, alertler, 'migration _ id', SLO/guardrails bellikleri taýýarlandy?
4. Şadow we/ýa-da dual-write, backfill durmuşa geçirildimi?
5. "Rollback runbook" programmasy barmy?
6. Penjire/koordinasiýa/aragatnaşyk ylalaşyldy, freeze goşuldy?
7. Kanaring we giňeltmek/durmak ölçegleri bilen ädimme-ädim meýilnama taýynmy?
8. Howpsuzlyk/laýyklyk: açarlar, elýeterlilik, PII-sanitariýa?
9. / SDK/belgiler şol bir goýberiş aýlawynda täzelenýärmi?
10. Pleýbuky deňiz arkaly täzelemegi meýilleşdirýärsiňizmi?

Netije

Migrasiýa pleýbuklary töwekgelçiligi dolandyrmagyň binagärlik tejribesidir: ownuk öwrülip bilýän ädimler, aç-açan metrikler, taýýar yza gaýdyp gelmek we "expand-migrate-contract" düzgüni. Beýan edilen şablonlara eýerip, iş wagtyňyzy we ulanyjylaryň ynamyny saklamak bilen, iş wagtyňyzy we garaşylmadyk ýagdaýlaryňyzy saklamazdan shemalary, maglumatlary, hyzmatlary we sebitleri göçürýärsiňiz.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.