دليل المبتدئين: بناء خط أنابيب DevOps

إذا كنت جديدًا على DevOps ، فألق نظرة على هذا البرنامج التعليمي حول كيفية إنشاء خط الأنابيب الأول المكون من خمس خطوات.



صورة




أصبح DevOps الحل القياسي لإصلاح عمليات تطوير البرامج البطيئة أو غير المتصلة أو المعطلة. تكمن المشكلة في أنك إذا كنت جديدًا على DevOps ولا تعرف من أين تبدأ ، فقد تفتقر إلى فهم هذه التقنيات. سترشدك هذه المقالة إلى تعريف خط أنابيب DevOps وستقدم تعليمات حول كيفية إنشائه في خمس خطوات. على الرغم من أن هذا البرنامج التعليمي ليس شاملاً ، إلا أنه يجب أن يمنحك أساسًا لتبدأ وتوسع معرفتك في المستقبل. لكن لنبدأ بالتاريخ.



رحلتي DevOps



اعتدت أن أعمل على فريق السحابة Citi Group لتطوير تطبيق ويب البنية التحتية كخدمة (IaaS) لإدارة البنية التحتية السحابية لـ Citi ، لكنني تساءلت دائمًا عن كيفية جعل عملية التطوير أكثر كفاءة وإحداث تغيير ثقافي إيجابي لفريق التطوير. لقد وجدت الإجابة في كتاب أوصى به جريج لافندر ، المدير الفني لشركة Citi للهندسة السحابية والبنية التحتية. كان الكتاب بعنوان The Phoenix Project ، ويشرح مبادئ DevOps أثناء القراءة مثل الرواية.



يوضح الجدول الموجود على الجزء الخلفي من الكتاب عدد المرات التي تستخدم فيها الشركات المختلفة أنظمتها في بيئة إصدار:



Amazon: 23000 يوميًا

Google: 5،500 يوميًا

Netflix: 500 يوميًا

Facebook: مرة واحدة يوميًا

Twitter: 3 مرات أسبوعيًا

شركة نموذجية: مرة واحدة كل 9 أشهر



كيف يمكن استخدام ترددات Amazon و Google و Netflix؟ وذلك لأن هذه الشركات توصلت إلى كيفية إنشاء خط أنابيب DevOps شبه مثالي.



لقد قطعنا شوطًا طويلًا من ذلك حتى نفذنا DevOps في Citi. كان لدى فريقي بيئات مختلفة في ذلك الوقت ، ولكن النشر إلى خادم التطوير كان يدويًا تمامًا. كل المطورين لديهم امكانية توصل لوحدة خدمة تطوير واحدة فقط بناء على IBM WebSphere Application Server Community Edition. كانت المشكلة أن الخادم سيغلق كلما حاول العديد من المستخدمين النشر في نفس الوقت ، لذلك كان على المطورين توصيل نواياهم لبعضهم البعض ، وهو أمر مؤلم للغاية. بالإضافة إلى ذلك ، كانت هناك مشكلات تتعلق بتغطية رمز الاختبار منخفضة المستوى وعمليات النشر اليدوي المرهقة وعدم القدرة على تتبع نشر التعليمات البرمجية المرتبطة بمهمة معينة أو قصة مستخدم.



أدركت أنني بحاجة إلى القيام بشيء ما وعثرت على زميل له نفس التفكير. قررنا التعاون في خط أنابيب DevOps الأولي - فقد أنشأ جهازًا افتراضيًا وخادم تطبيق Tomcat بينما كنت أعمل على Jenkins ، ودمج Atlassian Jira و BitBucket ، وعملنا على تغطية رمز الاختبار. كان هذا المشروع الجانبي ناجحًا جدًا: لقد قمنا تقريبًا بأتمتة العديد من العمليات ، وحققنا وقت تشغيل بنسبة 100٪ تقريبًا لخادم التطوير الخاص بنا ، وقدمنا ​​التتبع وتحسين تغطية رمز الاختبار ، وأضفنا أيضًا القدرة على ربط الفروع في Git بمشكلات في Jira أو عمليات النشر. كانت معظم الأدوات التي استخدمناها لبناء خط أنابيب DevOps مفتوحة المصدر.



الآن أفهم مدى بساطة خط أنابيب DevOps: لم نستخدم ملحقات مثل ملفات Jenkins أو Ansible. ومع ذلك ، عمل خط الأنابيب البسيط هذا بشكل جيد ، ربما بسبب مبدأ باريتو (المعروف أيضًا بقاعدة 80/20).



مقدمة سريعة إلى DevOps وخط أنابيب CI / CD



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



العمليات المؤتمتة التي تم إجراؤها يدويًا في السابق ؛

الجميع يفعل ما يعرفه أفضل ؛

يزداد عدد عمليات التنفيذ لفترة معينة من الزمن ؛ يزيد الإنتاجية ؛

زيادة مرونة التنمية.



في حين أن امتلاك أدوات البرامج الصحيحة ليس هو الشيء الوحيد الذي تحتاجه لإنشاء بيئة DevOps ، هناك حاجة إلى بعض الأدوات. الأداة الرئيسية هي التكامل المستمر والنشر المستمر (CI / CD). في خط الأنابيب هذا ، تحتوي البيئات على مراحل مختلفة (على سبيل المثال ، DEV و INT و TST و QA و UAT و STG و PROD) ، والعديد من العمليات مؤتمتة ، ويمكن للمطورين كتابة تعليمات برمجية عالية الجودة وتحقيق مرونة التطوير وتردد النشر العالي.



توضح هذه المقالة نهجًا من خمس خطوات لبناء خط أنابيب DevOps مشابه لما هو موضح في الرسم البياني التالي باستخدام أدوات مفتوحة المصدر.



الخطوة 1: طرق CI / CD



أول شيء تحتاجه هو أداة CI / CD. Jenkins ، أداة مفتوحة المصدر تستند إلى Java تم إصدارها بموجب ترخيص MIT ، هي الأداة التي شاعت اتجاه DevOps وأصبحت المعيار الفعلي.



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



Jenkins هي مجرد واحدة من العديد من أدوات CI / CD مفتوحة المصدر التي يمكنك استخدامها لبناء خط أنابيب DevOps الخاص بك.



جنكينز: المشاع الإبداعي ومعهد ماساتشوستس للتكنولوجيا

Travis CI: MIT

CruiseControl: BSD

Buildbot: GPL

Apache Gump: Apache 2.0

Cabie: GNU



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



صورة




لديك أداة CI / CD تعمل على مضيفك المحلي ، ولكن ليس هناك الكثير الذي يمكنك القيام به في هذه المرحلة. دعنا ننتقل إلى المحطة التالية من رحلة DevOps.



الخطوة 2: إدارة أنظمة التحكم بالمصادر



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



هذا هو المكان الذي يصبح فيه التحكم بالمصادر ضرورة عمليا. تقوم هذه الأداة بتخزين التعليمات البرمجية في المستودعات ، وتتبع الإصدارات وتنسيق عمل المشاركين في المشروع.



في حين أن هناك العديد من أدوات التحكم بالمصادر ، فإن Git هو المعيار وهذا صحيح. أوصي بشدة باستخدام Git ، على الرغم من وجود خيارات أخرى مفتوحة المصدر إذا أردت.



Git: GPLv2 و LGPL v2.1

التخريب:

نظام الإصدارات المتزامنة Apache 2.0 (CVS): GNU

Vesta: LGPL

Mercurial: GNU GPL v2 +



هذا ما يبدو عليه خط أنابيب DevOps مع عناصر تحكم كود المصدر المضافة.



صورة




يمكن لأداة CI / CD أتمتة عمليات التحقق واسترجاع التعليمات البرمجية المصدر والتعاون بين الأعضاء. ليس سيئا؟ ولكن كيف تجعله تطبيقًا عمليًا حتى يتمكن مليارات الأشخاص من استخدامه وتقديره؟



الخطوة 3: إنشاء أداة أتمتة البناء



غرامة! يمكنك التحقق من الرمز وإجراء تغييرات على نظام التحكم في المصدر ، وكذلك دعوة أصدقائك للتعاون في التطوير. ولكنك لم تنشئ التطبيق بعد. لإنشاء تطبيق ويب ، يجب أن يتم تجميعه وتعبئته بتنسيق دفعي قابل للنشر ، أو تشغيله كملف قابل للتنفيذ. (لاحظ أن لغة البرمجة المترجمة مثل JavaScript أو PHP لا تحتاج إلى الترجمة.)



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



اسم رخصة لغة برمجة
مخضرم أباتشي 2.0 جافا
نملة أباتشي 2.0 جافا
غراد أباتشي 2.0 جافا
بازل أباتشي 2.0 جافا
يصنع غنو لا يوجد
الناخر معهد ماساتشوستس للتكنولوجيا جافا سكريبت
بلع معهد ماساتشوستس للتكنولوجيا جافا سكريبت
Buildr اباتشي روبي
مجرفة معهد ماساتشوستس للتكنولوجيا روبي
AAP غنو بيثون
سكونز معهد ماساتشوستس للتكنولوجيا بيثون
BitBake GPLv2 بيثون
كيك معهد ماساتشوستس للتكنولوجيا ج #
ASDF العمالة الوافدة (MIT) LISP
عصبة جمعية سرية BSD هاسكل




نجاح باهر! يمكنك وضع ملفات تكوين أداة التنفيذ التلقائي في نظام التحكم بالمصادر والسماح لأداة CI / CD بتجميع كل شيء معًا.



صورة




لا بأس ، أليس كذلك؟ ولكن أين لنشر تطبيقك؟



الخطوة 4: خادم تطبيقات الويب



حتى الآن ، لديك ملف مضغوط يمكن تنفيذه أو تثبيته. لكي يكون أي تطبيق مفيدًا حقًا ، يجب أن يوفر نوعًا من الخدمة أو الواجهة ، ولكنك تحتاج إلى حاوية لاستضافة تطبيقك.



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



هناك العديد من خوادم تطبيقات الويب مفتوحة المصدر.



اسم رخصة لغة برمجة
هر أباتشي 2.0 جافا
رصيف أباتشي 2.0 جافا
ذبابة البرية غنو الصغرى العامة جافا
السمكة الزجاجية CDDL و GNU أقل عمومية جافا
جانغو 3-بند BSD بيثون
إعصار أباتشي 2.0 بيثون
Gunicorn معهد ماساتشوستس للتكنولوجيا بيثون
بيثون معهد ماساتشوستس للتكنولوجيا بيثون
القضبان معهد ماساتشوستس للتكنولوجيا روبي
Node.js معهد ماساتشوستس للتكنولوجيا جافا سكريبت




خط أنابيب DevOps الخاص بك جاهز تقريبًا للاستخدام. عمل جيد!



صورة




بينما يمكنك التوقف عند هذا الحد ودمج نفسك ، تعد جودة التعليمات البرمجية أمرًا مهمًا بالنسبة لمطور التطبيقات للقلق.



الخطوة 5: تغطية اختبار الكود



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



يتكون اختبار التعليمات البرمجية من جزأين: أطر اختبار التعليمات البرمجية التي تساعدك على كتابة الاختبارات وتشغيلها ، وأدوات الاقتراح التي تساعد على تحسين جودة التعليمات البرمجية الخاصة بك.



أنظمة اختبار الكود



اسم رخصة لغة برمجة
الوحدة كسوف الرخصة العامة جافا
EasyMock اباتشي جافا
موكيتو معهد ماساتشوستس للتكنولوجيا جافا
بوورموك أباتشي 2.0 جافا
Pytest معهد ماساتشوستس للتكنولوجيا بيثون
فرضية موزيلا بيثون
توكس معهد ماساتشوستس للتكنولوجيا بيثون




أنظمة توصية تحسين الكود



اسم رخصة لغة برمجة
Cobertura غنو جافا
كودكوفير الكسوف العام (EPL) جافا
Coverage.py أباتشي 2.0 بيثون
إيما الترخيص العام المشترك جافا
JaCoCo كسوف الرخصة العامة جافا
فرضية موزيلا بيثون
توكس معهد ماساتشوستس للتكنولوجيا بيثون
ياسمين معهد ماساتشوستس للتكنولوجيا جافا سكريبت
الكرمة معهد ماساتشوستس للتكنولوجيا جافا سكريبت
موكا معهد ماساتشوستس للتكنولوجيا جافا سكريبت
دعابة معهد ماساتشوستس للتكنولوجيا جافا سكريبت




لاحظ أن معظم الأدوات والأطر المذكورة أعلاه مكتوبة لـ Java و Python و JavaScript ، نظرًا لأن C ++ و C # هي لغات برمجة خاصة (على الرغم من أن دول مجلس التعاون الخليجي مفتوحة المصدر).



الآن بعد أن قمت بتطبيق أدوات تغطية الاختبار ، يجب أن يبدو خط أنابيب DevOps مشابهًا للرسم التخطيطي الموضح في بداية هذا البرنامج التعليمي.



خطوات إضافية



الحاويات



كما قلت ، يمكنك استضافة الخادم الخاص بك في جهاز افتراضي أو خادم ، لكن الحاويات هي حل شائع.



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



بينما توجد خيارات حاوية أخرى ، فإن الأكثر شيوعًا هي Docker و Kubernetes.



عامل الميناء: Apache 2.0

Kubernetes: Apache 2.0 Automation الوسيطة







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



فيما يلي بعض أدوات البرمجيات الوسيطة مفتوحة المصدر:



Ansible: GNU Public

SaltStack: Apache 2.0

الشيف: أباتشي 2.0

دمية: أباتشي أو جي بي إل



صورة




تعرف على تفاصيل كيفية الحصول على مهنة رفيعة المستوى من الصفر أو المستوى الأعلى في المهارات والراتب من خلال الحصول على دورات SkillFactory المدفوعة عبر الإنترنت:





المزيد من الدورات


مفيد






All Articles