صمّم برمجيات لبيئة سحابية أصيلة
مكتملاربط البنية التحتية القابلة للتكرار والعمليات القابلة للاستبدال والحالة المحفوظة بصورة دائمة والسلوك القابل للرصد. قيّم التصميم السحابي الأصيل بما يتجاوز التغليف في حاوية.
تحقّق من فهمكتستبدل منصة عملية عامل للتقارير بعد إخفاق. ما الذي يجعل إعادة المحاولة آمنة؟نفّذ التمرين
ما ستتعلّمه
- التمييز بين التغليف في حاوية والسلوك السحابي الأصيل.
- تحديد مخاطر الحالة وإعادة المحاولة والاستبدال في خدمة مولّدة.
- تحديد عقد منصة يستطيع الوكلاء والناس التحقق منه.
حدّد السلوك المطلوب
تدعم الممارسات السحابية الأصيلة تطويراً وتشغيلاً قابلين للتكرار في بيئات عامة أو خاصة أو هجينة. تؤكد CNCF أهمية أنظمة تبقى قابلة للإدارة والرصد والصمود مع تغيّرها. يمكن أن تدعم الحاويات وأدوات التنسيق هذا النهج. لكنها لا تثبت كل هذه الخصائص وحدها.
ابدأ بخدمة تقارير خيالية. تنشئ أداة ذكاء اصطناعي نقطة نهاية وعملية عامل (worker) وصورة حاوية. وينتج العرض التوضيحي ملف PDF صحيحاً. قبل الإنتاج، يجب أن يجيب الفريق عن سؤال آخر: ماذا يحدث عندما تستبدل المنصة عملية العامل أثناء مهمة؟
هذا سؤال عن تصميم التطبيق وعن البنية التحتية معاً. فقد تعيد إعادة التشغيل عملية إلى العمل بينما تفقد عملها غير المكتمل.
افصل العملية عن الحالة المحفوظة بصورة دائمة
يحفظ النموذج الأولي المهام المنتظرة والتقارير المكتملة على قرص الحاوية. وقد يزيل استبدال الحاوية كليهما. وقد تؤدي إضافة عمليات عامل أخرى أيضاً إلى إجابات مختلفة وفق العملية التي تتلقى الطلب.
يستخدم التصميم المعدّل مخزن مهام دائماً ومخزن كائنات معتمداً. يسجّل الطلب هوية مهمة. تتولى عملية عامل المهمة وتنشئ نتيجتها وتسجّل موقع النتيجة. وتبقى فحوص الوصول مطبّقة عندما ينزّل مستخدم التقرير.
| الجانب | السؤال لخدمة التقارير |
|---|---|
| الحالة | ما السجلات التي يجب أن تبقى بعد استبدال العملية؟ |
| الإعدادات | كيف يعمل ناتج البناء نفسه في كل بيئة؟ |
| الهوية | ما هوية الخدمة التي تستطيع قراءة المهمة وكتابة نتيجتها؟ |
| الصحة التشغيلية | هل تستطيع عملية العامل قبول العمل وإكماله؟ |
| الإيقاف | ماذا يحدث لمهمة جرى تولّيها عندما تتوقف عملية العامل؟ |
| السعة | أي حد يُبلغ أولاً: عمليات العامل أم قاعدة البيانات أم التخزين أم خدمة أخرى؟ |
أبقِ الأسرار خارج الصورة. وفّرها عبر نظام الأسرار المعتمد. سجّل تغييرات الإعدادات التي تتطلب إصداراً جديداً أو إعادة تشغيل عملية.
صمّم إعادة المحاولة قبل إضافة عمليات عامل
افترض أن عملية العامل تحفظ PDF ثم تتوقف قبل تأكيد المهمة. يعيد الطابور تسليم المهمة. يجب ألا تؤدي المحاولة الثانية إلى تحصيل دفعة ثانية من العميل أو إرسال رسائل إكمال متعارضة.
استخدم عملية تحافظ على أثرها المقصود عند التكرار، حيث يناسب ذلك. يجب أن يحافظ تكرار الطلب المنطقي نفسه على الأثر المقصود. حدّد هوية طلب ثابتة، وسجّل النتيجة بصورة دائمة، وافحص ما يحدث عند كل نقطة إخفاق. تصف AWS هذه التقنية في دليل إعادة المحاولة الآمنة.
تحتاج إعادة المحاولة أيضاً إلى حدود. استخدم مهلة وحداً لعدد المحاولات وتأخيراً يتجنّب تكرار الطلبات بالتزامن. احتفظ بالعمل الفاشل لفحصه بدلاً من إعادة محاولته إلى الأبد.
اجعل الحالة المطلوبة قابلة للمراجعة
تحدّد الإعدادات التصريحية النشر المقصود. ويعمل متحكم للحفاظ على تلك الحالة. مثلاً، يدير Kubernetes Deployment نسخ التطبيق وتحديثاته المضبوطة. ويجب أن يعالج التطبيق الاستبدال بصورة صحيحة رغم ذلك.
احتفظ بإصدارات لإعدادات البنية التحتية والتطبيق. راجع التغييرات عبر عملية التسليم المعتادة. راقب إكمال المهام الفعلي ومدة انتظار المهام في الطابور والإخفاقات وحدود التبعيات. قد تبقى عملية قيد التشغيل دون القدرة على إنتاج تقرير.
اختر منصة يستطيع الفريق تشغيلها
لا تفرض الممارسات السحابية الأصيلة تحويل كل تطبيق إلى خدمات مصغرة. فقد يلبي تطبيق مقسّم إلى وحدات على بيئة تشغيل مُدارة متطلباته. تزيد الخدمات الإضافية الواجهات وقرارات النشر والعمل التشغيلي.
قدّم لوكيل التطوير عقد المنصة الفعلي: بيئة التشغيل المدعومة وطريقة الهوية وخدمات البيانات وقواعد النشر والأدلة المطلوبة. اختبر سلوك الانقطاع والاستبدال إلى جانب الطلبات الناجحة. تابع إلى التوافر وحدود الإخفاق.
نفّذ التمرين
تخزّن خدمة تقارير خيالية المهام والملفات المكتملة على قرص حاويتها. ارسم التدفق عبر الطلب والمهمة والملف والتنزيل. علّم الحالة التي يجب حفظها بصورة دائمة. حدّد ما يحدث إذا توقفت عملية العامل بعد كتابة ملف وقبل تأكيد المهمة.
تنزيل ورقة العمل (Markdown)يؤدي إلغاء هذا الاختيار إلى حذف كل التقدم المحفوظ في هذا المتصفح.
يبقى تقدمك في هذا المتصفح. دون حساب أو تتبّع.
المصادر وقراءات إضافية
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗