
تُعدّ منهجية تطبيقات العوامل الاثني عشر (Twelve-Factor App) مجموعة ممارسات هندسية معتمدة على نطاق واسع لتصميم تطبيقات البرمجيات كخدمة (SaaS) بحيث تعمل بموثوقية في البيئات السحابية الحديثة. وقد صيغت هذه المنهجية أولاً على يد مهندسين في شركة Heroku، وما تزال مرجعاً موجزاً للفرق التي تحتاج إلى توسيع أنظمتها، وإصدار التحديثات بصورة متكررة، وصيانة قواعد شيفرة طويلة الأمد عبر بيئات متعددة.
وسواء نُشرت التطبيقات على الحاويات أو الأجهزة الافتراضية أو منصة مُدارة، فإن هذه العوامل الاثني عشر تحدّ من العيوب المرتبطة باختلاف البيئات — وهو ما يُوصف غالباً بعبارة «يعمل على جهازي فقط» — وتجعل سلوك التشغيل أكثر قابلية للتنبؤ.
توجد قاعدة شيفرة واحدة خاضعة لنظام إدارة الإصدارات، مع عمليات نشر متعددة. وينبغي أن يرتبط كل تطبيق بمستودع واحد (أو بوحدة واضحة الحدود داخل مستودع أحادي). ويجب ألا تنحرف بيئة الإنتاج إلى شجرة مصادر منفصلة وغير مُدارة تُسمّى «النسخة الحية».
يجب التصريح عن الاعتماديات صراحةً وعزلها (على سبيل المثال عبر package.json وملفات القفل أو البيئات الافتراضية). ولا يجوز أن يعتمد التطبيق على حزم مثبتة على مستوى النظام دون إعلانها.
تُحفظ الإعدادات في بيئة التشغيل — سلاسل الاتصال، وبيانات اعتماد واجهات البرمجة، وأعلام الميزات — وليس داخل الشيفرة المصدرية المودَعة في المستودع. ويجب أن يعمل ناتج البناء نفسه في بيئتي الاختبار والإنتاج، مع التمييز بينهما عبر متغيرات البيئة فحسب.
تُعامل قواعد البيانات وطوابير الرسائل وذاكرة التخزين المؤقت وخدمات البريد بوصفها موارد مرفقة. ويمكن استبدال نسخة Redis محلية بخدمة مُدارة عبر تحديث عنوان المورد (URL)، دون إعادة كتابة منطق التطبيق.
يجب الفصل الصارم بين مرحلة البناء (الترجمة والتجميع)، ومرحلة الإصدار (دمج ناتج البناء مع الإعدادات)، ومرحلة التشغيل (تنفيذ العملية). ولا يجوز تعديل شيفرة التطبيق مباشرة على خادم إنتاج يعمل.
يُنفَّذ التطبيق على هيئة عملية واحدة أو أكثر عديمة الحالة. وتُخزَّن بيانات الجلسة وحالة الملفات في خدمات مساندة، بحيث تستطيع أي نسخة سليمة معالجة الطلب التالي.
تُعرَض الخدمات عبر الربط بمنفذ شبكي. تستمع العملية إلى ذلك المنفذ، ويتولى وكيل عكسي أو موجّه المنصة توجيه الحركة إليه. وبذلك يظلّ التنفيذ المحلي والبعيد متسقاً دون حلول مؤقتة خاصة بالحاويات.
تُزاد السعة عبر نموذج العمليات: المزيد من عمليات الويب وعمال المهام الخلفية. ويُفضَّل التوسع الأفقي على تركيز أعباء مفرطة داخل عملية واحدة ضخمة الحجم.
تُعزَّز المتانة عبر بدء تشغيل سريع وإيقاف أنيق. وينبغي أن تتعامل العمليات مع إشارة SIGTERM، وأن تُكمل الأعمال الجارية حيثما أمكن، وأن يبقى استبدالها منخفض التكلفة.
ينبغي أن تظلّ بيئات التطوير والاختبار والإنتاج متقاربة قدر المستطاع: أنواع متماثلة من الخدمات المساندة، وإصدارات متوافقة، وفواصل زمنية قصيرة بين عمليات النشر.
تُعامل السجلات بوصفها تدفقاً للأحداث يُكتب إلى المخرجات والأخطاء القياسية (stdout / stderr). أمّا التجميع والبحث والتنبيه فهي مسؤوليات المنصة، وليست إدارة ملفات سجلات مضمَّنة داخل التطبيق.
تُنفَّذ المهام الإدارية — مثل ترحيل قواعد البيانات والطرفية والسكربتات لمرة واحدة — بوصفها عمليات مستقلة في البيئة ذاتها، باستخدام قاعدة الشيفرة والإعدادات نفسها المعتمدة للتطبيق طويل الأمد.
تتوافق تطبيقات العوامل الاثني عشر بصورة طبيعية مع عمليات النشر على الخوادم الافتراضية الخاصة (VPS) والحاويات ومنصات البرمجيات كخدمة (PaaS). وبفضل ذلك تستطيع المؤسسات توسيع النسخ المتماثلة، وطرح الإصدارات بأمان، والإبقاء على بيئة الاختبار متوافقة إلى حدّ بعيد مع الإنتاج. وفي سهوبكوم، تستند توصياتنا لعملائنا بشأن هيكلة أحمال العمل القابلة للنشر على البنية التحتية السحابية إلى هذه المبادئ.
الخطوة التالية الموصى بها: حدّد العامل الذي يمثّل أعلى مخاطر تشغيلية لفريقكم — وغالباً ما يكون عاملا الإعدادات أو العمليات — وعالجوه أولاً. إنّ التحسينات المتدرّجة والمنضبطة تتراكم لتشكّل منصة يمكن تشغيلها بثقة.
كن أول من يقيّم هذا المقال

تعرّف على الحاويات كخدمة (CaaS)، وكيف تساعد الشركات على تشغيل التطبيقات ونشرها وإدارتها وتوسيعها بسهولة داخل بيئات الحوسبة السحابية.

تعرّف على الحاويات كخدمة (CaaS)، وكيف تنشر تطبيقك وتوسّعه في السحابة دون إدارة الخوادم، ومتى تختارها بدلًا من الأجهزة الافتراضية أو الدوال بلا خادم.

تعرّف على Containers as a Service (CaaS)، وكيف تعمل الحاويات وإدارة التطبيقات والتوسع التلقائي، وما الفرق بين CaaS وIaaS وPaaS وFaaS.