محتويات الدورة

جودة DevOps / المتوسط: أنظمة تحقق موثوقة / الدرس 7

الحزم المتوازية والأجزاء وعزل البيانات

قلل زمن التغذية دون إدخال سباقات حالة مشتركة أو فقد أدلة الأجزاء.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • ميّز عمال المشغّل عن الأجزاء بين الأجهزة.
  • صمّم ملكية النطاق والتجميع الكامل.

احسب التزامن عبر كل طبقة

قد تنشئ مصفوفة CI مهام عدة وتشغل كل منها عمال اختبار متعددين ويفتح العامل اتصالات عدة. الطلب الكلي حاصل هذه الخيارات لا الرقم في إعداد واحد. تقسم الأجزاء الحزمة بين مهام مستقلة ويوازي العمال داخل الجزء. قد تؤدي زيادتهما لإرهاق قاعدة مشتركة وفشل اختبارات صحيحة. قس الانتظار والتنفيذ والذاكرة والاتصالات وحدود الخدمات قبل افتراض أن مزيداً من التزامن يسرع التغذية المفيدة.

خصص الملكية قبل بدء العمال

تشمل هوية البيانات التشغيل والجزء والعامل والحالة أو المورد. قد تحتاج الإعادة هوية محاولة جديدة مع سياق يشخص الأصل. طبّع الأسماء لقيود الخدمة واكشف تصادم الاقتطاع. يتحقق التنظيف من الملكية ويحذف المخصص فقط. لا تستخدم رقم عامل وحده فقد يملك جهازان العامل صفر. يبني المثال نطاقاً اصطناعياً حتمياً من مدخلات صريحة؛ وتتحقق المساعدات الفعلية من قيم CI.

python عقد مدخلات نطاق صريح
import hashlib
import json

def namespace(run_id, shard, worker, case):
    parts = [str(x) for x in (run_id, shard, worker, case)]
    raw = json.dumps(parts, ensure_ascii=True, separators=(",", ":"))
    suffix = hashlib.sha256(raw.encode("utf-8")).hexdigest()[:16]
    return "qa_" + suffix

assert namespace("run-41", 1, 0, "reserve") != namespace("run-41", 2, 0, "reserve")

تقصر البصمة الاسم وتقلل التصادم العرضي ولا تمثل تفويضاً أو ضمان فرادة رياضياً. احفظ بيانات الملكية الأصلية مع الموارد وافرض قيود الفرادة. لا تستخدم المعرّف اعتماداً.

اجعل خطة الأجزاء ظاهرة

توزع مصفوفة GitHub Actions حزمة Playwright بين المهام. يتحكم fail-fast بالإلغاء بعد فشل، وقد يحفظ تعطيله تشخيص الأجزاء الباقية بكلفة أعلى. يحد max-parallel مهام المصفوفة لا عمال كل مهمة. يفترض الجزء إتمام جلب موثوق وتثبيت الاعتماديات وإعداد التطبيق المحلي. ثبّت تلك الأدوات وفق السياسة. ينشر كل جزء تقريراً فريد الاسم ويعرف المجمع العدد المتوقع.

yaml جزء مهمة GitHub Actions بأجزاء Playwright
strategy:
  fail-fast: false
  max-parallel: 2
  matrix:
    shard: [1, 2, 3, 4]
steps:
  - name: Run local browser shard
    run: npx playwright test --shard=${{ matrix.shard }}/4 --workers=2 --reporter=blob

مراجع لصياغة المصفوفة وCLI الموثقة؛ يجب تثبيت إصدارات المشروع. قد تنتج أربع مهام بعاملين ثمانية عمال نشطين إذا رُفع الحد. تحتاج تقارير blob جمعاً ودمجاً منفصلين.

طابق العزل مع الموارد المشتركة

تعزل سياقات المتصفح حالته والعمليات الذاكرة والمخططات أو الصفوف المملوكة أجزاء حالة الخادم. لا يعزل أي منها الحصص والبريد والطوابير ومقدمات التخزين وأعلام الميزات تلقائياً. احصر الموارد القابلة للتعديل وحدد استراتيجية لكل منها. يفيد التسلسل لتشخيص التصادم لا كإصلاح عام. تحتاج حالات مورداً حصرياً حقاً فوسمها وجدوِلها بقصد بدلاً من تخفيض الحزمة كلها لعامل واحد عند الفشل.

تحقق من التقسيم والاكتمال

تنفذ خطة الأجزاء كل حالة مقصودة ضمن مشروعاتها بلا حذف أو تكرار غير مخطط. قد توازن الأنماط الملفات أو الاختبارات وفق الإعداد فقس التوزيع الفعلي. ادمج بالتدفق المدعوم واحفظ هوية الجزء للتشخيص. لا تستبدل الإعادة دليل المحاولة الأولى. قارن المتوقع بالواصل وصنف الإلغاء وتأكد من أن جزءاً يفشل سريعاً لا يخضر المجموع. حسّن المسار الأطول بعد موثوقية العزل والاكتمال.

الأخطاء الشائعة وإصلاحها

تستبدل الاختبارات المتوازية حساباً واحداً

لماذا يحدث؟
لا تنعكس هوية العامل في البيانات الخلفية.
كيف تصلحه؟
خصص موارد مملوكة عبر التشغيل والجزء والحالة.
كيف تتجنب تكراره؟
اختبر التصادم المضبوط قبل زيادة التزامن.

تنتهي مهلة القاعدة بعد زيادة الأجزاء

لماذا يحدث؟
تتجاوز أعداد العمال المتداخلة سعة الاتصالات.
كيف تصلحه؟
حد التزامن الكلي وافحص ضغط التجمع.
كيف تتجنب تكراره؟
خطط سعة كل الاعتماديات المشتركة.

تحذف التقارير المدمجة جزءاً فاشلاً

لماذا يحدث؟
ترفع المهام الناجحة الأدلة وحدها.
كيف تصلحه؟
اجمع تقارير الفشل واشترط وصف الأجزاء الكامل.
كيف تتجنب تكراره؟
اختبر الفشل والإلغاء في التجميع.

اختبر فهمك

1. ثلاثة أجزاء بأربعة عمال والخدمة تدعم ثمانية اتصالات. ماذا يفحص قبل تشغيلها معاً؟

اعرض الحل المشروح

قد يتنافس اثنا عشر عاملاً وكل منهم يحتاج اتصالات عدة. قس الطلب وحد التزامن واحتفظ بسعة للإعداد والتنظيف. لا تساوِ ثمانية اتصالات بثمانية عمال آمنين دون فحص التجمع.

2. تنجح الإعادة بعد حذف المحاولة الأولى بيانات اختبار آخر. كيف يصنف التشغيل؟

اعرض الحل المشروح

يحوي فشل عزل لا دليلاً ناجحاً نظيفاً. احفظ المحاولتين وتتبّع الملكية وأصلح التخصيص والتنظيف ثم تحقق بتوازي متكرر. لا يثبت نجاح الإعادة سلامة الأصل.

أهم ما تعلمته

  • يتضاعف التزامن عبر المهام والأجزاء والعمال.
  • يجب أن تصل الملكية لكل مورد خلفي قابل للتعديل.
  • اكتمال التقسيم جزء من عقد البوابة.

المراجع الرسمية