
إنشاء أول سلسلة DevOps في خمس خطوات للمبتدئين.
أصبحت DevOps حلا سحريا لعمليات التنمية بطيئة جدا ، مجزأة وغيرها من المشاكل. لكنك تحتاج إلى الحد الأدنى من المعرفة في DevOps. ستغطي مفاهيم مثل سلسلة DevOps وكيفية إنشائها في خمس خطوات. هذا ليس دليلاً كاملاً ، ولكن فقط "سمكة" يمكن توسيعها. لنبدأ بالقصة.
معرفتي مع DevOps
اعتدت العمل مع السحب في Citi Group وقمت بتطوير تطبيق IaaS على الويب لإدارة البنية التحتية السحابية لـ Citi ، لكنني كنت دائمًا مهتمًا بكيفية تحسين سلسلة التطوير وتحسين الثقافة بين المطورين. جريج لافندر ، المدير الفني للعمارة السحابية والبنية التحتية ، قدم المشورة لي بشأن كتاب مشروع فينيكس . إنها تشرح مبادئ DevOps تمامًا ، بينما تقرأ مثل الرواية.
يوضح الجدول الموجود في الخلف عدد المرات التي تقوم فيها الشركات بإصدار إصدارات جديدة:

كيف تمكنت Amazon و Google و Netflix من طرح الكثير؟ الأمر بسيط: لقد توصلوا إلى كيفية إنشاء سلسلة DevOps مثالية تقريبًا.
في سيتي ، كان كل شيء خاطئًا تمامًا حتى تحولنا إلى DevOps. ثم كان لدى فريقي بيئات مختلفة ، لكننا قمنا بالتوصيل إلى خادم التطوير يدويًا. يتمتع كل المطورين بوحدة خدمة تطوير واحدة فقط بناءا على IBM WebSphere Application Server Community Edition. مع محاولة متزامنة للتوصيل ، "تعطل" الخادم ، وفي كل مرة كان علينا أن نتفق "مؤلم" مع بعضنا البعض. كما كان لدينا تغطية غير كافية للرمز مع الاختبارات ، وعملية التسليم اليدوي الشاقة ، ولا توجد وسيلة لتتبع تسليم الرمز وفقًا لبعض المهام أو متطلبات العميل.
كان من الواضح أن هناك حاجة ملحة للقيام بشيء ما ، ووجدت زميلًا له نفس التفكير. قررنا إنشاء أول سلسلة DevOps معًا - قام بإعداد الجهاز الظاهري وخادم تطبيق Tomcat ، وتوليت Jenkins ، والتكامل مع Atlassian Jira و BitBucket ، وأيضًا تغطية الرمز مع الاختبارات. كان المشروع ناجحًا: لقد أتمنا تمامًا سلسلة التطوير ، وحققنا حوالي 100٪ من وقت تشغيل خادم التطوير ، وتمكنا من تتبع وتحسين تغطية الشفرة مع الاختبارات ، ويمكن ربط فرع Git بتسليم Jira ومهمته. وكانت جميع الأدوات التي بنيناها سلسلة DevOps تقريبًا مفتوحة المصدر.
في الواقع ، تم تبسيط السلسلة ، لأننا لم نستخدم حتى التكوينات المتقدمة باستخدام Jenkins أو Ansible. لكننا فعلنا ذلك. ربما هذا هو نتيجة لمبدأ باريتو (الملقب 80/20 القاعدة).
وصف موجز لسلاسل DevOps و CI / CD
DevOps له تعريفات مختلفة. تتضمن DevOps ، مثل Agile ، مجموعة متنوعة من التخصصات. لكن معظمهم سيتفقون مع التعريف التالي: DevOps هي طريقة ، أو دورة حياة ، لتطوير البرمجيات ، والمبدأ الرئيسي منها هو خلق ثقافة يكون فيها المطورون والموظفون الآخرون "على نفس طول الموجة" ، العمل اليدوي آليًا ، والجميع يفعلون ما في وسعهم زيادة عدد مرات التسليم وزيادة الإنتاجية وزيادة المرونة.
وعلى الرغم من أن الأدوات وحدها لا تكفي لإنشاء بيئة DevOps ، إلا أنه لا يمكنك الاستغناء عنها. الأهم من ذلك هو التكامل المستمر والتسليم المستمر (CI / CD). هناك مراحل مختلفة في السلسلة لكل بيئة (على سبيل المثال ، DEV (تطوير) ، INT (تكامل) ، TST (اختبار) ، QA (مراقبة الجودة) ، UAT (اختبار قبول المستخدمين) ، STG (إعداد) ، PROD (استخدام)) ، المهام اليدوية تلقائية ، يمكن للمطورين إنشاء رمز عالي الجودة ، وتقديمه ، ويمكن إعادة بنائه بسهولة.
يصف هذا المنشور كيفية إنشاء سلسلة DevOps في خمس خطوات ، كما هو موضح في الصورة أدناه ، باستخدام أدوات مفتوحة المصدر.

هيا بنا إلى العمل.
بادئ ذي بدء ، تحتاج إلى أداة CI / CD. Jenkins هي أداة CI / CD مفتوحة المصدر مكتوبة بلغة Java بموجب ترخيص MIT ، والتي بدأت في الترويج لحركة DevOps والتي أصبحت المعيار الفعلي لـ CI \ CD.
ما هو جنكينز؟ تخيل أن لديك لوحة تحكم سحرية لمجموعة واسعة من الخدمات والأدوات. أداة CI / CD نفسها ، مثل Jenkins ، عديمة الفائدة ، ولكن مع الأدوات والخدمات المختلفة تصبح كلي القدرة.
بالإضافة إلى جنكينز ، هناك العديد من الأدوات المفتوحة الأخرى ، اختر أيًا منها.

إليك ما تبدو عليه عملية DevOps باستخدام أداة CI / CD

لديك أداة CI / CD في مضيف محلي ، ولكن لا يوجد شيء كثير يمكنك فعله. دعنا ننتقل إلى الخطوة التالية.
الخطوة 2: التحكم في الإصدار
أفضل طريقة (وربما أسهلها) لاختبار سحر أداة CI / CD هي دمجها مع أداة إدارة التحكم في المصدر (SCM). لماذا تحتاج التحكم في الإصدار؟ لنفترض أنك تقدم طلبًا. يمكنك كتابتها بلغة Java أو Python أو C ++ أو Go أو Ruby أو JavaScript أو بأي لغة أخرى ، منها عربة وعربة صغيرة. ما تكتبه يسمى شفرة المصدر. في البداية ، خاصةً إذا كنت تعمل بمفردك ، يمكنك حفظ كل شيء في دليل محلي. ولكن عندما ينمو المشروع وينضم إليه المزيد من الأشخاص ، فأنت بحاجة إلى طريقة لمشاركة التغييرات في التعليمات البرمجية ، ولكن في الوقت نفسه تجنب التعارضات عند دمج التغييرات. وتحتاج أيضًا إلى استعادة الإصدارات السابقة بطريقة أو بأخرى دون استخدام النسخ الاحتياطية واستخدام طريقة لصق النسخ للملفات التي تحتوي على تعليمات برمجية.
وهنا دون SCM في أي مكان. تقوم SCM بتخزين الكود في المستودعات ، وإدارة إصداراتها وتنسيقها بين المطورين.
هناك الكثير من أدوات SCM ، ولكن Git أصبح بجدارة المعيار الفعلي. أنصحك باستخدامه ، ولكن هناك خيارات أخرى.

هذا هو ما يبدو عليه خط أنابيب DevOps بعد إضافة SCM.

يمكن لأداة CI / CD أتمتة عملية تحميل وتفريغ شفرة المصدر والعمل الجماعي. ليس سيئا؟ ولكن كيف الآن لجعل هذا التطبيق يعمل ، محبوب من قبل مليارات المستخدمين؟
الخطوة 3: بناء أداة التشغيل الآلي
كل شيء يسير كما ينبغي. يمكنك تحميل الرمز وتسجيل التغييرات في نظام التحكم في الإصدار ، وكذلك دعوة الأصدقاء للعمل معك. لكن ليس لديك تطبيق بعد. ليكون هذا تطبيق ويب ، يجب تجميعه ووضعه في حزمة للتسليم أو تشغيله كملف قابل للتنفيذ. (لا يلزم تجميع لغة برمجة مترجمة مثل JavaScript أو PHP.)
استخدم أداة أتمتة التجميع. أيًا كانت الأداة التي تختارها ، فسوف تجمع الشفرة بالتنسيق الصحيح وأتمتة التنظيف والتجميع والاختبار والتسليم. تختلف أدوات الإنشاء وفقًا للغة ، لكن عادةً ما يتم استخدام خيارات المصادر المفتوحة التالية.

! ممتاز سنقوم الآن بإدراج ملفات تكوين أداة التجميع الآلي في نظام التحكم في الإصدار بحيث تقوم أداة CI / CD بتجميعها.

يبدو أن كل شيء على ما يرام. ولكن أين يمكن أن تدور كل شيء الآن؟
الخطوة 4: خادم تطبيق الويب
لذلك ، لديك ملف معبأ يمكنك تنفيذه أو طرحه. لكي يكون التطبيق مفيدًا حقًا ، يجب أن يحتوي على نوع من الخدمة أو الواجهة ، ولكن عليك وضعه في مكان ما.
يمكن استضافة تطبيق الويب على خادم تطبيق الويب. يوفر خادم التطبيق بيئة يمكنك من خلالها تنفيذ منطق البرنامج من حزمة ، وتنفيذ تجسيد الواجهة وفتح خدمات الويب عبر مأخذ توصيل. تحتاج إلى خادم HTTP والعديد من البيئات الأخرى (الجهاز الظاهري ، على سبيل المثال) لتثبيت خادم التطبيق. الآن ، دعنا نتخيل أنك تتعامل مع كل هذا في العملية (على الرغم من أنني سأتحدث عن الحاويات أدناه).
هناك العديد من خوادم تطبيق الويب المفتوحة.

لقد حصلنا بالفعل على سلسلة عمل DevOps تقريبًا. عمل رائع!

من حيث المبدأ ، يمكنك التوقف هنا ، ثم يمكنك القيام بذلك بنفسك ، ولكن من المفيد التحدث عن جودة الشفرة.
الخطوة 5: اختبار التغطية
يستغرق الاختبار الكثير من الوقت والجهد ، ولكن من الأفضل العثور على الأخطاء على الفور وتحسين الشفرة لإرضاء المستخدمين النهائيين. لهذا الغرض ، هناك العديد من الأدوات المفتوحة التي لا تقوم فقط باختبار الكود ، ولكن أيضًا تقديم المشورة لكيفية تحسينه. يمكن لمعظم أدوات CI / CD الاتصال بهذه الأدوات وأتمتة العملية.
ينقسم الاختبار إلى قسمين: أطر اختبار للكتابة وأداء الاختبارات ، وأدوات تحتوي على نصائح لتحسين جودة الشفرة.
اختبار الأطر

أدوات نصائح الجودة

تتم كتابة معظم هذه الأدوات والأطر الخاصة بـ Java و Python و JavaScript ، لأن C ++ و C # مملوكة (على الرغم من أن GCC مفتوحة المصدر).
قمنا بتطبيق أدوات تغطية الاختبار ، والآن يجب أن يبدو خط أنابيب DevOps كما في الصورة في بداية الدليل.
خطوات إضافية
حاويات
كما قلت ، يمكن استضافة خادم التطبيق على جهاز ظاهري أو خادم ، ولكن الحاويات أكثر شيوعًا.
ما هي الحاويات ؟ باختصار ، في جهاز افتراضي ، يشغل نظام التشغيل في أغلب الأحيان مساحة أكبر من التطبيق ، وعادة ما يكون عدد قليل من المكتبات والتكوين كافيين للحاوية. في بعض الحالات ، لا يمكن الاستغناء عن الأجهزة الافتراضية ، لكن الحاوية تحتفظ بالتطبيق مع الخادم دون أي تكلفة إضافية.
للحاويات ، وعادة ما تأخذ دوكر وكوبرنيتيس ، على الرغم من أن هناك خيارات أخرى.

قراءة مقالات حول Docker و Kubernetes في Opensource.com:
أدوات أتمتة الوسيطة
تركز سلسلة DevOps على البناء المشترك وتقديم التطبيق ، ولكن يمكن إجراء أشياء أخرى مثيرة للاهتمام باستخدام أدوات DevOps. على سبيل المثال ، استخدم البنية التحتية كأدوات للكود (IaC) ، والتي تسمى أيضًا أدوات أتمتة البرامج الوسيطة. تساعد هذه الأدوات في أتمتة عمليات التثبيت والإدارة والمهام الأخرى الخاصة بالبرامج الوسيطة. على سبيل المثال ، يمكن لأداة التشغيل الآلي أن تأخذ التطبيقات (خادم تطبيق الويب ، وقاعدة البيانات ، وأدوات المراقبة) مع التكوينات الصحيحة ولفها إلى خادم التطبيق.
فيما يلي بعض الخيارات لأدوات أتمتة البرامج الوسيطة المفتوحة:

التفاصيل في المقالات على Opensource.com :
والآن ماذا؟
هذا هو مجرد غيض من فيض. سلسلة DevOps يمكن أن تفعل أكثر من ذلك بكثير. ابدأ باستخدام أداة CI / CD واكتشف ما يمكنك القيام به تلقائيًا لتسهيل عملك. لا تنس أدوات الاتصال المفتوحة للتعاون الفعال.
فيما يلي بعض المقالات الجيدة حول DevOps للمبتدئين:
يمكنك أيضًا دمج DevOps مع أدوات مفتوحة للرشاقة: