GH GambleHub

Миграция плейбуктары

1) Миграциянын классификациясы

DD схемалар: кошуу/динамиктер өзгөртүү, индекстер, шардана, ачкычтар түрүн өзгөртүү.
Маалыматтар: массалык backfill/тазалоо, нормалдаштыруу, retenshn/архивдөө.
Сервистер жана API: эндпоинттерди алмаштыруу, версиялоо, контракттарды кайра иштетүү.
Кезектер/дөңгөлөктөр: топиктерди жылдыруу, партиялаштыруу ачкычтарын өзгөртүү, окуялардын форматы.
Инфраструктура: жаңы кластерге өтүү/K8s/булут/аймак, сырларды өзгөртүү/KMS.
Сактоо жана аналитика: кыймылдаткычын өзгөртүү (OLTP/OLAP), datacets формат/партиялаштыруу.
Коопсуздук/комплаенс: ачкычтарды айлантуу, шифрлөө, маалыматтарды гео-локализациялоо.

2) Ийгиликтүү миграциянын принциптери

1. Expand → Migrate → Contract. Адегенде схеманы/жүрүм-турумун кеңейтип (шайкеш), андан кийин маалыматтарды/трафикти өткөрүп, андан кийин эскисин алып салабыз.
2. Shadow & Dual. Көмүскө текшерүү (shadow read/write) жана валидация үчүн кош жазуу.
3. Фича-желектер жана "кызыл баскычы". Тез өчүрүү, этап-этабы менен күйгүзүү (persentile/тенанттар/региондор).
4. Демпотенттүүлүк жана кайталануучулук. Скрипттерди жана тапшырмаларды эч кандай терс таасирлери жок кайра баштоого болот.
5. өзгөрүүлөргө чейин байкоо. Dashbord/алдын ала Алерт, Логин/соода-жылы миграция маркерлер.
6. Артка кайтаруу документтештирилген. Runbook кайра эле деталдуу, ошондой эле план алдыга.
7. Мини-партия жана тыныгуу. Биз SLI жана бизнес инварианттарды текшерүү менен чакан бөлүктөрүндө көчүп.

3) Инвентаризация жана көз карандылыкты талдоо

Керектөөчүлөрдүн картасы: кызматтар, джобдор, отчеттор, тышкы өнөктөштөр, BI/ETL, вебхактар.
Келишимдер жана схемалар: API/окуялардын версиялары, backward/forward шайкештиги.
Access/Secrets: ким окуйт/жазган, кайда кэши/реплика.
Домендин инварианттары: уникалдуулук, тең салмактуулук, теңдештик, отчеттук күнү.
Көлөмү/ылдамдыгы: маалыматтар көлөмү, RPS, жогорку терезелер, RPO/RTO.

4) Канондук Playbook шаблон (YAML-скелет)

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) Миграциянын үлгүлөрү

5. 1 DD схемалар (RDBMS/NoSQL)

Кошуу - өзгөртүү жок. Жаңы nullable мамычалар/индекстер → код эски жана жаңы окуйт.
Онлайн кайра куруу. Онлайн индекстерди/параллелдүү DDL колдонуңуз.
Сериалдаштыруунун версиялары. JSON/Proto/Euro колонкаларында payload чыгаруу.
Ачкычтарды көчүрүү. PK өзгөргөндө - убакыт шайкештик таблицасы + триггер/CDC.

5. 2 Маалыматтар (backfill/cleanup)

CDC + backfill. Адегенде өзгөртүү агымы (артта калбоо үчүн), андан кийин пакеттик backfill.
Партиялар жана мөөнөтү. Лагдарды, чекпойнтторду жана кайра ишке киргизүүнү көзөмөлдөө менен чакан батчи.
Идемпотенттик апдейттер. Upsert табигый ачкычтары/версиялары боюнча.

5. 3 Окуялар жана кезектер

Окуялардын версиясы. 'event _ type @vN', консультанттар бейтааныш талааларды четке кагышат.
Топиктердин кыймылы. Double жарыялоо, керектөөчүлөр турукташтыруу үчүн эки окуу; андан кийин эскисин "кесип".
Partition key. Ачкычтын миграциясы - шайкештик жана демпотенттик картасы менен кайра басып чыгаруу аркылуу.

5. 4 Кызматтар жана API

Blue/Green/Canary. Бассейн жылытуу, жарым-жартылай трафик, тез артка кетүү.
Фича желектери. Тенанттар/региондор/пайыздар боюнча, байкалган киргизүү.
Контракттар. CDC келишимдер жана шайкештик тесттер - которууга чейин.

5. 5 Региондор/Клаус

Гео-кош жазуу. Маалыматтар эки аймакка жазылат; окуу - жакын.
State transfer. Сүрөт + репликация; "кызыл сызык" RPO, DNS/Anycast жүктөө.
Юрисдикциялар. Макулдук/маалыматтарды локализациялоо, топтомдорду алып салуу үчүн "тыюу салынган" тизмелер.

6) Аткаруу фазалары (деталдуу)

1. Даярдоо

Dashbordes, Алерт, лимиттер, Ficha-желектери, калыбына келтирүү сыноо менен backaps, стейдж боюнча чуркоо.

2. Көлөкө (көмүскө текшерүү)

Колдонуучуларга таасир этпестен жаңы системага кайрылууларды/жазууларды чагылдыруу. Биз жоопторду/шарттарды салыштырып жатабыз.

3. Dual-write / Dual-read

Биз эки тарапка жазабыз. Окуу - акырындык менен жаңы системага которуу. Карама-каршылыктардын логдору талданат.

4. Backfill

Тарыхый маалыматтарды партияларга жүктөйбүз. Биз CDC лагын көзөмөлдөйбүз, storidge/кэш жүктү көзөмөлдөйбүз.

5. Cutover

Сегменттер боюнча канарим (тенанттар/региондор/пайыздар). Тез артка кайтарууну колдойбуз.

6. Contract

Эски жолдорду кесип, эскирген талааларды/индекстерди/топиктерди "коопсуздук мезгилинен" кийин алып салабыз.

7. Текшерүү жана ретро

Отчет, метрика, сабактар, playbook/чек барактарын жаңыртуу.

7) Миграция учурунда байкоо жана SLO

Техникалык SLI: p50/p95/p99, rate, retry/timeout, utilization, lag CDC, кезек тереңдик.
Бизнес-SLI: транзакциялардын/конверсиялардын ийгилиги, инварианттар (баланстар, лимиттер, дубликаттар).
Атайын белгилер: 'migration _ id', 'phase', 'tenant', 'flag _ state'.
Alerty күзөтчүлөр: куйругу жана ката босоголор, "auto-stop" (abort) SLO боюнча.
Салыштырма панелдер: v1 vs v2, негизги көрсөткүчтөр боюнча "дельта".

8) Артка жана өзгөчө жагдайлар

Логикалык артка: желектер/артка жол багыттоо, backfill тоңдуруп.
Маалыматтар: "ордун толтуруу" (Saga), окуялар реплика, DLQ → баштапкы системасы.
Сырлар/ачкычтар: мурунку ачкычка/сертификатка кайтуу (эки-негизги).
DNS/Traffic: "тескери Drift" Anycast/ALB, TTL кыска көчүрүү терезеде.
Байланыш: алдын ала макулдашылган канал жана статус форматы.

9) Коопсуздук, купуялык, комплаенс

Маалыматтарды минималдаштыруу. Биз керектүү талааларды гана өткөрүп; анонимдөө профилдери көчүрмөдө.
Криптография. "Зымдарда" жана "тынч" шифрлөө, KMS ротациясы; ачкычтар менен операциялардын журналы.
Убакыт жеткиликтүүлүгү. Миграциялык джобдор үчүн убактылуу ролдор, аяктагандан кийин укуктарды тандоо.
Изи. Блогдордо/соодада PD жашыруу, экспортту чектөө.

10) Өзгөрүүлөрдү жана коммуникацияларды башкаруу

RACI: ким ырастайт, ким аткарат, ким маалымдалат.
Freeze-periods: көчүрүү терезесине тиешелүү эмес релиздерди тыюу.
Статустар: T-24h, T-1h, баштоо, канаринг, кесүү, аяктоо, пост-деңиз.
Тышкы өнөктөштөр: шайкештик терезелер, келишим кат, сыноо Sandbox.

11) Runbook үлгүлөрү

11. 1 Backfill (псевдокод)


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 Текшеръъчъ (Snapshot/тандоо)


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 Окууларды которуу


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

12) Анти-үлгүлөрү

"Чоң жарылуу" ордуна expand-migrate-contract.
CDC жок Backfill → түбөлүк кууп жана drift.
Демпотенттиктин жоктугу → дубль/кир маалыматтар.
скрипт жок кол кадамдар → адам каталар.
Дашбордсуз миграция → "сокур учуу".
Тастыкталбаган артка → артка керек болгондо иштебейт.
Керектөөчүлөрдү четке кагуу (BI/өнөктөштөр) → "сынган" отчеттор/интеграция.

13) Архитектордун чек тизмеси

1. Максаты, чек аралары, миграциянын түрү жана натыйжанын инварианттары аныкталдыбы?
2. Керектөөчүлөрдүн жана келишимдердин картасы түзүлдү, шайкештик тесттери жашыл?
3. Даярдалган дашборддор, алерттер, 'migration _ id', SLO/guardrails белгиленген?
4. Ишке shadow жана/же dual-write, backfill idempotenten?
5. Бар практикалык rollback runbook, backup калыбына келтирүү текшерүү?
6. Терезе/координация/байланыш макулдашылган, freeze камтылган?
7. Канаринг жана кеңейтүү/токтотуу критерийлери менен кадам планы даярбы?
8. Коопсуздук/комплаенс: ачкычтар, жетүү, PII-санитария?
9. Документация/SDK/спекла ошол эле релиздик айлампада жаңыланабы?
10. Пост-деңиз жана плейбук аяктагандан кийин жаңылоо пландаштырылган?

Корутунду

Миграциянын плейбуктары - бул тобокелдикти башкаруунун архитектуралык практикасы: майда артка кайтарылуучу кадамдар, ачык-айкын метриктер, даяр артка кайтаруу жана "expand-migrate-contract" дисциплинасы. Сүрөттөлгөн шаблондорду ээрчип, сиз схемаларды, маалыматтарды, кызматтарды жана региондорду токтоп калбастан жана күтүлбөгөн жерден, бизнестин инвариантын жана колдонуучулардын ишенимин сактап каласыз.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.