الأخبار التكنولوجية والاستعراضات والنصائح!

تحجيم وتحسين CI / CD

أصبح تنفيذ سير عمل CI / CD لتطوير التطبيقات شائعًا بشكل متزايد. في نفس الوقت ، ومع ذلك ، فإنه يمثل تحديا لتوسيع وتحسين CI / CD.

سنناقش اليوم ماهية هذا التحدي ونستكشف بالضبط كيف يمكننا توسيع نطاق CI / CD وتحسينه. لذا اتبع على طول!

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

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

CI / CD ، التكامل المستمر والتسليم / النشر المستمر هو حل لهذه المشكلة ويضمن إصدار التحديثات بدون تأخيرات وتعارضات غير ضرورية. دعونا نفهم هذه العملية.

التكامل المستمر

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

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

التسليم المستمر

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

تحجيم وتحسين CI / CD 1

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

التوزيع المستمر

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

تحجيم وتحسين CI / CD 2

في الواقع ، يتيح النشر المستمر إمكانية النشر المباشر لكل تعديل يتخطى المراحل المختلفة لخط الأنابيب الخاص بنا. أثناء التسليم المستمر ، تكون خطوة التحقق البشرية ضرورية لحدوث التنفيذ.

تحجيم CI / CD

مع زيادة عدد الخدمات المصغرة ، يصبح توسيع نطاق CI / CD أمرًا لا مفر منه تقريبًا. ينتج عن العدد المتزايد من الخدمات المصغرة خطوط أنابيب مختلفة متصلة بمستودع بوابة واحد مما يزيد من الحمل على خادم CI ويقلل من الأداء.

تحجيم وتحسين CI / CD 3

لتوسيع نطاق CI / CD ، من الضروري إنشاء خط أنابيب تطوير معياري ومؤتمت لجميع الفرق ومن هناك ضمان جودة مخرجات المطورين الفرديين وإنجازات الفريق. كما أنه يجعل إدارة خط الأنابيب أمرًا سهلاً.

يمكن تحقيق القياس من خلال تحديد عملية CI لإجراء اختبارات الوحدة والتحقق من جودة الكود الذي تم تسليمه.

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

خطوات لتوسيع نطاق CI / CD

تتمثل الخطوة الأولى في مواءمة خط الأنابيب مع المهندسين المعماريين وإشراك قادة الفريق. يتبع تخطيط فروع Git للبيئات (تطوير -> تطوير وإتقان -> [homologation and production]). ثم يأتي إطلاق وظيفة CI في كل طلب سحب ووظيفة القرص المضغوط عند كل تغيير في الفروع المعينة.

يمكن إنشاء دفق وظيفة لكل من CI و CD ليتم اتباعهما.

تم تطوير تدفق وظائف CI في 7 مراحل:

  • تحقق من مصدر طلب السحب وفرع الوجهة ؛
  • التحقق مما إذا كان الدمج لا يحتوي على تعارضات تحتاج إلى حل يدويًا ؛
  • تشغيل اختبارات الوحدة ؛
  • بناء الحزمة للتحقق من التكامل وأن الشفرة قابلة للترجمة ؛
  • التحقق من جودة رمز المشغل ؛
  • زيادة إصدار المشروع وإلزامه بفرع المصدر ؛
  • قم بإخطار مستودع Pull Request Git بالنجاح أو الفشل عبر مكالمات Webhook أو Rest API (مستودع Git).
  • يتبع تدفق عمل القرص المضغوط المسار التالي:

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

    الخطوة 1: يتم إنشاء صورة Docker للقطعة الأثرية التي تم إنشاؤها ، ويتم تطبيق النسخة الأثرية على صورة Docker.

    الخطوة 2: يتم تحميل الصورة إلى سجل Docker.

    الخطوة 3: التنفيذ عن طريق نشر الصور عبر Kubernetes.

    تحجيم وتحسين CI / CD 4

    بالنسبة لمشاريع التطبيق الموجودة في بيئة اعتماد / إنتاج ، اتبع الخطوتين 1 و 2 أعلاه ثم ما يلي:

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

    يعمل CI / CD على تحسين دورة تطوير التطبيق وحل المشكلة الناتجة عن دمج رمز جديد وزيادة وتيرة التسليم.

    فيما يلي كيفية تحسين استخدام CI / CD:

    إعطاء الأولوية لإصلاح النسخة التالفة

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

    الفكرة وراء إصلاح بنية معطلة هي أن البناء سينتج دائمًا كود عمل يمكن إصداره.

    عمليات الانتشار الصغيرة الكثيفة

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

    قم بتطبيق نمط الخانق وقم بتقسيم التغييرات المعقدة إلى تغييرات صغيرة وبسيطة. إذا قمت بالنشر أكثر من مرة وعملت على دفعات صغيرة ، فإن مخاطر النشر تكون أقل.

    أتمتة اختبارات ضمان الجودة لتخفيف المخاطر

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

    اعتمد على الاختبارات الآلية

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

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

    فكر دائمًا في الأمان

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

    فوائد التحجيم وتحسين CI / CD

    بالإضافة إلى زيادة كفاءة فرق التطوير ، فإن توسيع نطاق CI / CD وتحسينه له أيضًا فوائد أخرى ، بعضها:

    تحجيم وتحسين CI / CD 5

    خفض النفقات العامة

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

    التسليم مع عدد أقل من الأخطاء ومخاطر أقل

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

    تفاعل بشكل أسرع مع ظروف السوق

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

    ثقة

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

    الكلمات الأخيرة

    يجعل CI / CD عمليات الدمج والتسليم أسرع. ومع ذلك ، من المهم توسيع نطاقه وتحسينه لتجنب أن تصبح العملية ذات نتائج عكسية بسبب زيادة التعقيد.

    يمكنك أيضًا إلقاء نظرة على بعض من أفضل أدوات CI.