Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

10 تغريدة 38 قراءة Dec 17, 2020
مجرد استضافة نظامك في Azure او AWS او GCP او غيرهم لا يعني انه Cloud. خصوصاً ان كنت تستخدم Virtual Machines كالتي تقدمها شركات الاستضافة التقليدية. بل تحتاج أن يكون نظامك Cloud Natives و هو مرتبة اعلى حتى من الCloud Friendly الذي يضمنه تطبيقك لخواص ال
12-Factor app
(سلسلة)
الـ
12-Factor App
هو نظام توفرت به مجموعة خصائص جمعها مهندسون من شركة @heroku بحيث انها إذا حققتها عند تطوير نظامك فإنه يكون حسب تقييمهم Cloud Native لكن هذا غير صحيح فالCloud Native مرحلة أرقى و اعلى من مجرد ال12Factor لكن يمكن اعتباره Heroku Cloud Native فقط. هذه الخواص هي:
الخاصية الأولى هي الـ Codebase
و فكرته انه يجب أن يكون هناك Codebase واحد فقط لكل نظام. و موجود في احد انظمة الSource Control مثل Git , GitHub , TFS و غيرها و لا أن يكون نفس ال Repo لأكثر من نظام او أن يكون أكثر من Repo لنظام واحد.
الخاصية الثانية بشأن الDependencies و هي أن نظامك يجب أن يأتي و معه كل احتياجاته و أن لا يعتمد على أي فرضية بوجود مكتبات او configuration موجودة مسبقاً. هذه تم حلها بGradle و Maven لمشاريع الجافا و NuGet للNET.
الخاصية الثالثة عن الConfig و بها يجب الفصل بين الCode و الConfiguration بمعنى أن لا تخزن اشياء مثل الروابط URLs او الConnection Strings او الUsernames او الPassword كجزء من الCodebase و انما في مكان مستقل يحتفظ بالقيم الخاصة بكل بيئه فللTesting قيمها و للProduction ايضاً قيمه.
الخاصية الرابعة هي الBacking Service معناها انه لا تجعل نظامك يتعامل مع الImplementation و لكن مع الInterface هذي شبيهه بمبدأ DI يعني لا تتعامل مباشرة مع الFileSystem او الMail او الDatabase وانما من خلال Interface كالAPI. مثل Amazon S3 للملفات.
الخاصية الخامسه هي Build, release, run و خلاصتها انه هذي العملية يجب ان تكون automated بدون تدخل بشري و لكي يحصل هذا تحتاج ان تكون البيئات متطابقة ولا تسمع من المبرمج اعذار من نوع "لكن شغّال على جهازي!" هنا الContainers مفيده بالاضافة إلى ادوات الCI/CD مثل Azure Devops و Jenkins.
الخاصية السادسة هي الProcesses و المعنى ان الProcesses تكون stateless بمعنى انه ما تحتفظ بأي data و لا تستهلك memory. و تتخلص من اي بيانات فيها بمجرد ما اعادت الresponse للعميل. هذا يعني ما يكون فيه آلية Caching في النظام و انما يكون الCaching في backing service خارجية مثل Redis.
باقي 6 خواص اخرى .. نتركها لسلسلة قادمة.
لكن كما ذكرت في البداية ال12Factor app لا يعني Cloud Native بل يسمى Cloud Friendly.
هذا رابط الخواص لمن لا يسعه الانتظار
12factor.net
Cloud Native*

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