كتب ألعاب الهجرة
1) تصنيف الهجرة
مخططات DB: إضافة/تغيير الأعمدة والفهارس والشحن وتغيير نوع المفتاح.
البيانات: الردم الشامل/التنظيف والتطبيع والاحتفاظ/الأرشفة.
الخدمات وواجهات برمجة التطبيقات: تغيير نقاط النهاية، والتحرير، وإعادة تشكيل العقود.
قوائم الانتظار/الحافلات: مواضيع متحركة، تغيير مفاتيح العضوية، تنسيق الحدث.
البنية التحتية: الانتقال إلى cluster/K8s/cloud/region جديد، وتغيير الأسرار/KMS.
التخزين والتحليلات: تغيير المحرك (OLTP/OLAP)، تنسيق/تقسيم مجموعات البيانات.
الأمن/الامتثال: دوران المفتاح، والتشفير أثناء الطيران، والتوطين الجغرافي للبيانات.
2) مبادئ الهجرة الناجحة
1. توسيع → الهجرة → العقد. أولاً، نوسع المخطط/السلوك (المتوافق)، ثم ننقل البيانات/حركة المرور، ثم نزيل المخطط/السلوك القديم.
2. الظل والثنائي. اقرأ الظل/اكتب وإدخال مزدوج للتحقق.
3. اعرض الأعلام و "الزر الأحمر. "الإغلاق السريع، التنشيط خطوة بخطوة (في المائة/المستأجرين/المناطق).
4. الفراغ والتكرار. يمكن إعادة تشغيل النصوص والمهام دون آثار جانبية.
5. إمكانية الملاحظة قبل التغييرات. لوحات/تنبيهات مسبقة، علامات ترحيل في سجلات/مسارات.
6. تم توثيق التراجع. دفتر التراجع مفصل مثل الخطة إلى الأمام.
7. ألعاب صغيرة وتوقفات. نحن نهاجر في أجزاء صغيرة، ونتحقق من SLI والأعمال الثابتة.
3) تحليل المخزون والتبعية
خريطة المستهلك: الخدمات، الوظائف، التقارير، الشركاء الخارجيون، BI/ETL، خطوط الويب.
العقود والمخططات: نسخ واجهة برمجة التطبيقات/الأحداث، التوافق الخلفي/الأمامي.
الوصول/الأسرار: من يقرأ/يكتب أين المخابئ/الإشارات.
ثوابت المجال: التفرد والتوازن والخصوصية ويوم الإبلاغ.
الأحجام/السرعات: حجم البيانات، 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 مخططات DB (RDBMS/NoSQL)
إضافة - لا تتغير. تقرأ الأعمدة/الفهارس الجديدة → الرمز القديمة والجديدة.
إعادة البناء عبر الإنترنت. استخدم الفهارس الإلكترونية/DDLs المتزامنة.
نسخ تسلسلية. أصدر الحمولة في أعمدة JSON/Proto/Avro.
الهجرة الرئيسية. عند تغيير PK - جدول الوقت للمراسلات + الزناد/CDC.
5. 2 بيانات (ملء/تنظيف)
ردم CDC +. أولاً، تدفق التغييرات (لمواكبة ذلك)، ثم تعبئة الدفعة.
الأطراف والمواعيد النهائية. دفعات صغيرة مع التحكم في التأخر ونقاط التفتيش وإعادة التشغيل.
تحديثات غبية. مزعج بالمفاتيح/الإصدارات الطبيعية.
5. 3 أحداث وقوائم انتظار
إحياء الأحداث. «event _ type @ vN»، يتجاهل المستهلكون المجالات غير المألوفة.
المواضيع المتحركة. بعد مزدوج، يقرأ المستهلكون من كليهما قبل الاستقرار ؛ ثم «قطع» القديم.
مفتاح التقسيم. الهجرة الرئيسية - من خلال إعادة الإصدار مع خريطة للمراسلات والغباء.
5. 4 خدمات وواجهات برمجة التطبيقات
الأزرق/الأخضر/الكناري. إحماء حمام السباحة، حركة مرور جزئية، تراجع سريع.
أعلام فيشا. حسب المستأجرين/المناطق/النسب المئوية، تمت ملاحظة الإدراج.
العقود. عقود CDC واختبارات التوافق - قبل التبديل.
5. 5 مناطق/كليدز
تسجيل جغرافي مزدوج. وتسجل البيانات في منطقتين ؛ قراءات - عن طريق القرب.
نقل الدولة. لقطة + تكرار ؛ RPO «الخط الأحمر»، DNS/Anycast إعادة الشحن.
الولايات القضائية. الموافقة/توطين البيانات، قوائم «المحظورة» لإزالة مجموعات المواد.
6) مراحل التنفيذ (مفصلة)
1. التحضير
لوحات القيادة، التنبيهات، الحدود، الأعلام المميزة، النسخ الاحتياطية مع اختبار الاسترداد، تعمل على خشبة المسرح.
2. الظل (فحص الظل)
عكس الطلبات/الكتابة إلى النظام الجديد دون التأثير على المستخدمين. قارن الردود/الحالات.
3. ثنائي الكتابة/ثنائي القراءة
نكتب في كلا الاتجاهين. القراءات - الانتقال تدريجياً إلى نظام جديد. يتم تحليل سجلات عدم المطابقة.
4. ردم
نقوم بتحميل البيانات التاريخية على دفعات. نحن نتحكم في تأخر مركز السيطرة على الأمراض، ونراقب الحمل على القصة/المخبأ.
5. قطع (تبديل)
الكناريم حسب القطاع (المستأجرون/الأقاليم/النسب المئوية). نحن ندعم التراجع السريع.
6. العقد (التنظيف)
قطع المسارات القديمة، حذف الحقول/الفهارس/الموضوعات القديمة بعد «فترة الأمان».
7. التحقق والرجعية
تقرير، مقاييس، دروس، تحديث قواعد اللعبة/القوائم المرجعية.
7) إمكانية الرصد و SLO أثناء الهجرة
SLIs التقنية: p50/p95/p99، معدل الخطأ، إعادة النظر/المهلة، الاستخدام، تأخر مركز السيطرة على الأمراض، عمق قائمة الانتظار.
الدالة Business SLI: نجاح المعاملات/التحويلات، الثوابت (الأرصدة، الحدود، التكرارات).
العلامات الخاصة: «الهجرة - الهوية»، «المرحلة»، «المستأجر»، «العلم - الدولة».
حراس التنبيه: عتبات الذيول والأخطاء، «التوقف التلقائي» (الإجهاض) لـ SLO.
لوحات المقارنة: v1 مقابل v2، دلتا بالمقاييس الرئيسية.
8) سيناريوهات التراجع والطوارئ
التراجع المنطقي: الأعلام/توجيه حركة المرور للخلف، وتجميد الردم.
البيانات: «التعويض» (Saga)، إعادة تشغيل الحدث، DLQ → نظام المصدر.
الأسرار/المفاتيح: العودة إلى المفتاح/الشهادة السابقة (المفتاح المزدوج).
DNS/حركة المرور: «الانجراف العكسي» Anycast/ALB، TTL قصير في نافذة الهجرة.
الاتصالات: شكل القناة والحالة المتفق عليهما مسبقا.
9) الأمن والخصوصية والامتثال
تقليل البيانات. ولا ننقل سوى الحقول الضرورية ؛ سمات إخفاء الهوية على النسخة.
التشفير. التشفير «على السلك» و «عند الراحة»، دوران KMS ؛ سجل العمليات الرئيسي.
الوصول إلى الوقت. أدوار مؤقتة لوظائف الهجرة، اختيار الحقوق بعد الانتهاء.
آثار أقدام. إخفاء PD في جذوع الأشجار/الآثار، قيود التصدير.
10) إدارة التغيير والاتصالات
RACI: من يدعي من يؤدي، ومن يتم إبلاغه.
فترات التجميد: حظر الإطلاقات غير ذات الصلة في نافذة الهجرة.
الحالات: T-24h، T-1h، البدء، الكناري، القطع، النهاية، ما بعد البحر.
الشركاء الخارجيون: نوافذ التوافق، أحرف العقد، صندوق الرمل التجريبي.
11) قوالب كتاب التشغيل
11. 1 ردم (كاذب)
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) الأنماط المضادة
«الانفجار العظيم» بدلاً من التوسع في عقد الهجرة.
ردم بدون CDC → اللحاق الأبدي والانجراف.
لا يوجد فراغ → مكرر/بيانات قذرة.
خطوات يدوية بدون نصوص → أخطاء بشرية.
الهجرة بدون لوحات القيادة/الحراس → «الطيران الأعمى».
التراجع → التراجع غير المعترف به لا يعمل عند الحاجة.
تجاهل المستهلكين (BI/Partners) → تقارير/عمليات اندماج معطلة.
13) قائمة مرجعية للمهندس المعماري
1. الهدف والحدود ونوع الهجرة وثوابت النتيجة ؟
2. وضع خريطة المستهلك والعقد، اختبارات التوافق خضراء ؟
3. لوحات القيادة المعدة، التنبيهات، العلامات "migration _ id'، SLO/مجموعة حواجز الحماية ؟
4. تنفيذ الظل و/أو الكتابة المزدوجة، ردم الخصوصية ؟
5. هل هناك دفتر تشغيل ممارس، تحقق من التعافي من النسخ الاحتياطي ؟
6. تم الاتفاق على النافذة/التنسيق/الاتصال، تجميد ؟
7. خطة خطوة بخطوة مع معايير التوسع/التوقف جاهزة ؟
8. الأمن/الامتثال: المفاتيح، الدخول، الصرف الصحي PII ؟
9. هل يتم تحديث الوثائق/SDK/المواصفات في نفس دورة الإصدار ؟
10. تحديث ما بعد البحر وكتاب اللعب بعد الانتهاء المخطط له ؟
خامسا - الاستنتاج
تعد كتب اللعب الخاصة بالهجرة ممارسة معمارية لإدارة المخاطر: خطوات صغيرة قابلة للعكس، ومقاييس شفافة، وتراجع جاهز، وانضباط «التوسع في عقد الهجرة». باتباع القوالب الموصوفة، تقوم بترحيل المخططات والبيانات والخدمات والمناطق دون توقف ومفاجآت، مع الحفاظ على ثبات الأعمال وثقة المستخدم.