GH GambleHub

Көші-қон плейбуктері

1) Көші-қонды жіктеу

ДБ схемалары: бағандарды қосу/өзгерту, индекстер, шардалау, кілттердің түрін ауыстыру.
Деректер: жаппай backfill/cleanup, қалыпқа келтіру, ретеншн/мұрағаттау.
Сервистер және API: эндпоинттерді ауыстыру, нұсқалау, келісімшарттарды рефакторинг.
Кезектер/шиналар: топиктердің ауысуы, партиялану кілттерінің өзгеруі, оқиғалар пішімі.
Инфрақұрылым :/K8s/бұлт/өңір жаңа кластеріне көшу ,/KMS құпияларын ауыстыру.
Қоймалар және талдау: қозғалтқышты ауыстыру (OLTP/OLAP), датасеттердің форматы/партиялануы.
Қауіпсіздік/комплаенс: кілттерді ротациялау, «ұшуда» шифрлау, деректерді гео-локализациялау.

2) Табысты көші-қон қағидаттары

1. Expand → Migrate → Contract. Алдымен схеманы/мінез-құлықты кеңейтеміз (үйлесімді), содан кейін деректерді/трафикті көшіреміз, содан кейін ескісін алып тастаймыз.
2. Shadow & Dual. Көлеңкелі тексеру (shadow read/write) және валидация үшін қосарланған жазба.
3. Фича-жалаулар және «қызыл түйме». Жылдам өшіру, қадамдық қосу (персентиль/тенанттар/өңірлер).
4. Ұқсастығы және қайталануы. Скрипттер мен тапсырмаларды кері әсерсіз қайта іске қосуға болады.
5. Өзгерістер алдында бақылау. Дашбордтар/алерттар алдын ала, логтардағы/трестердегі көші-қон маркерлері.
6. Кері қайтару құжатталған. Runbook кері қайтару жоспар сияқты егжей-тегжейлі.
7. Шағын партиялар мен үзілістер. SLI және бизнес инварианттарын тексере отырып, шағын бөліктермен қоныс аударамыз.

3) Тәуелділікті түгендеу және талдау

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

4) Каноникалық плейбук үлгісі (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 БД схемалары (RDBMS/NoSQL)

Қосыңыз - өзгертпеңіз. Жаңа nullable бағандар/индекстер → коды ескісін және жаңасын оқиды.
Онлайн қайта құру. Онлайн индекстер/параллель DDL пайдаланыңыз.
Серияландыру нұсқалары. JSON/Proto/Euro бағандарында payload нұсқасын жасаңыз.
Кілттер тасымалы. PK ауысқан кезде - уақытша сәйкестік кестесі + триггер/CDC.

5. 2 Деректер (backfill/cleanup)

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

5. 3 Оқиғалар мен кезектер

Оқиғаларды нұсқалау. 'event _ type @vN', кеңесшілер таныс емес өрістерді елемейді.
Топиктерді көшіру. Қосарланған жарияланым, тұтынушылар тұрақтандыруға дейін екеуін де оқиды; содан кейін ескісін «кесу».
Partition key. Кілттің көші-қоны - сәйкестік және теңсіздік картасымен қайта басу арқылы.

5. 4 Сервистер мен API

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

5. 5 Өңірлер/класты

Гео-қос жазба. Деректер екі өңірге жазылады; оқу - жақын жерде.
State transfer. Сурет + репликалау; «қызыл сызық» RPO, DNS/Anycast ауыстырып тиеу.
Юрисдикция. Деректерді оқшаулау/келісу, жинақтарды шығару үшін «тыйым салынған» тізімдер.

6) Орындау фазалары (егжей-тегжейлі)

1. Дайындау

Дашбордтар, алерттар, лимиттер, фича-жалаулар, қалпына келтіру тесті бар бэкаптар, стейждегі жүгіру.

2. Shadow (көлеңкелі тексеру)

Пайдаланушыларға әсер етпейтін жаңа жүйедегі сұрауларды/жазбаларды айна. Жауаптар/жағдайларды салыстырамыз.

3. Dual-write / Dual-read

Екі жаққа да жазып жатырмыз. Оқу - біртіндеп жаңа жүйеге көшіреміз. Сәйкессіздік логтары талданады.

4. Backfill

Тарихи деректерді топтап жүктейміз. CDC лаг бақылаймыз, сторидж/кэш жүктемесін бақылаймыз.

5. Cutover (қайта қосу)

Сегменттер бойынша канарим (тенанттар/өңірлер/пайыздар). Тез кері қайтуды қолдаймыз.

6. Contract (тазалау)

Ескі жолдарды кесеміз, ескірген өрістерді/индекстерді/топиктерді «қауіпсіздік кезеңінен» кейін жойамыз.

7. Верификация және ретро

Есеп, метрика, сабақтар, плейбук/чек парақтарын жаңарту.

7) Көші-қон кезіндегі бақылау және SLO

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

8) Кері шегіну және авариялық сценарийлер

Логикалық кері бұрылу: жалаулар/трафикті артқа бағыттау, backfill қатыру.
Деректер: «өтемақы» (Saga), оқиғалар репликасы, DLQ → бастапқы жүйе.
Құпиялар/кілттер: алдыңғы кілтке/сертификатқа қайтару (dual-key).
DNS/трафик: «кері дрифт» Anycast/ALB, TTL қысқа көшіру терезесіне.
Коммуникациялар: алдын ала келісілген арна және мәртебе форматы.

9) Қауіпсіздік, құпиялылық, комплаенс

Деректерді барынша азайту. Тек қажетті өрістерді тасымалдаймыз; көшірмесіндегі анонимдеу профильдері.
Криптография. «Сымда» және «тыныштықта» шифрлау, KMS ротациясы; кілттермен операциялар журналы.
Уақыт бойынша қатынау. Көші-қон науалары үшін уақытша рөлдер, аяқталғаннан кейін құқықтарды іріктеу.
Іздер. Логтарда/трестерде ПД бүркемелеу, экспортты шектеу.

10) Өзгерістерді және коммуникацияларды басқару

RACI: кім бекітеді, кім орындайды, кім хабардар етіледі.
Freeze-кезеңдер: көші-қон терезесіне релиздерге тыйым салу.
Мәртебелері: T-24h, T-1h, старт, канаринг, cutover, мәреге жету, пост-теңізбен.
Сыртқы әріптестер: үйлесімділік терезелері, келісімшарт хаттары, қамыр құмсалғыш.

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 Тексерушілік (снэпшот/іріктеме)


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 → мәңгілік қуып жету және дрейф.
Сәйкессіздіктің жоқтығы → қосарланған/лас деректер.
Скрипттерсіз қол қадамдары → адам қателері.
Дашбордсыз/күзетшісіз көші-қон → «соқыр ұшу».
Расталмаған кері қайтару → кері қайтару қажет болғанда жұмыс істемейді.
Тұтынушыларды елемеу (BI/серіктестер) → «сынған» есептер/интеграция.

13) Сәулетшінің чек-парағы

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

Қорытынды

Көші-қон плейбуктері - бұл тәуекелді басқарудың архитектуралық практикасы: ұсақ қайтарылатын қадамдар, мөлдір метриктер, дайын кері қайту және «expand-migrate-contract» тәртібі. Сипатталған үлгілерді басшылыққа ала отырып, сіз схемаларды, деректерді, сервистерді және аймақтарды бизнестің инварианттары мен пайдаланушылардың сенімін сақтай отырып, бос тұрып және күтпеген жерден көшіріп аласыз.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.