في السلسلة السابقة كان الحديث عن الDevOps و سبب حاجة الشركات له و الذي يمكن اختصاره بأنه تسريع عملية الاستجابة لحاجة العملاء من تطوير و تعديل و إطلاق ( بجودة عالية ) بهدف تحسين المنتج و إرضاء العميل.
هذه السلسلة عن ما نحتاجه كـIT من أدوات للDevOps
هذه السلسلة عن ما نحتاجه كـIT من أدوات للDevOps
أي عملية تطوير تحتاج في البداية إلى تخطيط; ما الذي سوف ننتجه و متى؟ مع ترتيب الأولويات و المراحل ثم تعاون Collaboration بين اعضاء الفريق لتحديد مهامهم. هذه المرحلة ليست غريبة علينا , فهذه هي الAgile المعروفة. هنا نحتاج تطبيقات مثل Jira او Asana او Trello و غيرها.
لنتفق على شيء و هو أن الهدف من الDevOps من ناحية المبرمج هو التسريع بالأتمتة. عندما تكون الأشياء اوتوماتيكية نكسب السرعة مع الجودة و ذلك بسبب تقليل العامل البشري في الموضوع. من هنا يمكن استعراض الأدوات و ربطها بالهدف الأساسي.
كمبرمجين نحتاج اولاً الى مكان معروف لحفظ و مشاركة الأكواد من خلاله, و تتبع تاريخ التغييرات بحيث يمكننا ان نصل إليها في اسرع وقت و في نفس الوقت يمكن العودة إلى كود اقدم في حالة أن الآخير لم يعمل بالشكل المطلوب. نحتاج ادوات مثل Git او Azure Repo او Bitbucket.
مازلنا في الكود, طريقة كتابة الكود مهمة. ما الفائدة اذا وجدنا الكود الذي يجب تطويره ثم لم نستطع التعديل عليه او كان التعديل سيأخذ منا وقتاً اكثر من اللازم ؟ لهذا نحتاج أن يكون كودنا في الأصل Clean Code و نحتاج إلى وثيقة Code Standard و أن نستخدم مباديء مثل SOLID و KISS و DRY ....
أيضاً من الصعب أن نتنبأ أن التغيير الذي قمنا بعمله صحيح و في نفس الوقت لم يؤثر على مكان آخر في البرنامج. هنا تظهر ضرورية الUnit Testing و أن يكون الإختبار ناجح قبل اعتماد التعديل و هنا ندخل في عملية continuous Integration.
اعتماد التعديل Commit يعني انه جاهز لمرحلة الBuilding وعملية الBuilding تحتاج في اغلب الأحيان إلى بعض الأعمال مثل نسخ ملفات او تغيير في ملفات Configuration و تحتاج ربما لإضافة بعض الParameters الخاصة للCompiler.
هذه الاشياء يمكن ايضاً اتمتتها و بالنسبة للأدوات فقد تختلف من لغة إلى اخرى مثل Ant و Gradle لجافا و Gulp و Grunt لجافاسكريبت او BitBake لبايثون و Cake لسي شارب.
بعد عملية الBuild نحتاج لTest يختلف عن الTest Unit فهنا نختبر البرنامج ككل من قبل فريق الQA و لذا نحتاج بيئة اختبارية فعالة لأنه قد تظهر اخطاء برمجية يكون رد المبرمج أنها تعمل بشكل صحيح في جهازه و هنا تظهر الحاجة إلى شيء مثل Docker
تقنية Docker في الTesting مفيدة في التنقل بين الخوادم فمثلاً الIntegration testing يحتاج build server و الFunctional testing و الRegression testing يحتاج الى Test server و الDeployment testing يحتاج الى Staging server.
أتمتة عمليات الTesting نحتاج إلى استراتيجية و كذلك إلى ادوات مثل Selenium او ادوات الRPA لجعل عملية الإختبار آلية و سريعة. مما تجدر الإشارة له ان اداة مثل Azure DevOps او Jinkins يمكنها التصنت على الGit و الإستجابة مباشرة لأي عملية Commit للكود بدون تدخل بشري لتنطلق عملية أخرى.
بعد عملية الإطلاق او الDeployment نحتاج الى آلية مراقبة نعرف بها سلوك المستخدم و البرنامج و تعطينا مؤشرات يمكن من خلالها تطوير منتجنا.
الDevOps دائرة لا تنتهي نقوم فيها بتطوير انفسنا مع المنتج بحيث نكون اكثر انتاجية و احترافية و ديناميكية في تغيير اساليبنا للوصول إلى افضل ممارسة بالنسبة للفريق و افضل منتج بالنسبة للعميل.
( انتهى )
( انتهى )
جاري تحميل الاقتراحات...