Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

8 تغريدة 1 قراءة Jan 20, 2023
استكمالاً للسلسلة السابقة عن ال12Factor app , الخاصية السابعة هي الPort Binding و هي انه مثلاً في حالة الWeb apps يكون الWeb Server مُضَمن بداخل الapplication بدل ان يكون خارجي كما هو الحال مع IIS للدوت نت او Tomcat لجافا او HTTPD لPHP. اي باختصار يكون نظامك Self Contained.
الخاصية الثامنة هي الConcurrency و اختصارها أن يكون نظامك له Process رئيسية و ليست فرعية في نظام التشغيل كما يحصل في PHP حيث تظهر الProcess باسم Apache او تظهر كـ W3wp.exe في الnet. التقليدية. بهذا تسهل عملية الScalling out.
الخاصية التاسعة هي الDisposability ان نظامك يبدأ Starting بسرعة و ايضاً ينتهي بسرعة متى ما اتى له الأمر بالبدء او الإنتهاء.
الخاصية العاشرة هي الDev/prod parity و تعني ان نجعل قدر الإمكان بيئة الProduction و الDevelopment متطابقة حتى في مايخص الbacking service بحيث نمكن ادوات الContinues delivery من العمل بدون اي مشاكل و يمكن للمطور أن يأخذ دور الOperator ايضاً.
الخاصية الحادية عشر هي الLog و هي أن اي معلومات يصدرها نظامك سواء بخصوص الأخطاء او العمليات يكون على هيئة Event stream بحيث يمكن لبرامج التحليل رصدها و تحليلها لا ان تخزنها في ملفات او قاعدة بيانات خاصه و ايضاً هنا لن تحتاج ان تغير في نظامك لاحقاً بشأنها.
الخاصية الثانية عشر و الأخيرة هي الAdmin Process و هي أن تكون هناك طريقة لادارة النظام من الخارج و هنا باختصار يعني وجود REPL للغة التي تتعامل معها و أتمتة اي عملية يمكن اتمتتها بواسطة ادوات الCI/DI ان امكن.
في الختام يلاحظ ان الهدف من هذه الخواص ال12 هي تخفيف المعاناة عند اطلاق الأنظمة و تقليل الوقت اللازم للاطلاق و تمكين التوسع Scaling وفي نفس الوقت تخفيف التكاليف المالية كما في حال الDisposablilty فبقاء الProcess لوقت طويل بعد الانتهاء منها يعني استمرار التكاليف بلا مردود.
يمكن ان تجد مقالات و دروس عن تطبيق تلك الخواص ال12 بنفس التقنيات التي تستخدمها و تذكر أن تلك الخواص تجعل نظامك Cloud Friendly و ليس Cloud Native . سنتعرف على الCloud Native بتفصيل في سلسلة اخرى و يمكن فيها اخذ تجربة Netflix مع امازون في تحولها للCloud Native.
و دمتم.

جاري تحميل الاقتراحات...