إكمالاً للسلسلة السابقة بخصوص المباديء ال12 لل Cloud Native App. و نبدأ بالمبدأ الخامس الذي ينص على ان يكون الBuild و الRelease و الRun في اماكن منفصلة و السبب انه عند عمل autoscale آلياً بواسطة Kubernetes مثلا فإنه عند تعطل احد النسخ فإن النظام ينشأ نسخة جديد من الRelease.
الفرق بين الRelease و الBuild أن الBuild هي مرحلة الCompiling حيث يجمع الdependencies لكن بدون الConfiguration الذي تحدثنا عنه سابقاً و الذي يُضاف الى الBuild في مرحلة الrelease. فهنا لا نحتاج ان نراقب العملية و يمكن للنظام ان ينشأ نسخه بدون تدخل منا .
المبدا السادس هو الProcesses و فكرته تدور حول ان يكون البرنامج Stateless أي لايحفظ اي بيانات مشتركة او يقوم بعمل Caching لها بل يجب ان تكون جميع البيانات محفوظة في قاعدة بيانات قد تكون Redis او شبيهه لها. بحيث لو عمل النظام Restart او انشأ Instance جديد فلن نفقد منها شيئاً.
المبدأ السابع هو الPort binding و هو ان البرنامج يكشف نفسه للخدمات الاخرى بواسطة Ports فقط. للتوضيح لو لاحظتم ان اغلب اللغات الان اصبح الWebserver من اصلها ولا تحتاج الى Apache أو IIS حتى PHP لديها
و هذا ما يسمى بال Self-Contained App.
و هذا ما يسمى بال Self-Contained App.
المبدأ الثامن Concurrency و يعني ان تكون الProcess التي ينشأها البرنامج اصيلة بمعنى ان من يديرها هو الOperating system مباشرة و ليس Sub من Process اخرى كما في البرامج التقليدية مثل Apache كما في PHP او JVM كما في جافا. و السبب ان ذلك يسهل عملية نسخها مباشرة.
المبدأ التاسع Disposablility و هذا ايضاً يتعلق بالProcess و يعني ان تكون الProcess سريعة في التشغيل و الإغلاق ولا تتأخر متى ما اتاها امر التشغيل او الإغلاق من الOS. هناك طرق كثيرة لتحقيق ذلك حسب اللغات.
المبدأ العاشر اسموه Dev/Prod parity و هذا يتعلق بالcontinuous deployment أي ان يكون الوقت بين الكود و الDeployment قليلاً قدر الامكان مثلاً بجعل المبرمج قريب من فريق الDeployment و ان تكون بيئة الDev مع الProd متماثلتان بحيث لا يتأخر.
المبدأ الحادي عشر الLog و هو ان يكون هناك Log مستمر على هيئة Stream أثناء تشغيل البرنامج بحيث يمكن الرجوع له و تحليله و عرضه في Dashboard لمتابعته و معرفة اي مشاكل حدثت او قد تحدث مستقبلاً.
المبدأ الثاني عشر و الاخير هو الAdmin Processes باختصار هو الREPL لمن يعرفه او الShell او الSSH , الاوامر التي يدير بها المبرمج برنامجه مباشرة من خلالها.
هذه مباديء عامة , إن تعاملت مع اي مقدم خدمة Cloud ستجد انها موجودة بشكل او اخر
هذه مباديء عامة , إن تعاملت مع اي مقدم خدمة Cloud ستجد انها موجودة بشكل او اخر
معرفة هذه الاشياء هي الأساس قبل ان تنتقل مباشرة إلى مزود خدمة مثل AWS أو Azure او GCP لانك ستستوعب هذه الاشياء بسهولة بمطابقتها بتلك المباديء و سيختلف معك فقط طريقة الImplementation التي قامت بها الشركات لتلك المباديء.
اغلب ماذكرت توفره تقنيات الContainer و الMicroservices و الEvent Streaming بالإضافة الى جزئيات الDevOp الموجودة لدى مزودي تلك الخدمات او الThird-party مثل Git . وصلنا إلى النهاية و اراكم بخير.
جاري تحميل الاقتراحات...