Never stop talking " STOP the Gaza Genocide "

المسار التعليمي للـ DevOps

  • admin
  • 15-09-2022
  • DevOps
  • 5962

استخدمنا فى تحديد نقاط المسار المرجع العالمى لتعلم DevOps المسار التعليمي المقدم من roadmap.sh باﻷضافة الى بعض التعديلات تمت من خلال مهندسين يعملون بالمجال.
المسار بيبدأ من الصفر حتى لو انت خريج كلية ليس لها علاقه بالكمبيوتر اما لو انت خريج حاسبات هتلاقي مواضيع في الأساسيات تقدر تعديها ولكن قبل كل ده لازم يكون عندك الحافز والنية الحقيقية انك توصل لسوق العمل والمسار ده مخصص انك تجهز كمهندس DevOps

ايه هو DevOps؟
تخيل انك داخل شركه برمجه فهنا في فريقين الأول بيكتب الكود البرمجي الذي ينفذ المشروع ودول اسمهم Developers والثاني مختص بالسيرفر وهو الجهاز الذي يتم عليه تشغيل المشروع سواء كان السيرفر ده على Cloud أو On-Premise ودول اسمهم Operation، فيه مشاكل كثيره بتظهر اثناء تعاون الفريقين مع بعض لنقل المشروع البرمجي وتشغيله على السيرفر نتيجة عدم دراية كبيرة لكل فريق تجاه طبيعة عمل الفريق الاخر وده كان سبب رئيسي في بطء العملية دي وهنا فكروا في وسيط يكون بيفهم في شغل الاثنين ويكون مهمته الرئيسيه نشر التطبيقات البرمجية على السيرفر ايوه هو DevOps

 

ابدا ازاي؟

1- Linux

بما ان هدفنا نشر التطبيقات البرمجية على السيرفر وأكثر أنظمة التشغيل استخداما مع السيرفرات هو اللينكس فهنبدأ نتعلم استخدام اللينكس من خلال تنصيب اي من توزيعاته وليكن Ubuntu والهدف من الخطوة دي هو استخدامه بطريقه بسيطه من غير الخوض فى التفاصيل ويكون نظام التشغيل الذي نستخدمه خلال فترة الدراسة وده كافى انك تتعلمه بإحتراف مع الوقت ويمكن يكون نظام تشغيلك المفضل ﻷنه أفضل بكتير

كورس اساسيات تعلم اللينكس Linux

 

2- أساسيات البرمجة

هنا الهدف انك تعرف تكتب برمجه باي لغه وتقدر تنفذ مشروع بسيط وده كافي انك تفهم الرحلة التي يمر بها أي مشروع برمجي مثل المبرمج (Developers) وبكده تكون قدرت تفهم طبيعة شغلهم وهنا هنفذ ده من خلال تعلم مفاهيم البرمجة عامة بلغة Python

كورس تعلم اساسيات البرمجة CS50

 

3- اساسيات الشبكات

من خلال الكورس السابق قدرنا نفهم طبيعة عمل المبرمجين وهنا جاء الدور على فريق Operation وغالبا بيكون فريق IT وهنا هنتعلم اساسيات الشبكات مثل Ports و Protocols و DNS وغيرهم وأفضل منهج تتعلم منه الاساسيات هو المنهج الخاص بشهادة N+ الخاص بشركة كومبتيا ليس كل المنهج ولكن ما نحتاجه فقط أثناء مسيرة عملنا كمهندس DevOps

كورس تعلم اساسيات الشبكات

 

المرحلة القادمة مرحلة IaaS
وفيها هنتعلم ازاي نهيء المشروع للنشر وتجهيز السيرفر بحيث يناسب متطلبات بيئة عمل المشروع

 

4- Git

هي تقنية يستخدمها المبرمجون لتتبع تقدم المشروع وكل العمليات التي تتم عليه من حذف وإضافة وتعديل ولكن ما يخص DevOps هو كيفية إنشاء نُسخ من هذه التعديلات ونقصد بكلمة نُسخ هو اصدارات او Releases فمثلا الإصدار الذي يعمل عليه المبرمجون يختلف عن الاصدار الذي يتم اختباره وبالطبع يختلف عن الاصدار الاخير الموجود حاليا على السيرفر

كورس تعلم Git

 

5- CLI

التعامل مع نظام التشغيل الذى يحتوى بيئة عمل المشروع هو أمر حتمي لا مفر منه فهناك برامج يتم تنصيبها وملفات يتم نقلها ومهام يتم جدولتها والكثير، ولذلك نحن بحاجة الى التحدث مع نظام التشغيل بدون استخدام GUI واستبدالها باﻷوامر من خلال CLI أو Command Line Interface وهو برنامج يأتى مع ضمن نظام التشغيل ويفهم لغة تختلف بسيطا من نظام تشغيل ﻷخر ولكننا هنا نستهدف النظام الاكثر استخداما مع السيرفر وهو linux ولغته الخاصة هى Bash Scripting

كورس تعلم Bash Scripting

 

6- Containerization

هي عملية تحويل مراحل ضبط بيئة عمل المشروع من نظام تشغيل وبرامج ومكتبات وكل ما يلزم المشروع لكي يعمل بشكل صحيح الى ملف واحد يمكنك نقله بسهولة جدا من سيرفر لاخر و من كمبيوتر لآخر وبمجرد تنفيذ أمر على هذا الملف يقوم بإنشاء سيرفر داخلي يحتوي كل المتطلبات التي سبق اعدادها
مثال: تطبيق ويب بلغة PHP
لكي يعمل هذا المشروع بشكل صحيح فانه بحاجة الى تنصيب نظام تشغيل مثلا لينكس وتنصيب HTTP Server مثلا Nginx وتنصيب لغة PHP مثل PHP 7.4 وتنصيب قاعدة بيانات مثل MySQL و تنصيب مكتبة Bootstrap 5 مثلا
الحل المعتاد
تنصيب كل هذه المتطلبات بشكل يدوي
الجديد
هو تحديد كل هذه المتطلبات في ملف dockerFile ثم تشغيل امر عليه فيقوم بإنشاء كل هذه المتطلبات اوتوماتيكيا وتكوين سيرفر جاهز لاستضافة المشروع وأكثر هذه البرامج استخداما هو Docker

كورس تعلم Docker

 

7- Jenkins

من خلال Docker تعلمنا كيفية تجهيز بيئة عمل المشروع (السيرفر) وهنا سنتعلم كيفية نقل المشروع من مرحلة التطوير (Dev) الى مرحلة التشغيل على السيرفر (Prod) والطبيعي بعد إتمام فريق المبرمجين أي تعديلات على المشروع البرمجي سواء كان الاصدار الاول او اصلاح الاخطاء، بعد الانتهاء يتم نقل نسخة من اخر اصدار وصلوا له الى سيرفر الاختبار وعمل اختبار كامل له وفي حال نجاح عملية الاختبار نقوم بنقل المشروع الى السيرفر النهائي (Prod) حتى يتمكن المستخدمين من الوصول له ولو تعلمون أنه أمر عظيم جدا ويتطلب خطوات كثيرة وبذلك وقت كبير فمن المفترض أن هناك مكتبات تم استخدامها وبرامج تم اضافتها الى بيئة العمل تحتاج الى تنصيب وكذلك خطوات نقل المشروع وعمل اختبار شامل له
الجديد
هو ميكنة كل هذه الخطوات بشكل اوتوماتيكي وهذه العملية تسمى CI/CD وهي اختصار Continuous Implementation/Continuous Deployment واشهر التقنيات التي يستخدمها مهندسوا DevOps هي تقنية Jenkins

كورس تعلم Jenkins

 

8- Kubernetes

كثيرا من المشاريع البرمجية خصوصا كبيرة الحجم لا يتم تجهيز بيئة عملها من خلال Container واحد فقط ولكن يتم توزيع اجزائها الى Containers متعددة فمثلا تطبيق ويب بلغة PHP يتم تنصيب قاعدة البيانات على Container و لغة PHP على Container و HTTP Server على Container وهنا كل Container منفصل لا يستطيع تنفيذ طلب المستخدم أو تشغيل المشروع لوحده وانما لابد ان يتواصلوا جميعا معا كي يتم تشغيل المشروع لذا نحن بحاجة لتقنية تعمل على ربط كل هذه Containers مع بعضها البعض وتنسيق العمل بينهم، نعم هو Kubernetes الذي يعمل كـ Container Orchestrator

كورس تعلم Kubernetes

 

9- Ansible

ذكرنا سابقا ان بعض المشاريع البرمجية يتم تشغيلها على أكثر من Container وهنا يتطلب الأمر إعداد بيئة العمل أكثر من مرة وبشكل مختلف فهناك بيئه عمل تخص المبرمجين (Developers) وأخرى لفريق الاختبار (Tester) وأخرى لتشغيل المشروع بالشكل النهائي (Production) لذا لابد من تجهيز هذه السيرفرات بشكل صحيح وسريع بدلا من الأسلوب اليدوي الذي يستغرق كثيرا من الوقت وأكثر عرضة للخطأ وأكثر هذه الأدوات استخداما هي تقنية Ansible وتسمى هذه العملية بـ Configuration Management

دورة تعلم Ansible

 

10- Cloud

مع انتشار مفهوم Cloud وإمكانية توفير InfraStructure بشكل جاهز واقل تكلفة فإن مهام الـ DevOPs تتعين عليهم فهم طبيعة عملها، نعم قد أصبح Cloud واسع المجال ويشمل عدة أمور ولكن ليس على DevOps فهم كل خدمات Cloud وإنما فقط ما يخص IaaS او Infrastructure as a Service وأكثر برامج الـ Cloud استخداما هى

  1. تقنية امازون Amazon AWS
  2. تقنية مايكروسوفت Microsoft Azure
  3. تقنية جوجل Google Cloud