GH GambleHub

کتابهای راهنمای مهاجرت

1) مهاجرت

طرح های DB: اضافه کردن/تغییر ستون ها، شاخص ها، sharding، تغییر نوع کلید.
داده ها: پر کردن توده/پاکسازی، عادی سازی، نگهداری/بایگانی.
خدمات و API ها: تغییر نقاط پایانی، نسخه، refactoring قرارداد.
صف/اتوبوس: موضوعات در حال حرکت، تغییر کلید عضویت، فرمت رویداد.
زیرساخت: حرکت به یک cluster/K8s/cloud/region جدید، تغییر اسرار/KMS.
ذخیره سازی و تجزیه و تحلیل: تغییر موتور (OLTP/OLAP)، فرمت/پارتیشن بندی مجموعه داده ها.
امنیت/انطباق: چرخش کلید، رمزگذاری در پرواز، جغرافیایی محلی سازی داده ها.

2) اصول مهاجرت موفق

1. گسترش → مهاجرت → قرارداد. ابتدا طرح/رفتار (سازگار) را گسترش می دهیم، سپس داده ها/ترافیک را انتقال می دهیم، سپس قدیمی را حذف می کنیم.
2. سایه و دوگانه سایه خواندن/نوشتن و ورود دو برای اعتبار.
3. پرچم ها و دکمه قرمز "خاموش شدن سریع، فعال سازی گام به گام (درصد/مستاجران/مناطق).
4. بی نظمی و تکرارپذیری. اسکریپت ها و وظایف را می توان بدون عوارض جانبی دوباره راه اندازی کرد.
5. قابلیت مشاهده قبل از تغییرات داشبورد/هشدار در پیش، نشانگر مهاجرت در سیاهههای مربوط/آهنگ.
6. برگشت مستند شده Rollback Runbook به اندازه برنامه پیش رو دقیق است.
7. مینی بازی و مکث. ما در بخش های کوچک مهاجرت می کنیم، SLI و invariants کسب و کار را بررسی می کنیم.

3) تجزیه و تحلیل موجودی و وابستگی

نقشه مصرف کننده: خدمات، مشاغل، گزارش ها، شرکای خارجی، BI/ETL، وب سایت ها.
قراردادها و طرح ها: نسخه های API/رویداد، سازگاری عقب/جلو.
دسترسی/اسرار: چه کسی می خواند/می نویسد که در آن کش/نشانه هستند.
تغییرناپذیر دامنه: منحصر به فرد، تعادل، idempointency، روز گزارش.
حجم/سرعت: اندازه داده ها، 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 طرح DB (RDBMS/NoSQL)

اضافه کنید - تغییر نکنید. ستونها/نمایههای nullable جدید → کد قدیمی و جدید را میخواند.
بازسازی آنلاین استفاده از شاخص های آنلاین/DDL های همزمان.
نسخه های سریال سازی نسخه بارگیری در ستون های JSON/Proto/Avro.
مهاجرت کلیدی هنگام تغییر PK - جدول زمانی مکاتبات + ماشه/CDC.

5. 2 داده ها (backfill/پاکسازی)

CDC + backfill. اول، جریان تغییرات (برای حفظ)، سپس backfill دسته ای.
احزاب و مهلت ها دسته های کوچک با کنترل تاخیر، بازرسی و راه اندازی مجدد.
به روز رسانی idempotent. Upsert توسط کلید های طبیعی/نسخه ها.

5. 3 رویدادها و صف ها

حوادث نسخه. 'event _ type @ vN'، مصرف کنندگان زمینه های ناآشنا را نادیده می گیرند.
موضوعات متحرک دو پست، مصرف کنندگان از هر دو قبل از تثبیت خواندن ؛ سپس «برش» قدیمی.
کلید پارتیشن مهاجرت کلیدی - از طریق چاپ مجدد با یک نقشه از مکاتبات و idempointency.

5. 4 خدمات و API ها

آبی/سبز/قناری. گرم شدن استخر، ترافیک جزئی، بازگشت سریع.
پرچم های Ficha توسط مستاجران/مناطق/درصد، شامل مشاهده شده است.
قرارداد ها قراردادهای CDC و تست های سازگاری - قبل از تعویض.

5. 5 مناطق/Clades

ضبط دو طرفه داده ها در دو منطقه ثبت می شوند ؛ خواندن - توسط نزدیکی.
انتقال ايالتي. عکس فوری + تکرار ؛ RPO «خط قرمز»، DNS/انتقال Anycast.
حوزه های قضایی رضایت/محلی سازی داده ها، لیست «ممنوع» برای حذف کیت.

6) مراحل اجرا (دقیق)

1. آماده سازی

داشبورد، هشدارها، محدودیت ها، پرچم های ویژگی، پشتیبان گیری با یک آزمون بازیابی، بر روی یک مرحله اجرا می شود.

2. سایه (بررسی سایه)

درخواست/نوشتن آینه به سیستم جدید بدون تاثیر بر کاربران. پاسخ ها/ایالت ها را مقایسه کنید.

3. دوگانه نوشتن/دوگانه خواندن

ما در هر دو جهت می نویسیم. خواندن - به تدریج به یک سیستم جدید منتقل می شود. لاگهای عدم انطباق تحلیل میشوند.

4. پر کردن پشتی

ما داده های تاریخی را در دسته ها بارگذاری می کنیم. ما تاخیر CDC را کنترل می کنیم، بار را بر روی داستان/حافظه پنهان نظارت می کنیم.

5. قطع کننده (سوئیچینگ)

کاناریم توسط بخش (مستاجران/مناطق/درصد). ما از عقب نشینی سریع حمایت می کنیم.

6. قرارداد (تمیز کردن)

مسیرهای قدیمی را قطع کنید، فیلدهای/فهرست/موضوعات قدیمی را بعد از «دوره امنیتی» حذف کنید.

7. تایید و یکپارچهسازی با سیستمعامل

گزارش، متریک، درس، به روز رسانی playbook/چک لیست.

7) قابلیت مشاهده و SLO در هنگام مهاجرت

SLI های فنی: p50/p95/p99، میزان خطا، تلاش مجدد/زمان بندی، استفاده، تاخیر CDC، عمق صف.
SLI کسب و کار: موفقیت معاملات/تبدیل، ثابت (تعادل، محدودیت، تکراری).
برچسب های ویژه: «migration _ id»، «phase»، «tenant»، «flag _ state».
نگهبانان هشدار: آستانه برای دم و خطا، «خودکار توقف» (سقط) برای SLO.
پانل های مقایسه: v1 در مقابل v2، دلتا با معیارهای کلیدی.

8) بازگشت و سناریوهای اضطراری

بازگشت منطقی: پرچم ها/مسیریابی ترافیک، انجماد عقب.
داده ها: «جبران خسارت» (Saga)، پخش رویداد، DLQ → سیستم منبع.
اسرار/کلید: بازگشت به کلید/گواهی قبلی (کلید دوگانه).
DNS/ترافیک: «رانش معکوس» Anycast/ALB، TTL کوتاه در پنجره مهاجرت.
ارتباطات: کانال از پیش توافق شده و فرمت وضعیت.

9) امنیت، حریم خصوصی، انطباق

به حداقل رساندن داده ها. ما فقط زمینه های لازم را انتقال می دهیم پروفایل های ناشناس در کپی.
رمزنگاري. رمزگذاری «روی سیم» و «در حالت استراحت»، چرخش KMS ؛ ورود به سیستم عملیات کلیدی.
دسترسی به زمان نقش موقت برای مشاغل مهاجرت، انتخاب حقوق پس از اتمام.
اثر انگشت PD ماسک در سیاهههای مربوط/آثار، محدودیت صادرات.

10) مدیریت تغییر و ارتباطات

RACI: کسی که ادعا می کند چه کسی انجام می دهد، چه کسی مطلع است.
توقف دوره: ممنوعیت انتشار نامناسب در پنجره مهاجرت.
وضعیت: 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 Proverka一致nosti (عکس فوری/نمونه)


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) ضد الگوهای

«انفجار بزرگ» به جای گسترش-مهاجرت-قرارداد.
Backfill بدون CDC → گرفتن ابدی و رانش.
بدون idempotency → تکراری/داده های کثیف.
مراحل دستی بدون اسکریپت → خطاهای انسانی.
مهاجرت بدون داشبورد/نگهبان → «پرواز کور».
Unacknowledged rollback → rollback در صورت لزوم کار نمی کند.
نادیده گرفتن مصرف کنندگان (BI/شرکا) → گزارش های شکسته/ادغام.

13) چک لیست معمار

1. هدف، مرزها، نوع مهاجرت و نتایج متغیر تعریف شده است ؟

2. مصرف کننده و قرارداد نقشه کشیده شده است، تست سازگاری سبز ؟

3. داشبورد آماده، هشدار، برچسب 'مهاجرت _ id'، SLO/guardrails مجموعه ؟

4. سایه پیاده سازی شده و/یا دو نوشتن، عقب خالی idemotent ؟

5. آیا rollback runbook تمرین وجود دارد, بررسی بازیابی از پشتیبان گیری?

6. پنجره/هماهنگی/ارتباطات توافق شده، یخ زده ؟

7. طرح گام به گام با canary و گسترش/توقف معیارهای آماده?

8. امنیت/انطباق: کلید، دسترسی، بهداشت PII ؟

9. آیا مستندات/SDK/spec در همان چرخه انتشار به روز شده است ؟

10. پس از دریا و به روز رسانی playbook پس از اتمام برنامه ریزی شده ؟

نتیجه گیری

کتاب های مهاجرت یک عمل معماری مدیریت ریسک هستند: گام های برگشت پذیر کوچک، معیارهای شفاف، بازگشت آماده و نظم «گسترش-مهاجرت-قرارداد». پس از قالب های توصیف شده، طرح ها، داده ها، خدمات و مناطق را بدون خرابی و شگفتی مهاجرت می کنید، در حالی که حفظ کسب و کار و اعتماد کاربر را حفظ می کنید.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.