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

التسليم المستمر ( CD ) هو منهج هندسي برمجي تقوم فيه فرق العمل بإنتاج البرمجيات في دورات قصيرة، مما يضمن إمكانية إصدارها بشكل موثوق في أي وقت. [ 1 ] [ 2 ] يهدف هذا المنهج إلى بناء البرمجيات واختبارها وإصدارها بسرعة وتواتر أكبر. ويساعد على تقليل التكلفة والوقت [ 3 ] ومخاطر تسليم التغييرات من خلال السماح بتحديثات تدريجية أكثر للتطبيقات في بيئة الإنتاج. وتُعدّ عملية النشر المباشرة والقابلة للتكرار أمرًا بالغ الأهمية للتسليم المستمر.

مبادئ

بحسب نيل فورد، يعتمد التسليم المستمر على مبدأ "معالجة المشاكل مبكراً"، حيث يتم التعامل مع المهام الصعبة في وقت مبكر، مما يعزز الأتمتة والكشف السريع عن المشكلات. [ 4 ]

تُعامل عملية التسليم المستمر المفهوم الشائع لخط أنابيب النشر [ 5 ] على أنه نظام بوكا يوك مبسط [ 6 ] : مجموعة من عمليات التحقق التي يجب أن يجتازها جزء من البرنامج قبل إصداره . يتم تجميع الكود إذا لزم الأمر، ثم يتم تغليفه بواسطة خادم البناء في كل مرة يتم فيها إدخال تغيير إلى مستودع التحكم في المصدر ، ثم يتم اختباره باستخدام عدد من التقنيات المختلفة (بما في ذلك الاختبار اليدوي المحتمل) قبل أن يتم وضع علامة عليه على أنه جاهز للإصدار.

قد يحتاج المطورون المعتادون على دورات التطوير الطويلة إلى تغيير طريقة تفكيرهم عند العمل في بيئة التكامل المستمر والتسليم المستمر (CI/CD). إذ يُمكن إصدار أي تعديل برمجي للعملاء في أي وقت. تُعدّ أنماط مثل مفاتيح تبديل الميزات مفيدة جدًا لإصدار تعديلات برمجية مبكرة غير جاهزة للاستخدام من قِبل المستخدمين النهائيين. [ 7 ] يُمكن استخدام قواعد بيانات NoSQL لإلغاء خطوة ترحيل البيانات وتغييرات المخطط، وهي خطوات يدوية أو استثناءات شائعة في سير عمل التسليم المستمر. [ 8 ] لا تزال التقنيات المفيدة الأخرى لتطوير البرمجيات بشكل منفصل، مثل تفرع البرمجيات، فعّالة في بيئة CI/CD، ولكن يجب تكييفها لتتوافق مع مبادئها. على سبيل المثال، قد يكون تشغيل فروع برمجية متعددة طويلة الأمد غير عملي، إذ يجب بناء منتج قابل للإصدار في وقت مبكر من عملية CI/CD من فرع برمجي واحد لكي يمر عبر جميع مراحل خط الأنابيب.

مسار النشر

يتم تمكين التسليم المستمر من خلال مسار النشر. ويتكون مسار النشر من ثلاثة عناصر: الرؤية، والتغذية الراجعة، والنشر المستمر. [ 9 ]

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

بحسب يان كوي، فيما يتعلق بالبيئات غير الخادمية ، ينبغي تجميع الموارد المؤقتة معًا ومنحها مسار نشر خاص بها لتحقيق تماسك عالٍ . مع ذلك، ينبغي أن يكون للموارد المشتركة التي تستغرق وقتًا طويلاً للتشغيل ومنطقة تخزين منفصلة مستودع ومسار نشر ومجموعة أدوات خاصة بها. [ 10 ]

الأدوات/أنواع الأدوات

تُتيح عملية التسليم المستمر أتمتة جميع مراحل العملية، بدءًا من التحكم في المصدر وصولًا إلى مرحلة الإنتاج. وتتوفر أدوات متنوعة تُساعد في إنجاز هذه العملية كليًا أو جزئيًا. [ 11 ] تُعد هذه الأدوات جزءًا من مسار النشر الذي يشمل التسليم المستمر. ومن أنواع الأدوات التي تُنفذ أجزاءً مختلفة من العملية: التكامل المستمر ، وأتمتة إصدار التطبيقات ، وأتمتة البناء ، وإدارة دورة حياة التطبيقات . [ 12 ]

التصميم من أجل التسليم المستمر

لضمان فعالية عملية التسليم المستمر، يجب أن تستوفي تطبيقات البرمجيات مجموعة من المتطلبات المعمارية الهامة (ASRs) مثل قابلية النشر، وقابلية التعديل، وقابلية الاختبار. [ 13 ] تتطلب هذه المتطلبات المعمارية الهامة أولوية عالية ولا يمكن التهاون بها.

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

التنفيذ والاستخدام

ساهم كتاب "التسليم المستمر" الأصلي، الذي ألفه جيز همبل وديفيد فارلي (2010)، في انتشار مصطلح "التسليم المستمر"؛ إلا أن تعريفه تطور منذ ذلك الحين، وأصبح يحمل معنىً أكثر شمولاً. وتطبق الشركات اليوم مبادئ التسليم المستمر وأفضل الممارسات في هذا المجال. ولا يزال الاختلاف بين المجالات، كالمجال الطبي مقابل مجال الإنترنت، جوهريًا، ويؤثر على التطبيق والاستخدام. [ 15 ] ومن الشركات المعروفة التي تتبنى هذا النهج: ياهو ! [ 16 ] ، أمازون [ 17 ] ، فيسبوك [ 18 ] ، جوجل [ 19 ] ، بادي باور [ 1 ] ، وويلز فارجو [ 20 ] .

الفوائد والعقبات

تم الإبلاغ عن العديد من فوائد الولادة المستمرة. [ 1 ] [ 15 ]

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

كما تم التحقيق في العقبات. [ 15 ]

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

وقد طرح تشين ثمانية تحديات أخرى تتعلق بالتبني وقام بتفصيلها. [ 21 ] وتتمثل هذه التحديات في مجالات الهيكل التنظيمي والعمليات والأدوات والبنية التحتية والأنظمة القديمة والتصميم من أجل التسليم المستمر والاختبار المستمر للمتطلبات غير الوظيفية وتحسين تنفيذ الاختبار.

استراتيجيات للتغلب على تحديات التبني

تم الإبلاغ عن العديد من الاستراتيجيات للتغلب على تحديات تبني التسليم المستمر. [ 21 ]

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

أفضل الممارسات لأنظمة الحوسبة السحابية

يمكن للممارسات التالية أن تعزز إنتاجية خطوط الأنابيب ، وخاصة في الأنظمة المستضافة في السحابة : [ 22 ] [ 23 ] [ 24 ]

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

العلاقة بـ DevOps

ديف أوبس هو منهج هندسة برمجيات يرتكز على التغيير الثقافي، وتحديداً على تعاون مختلف الفرق المشاركة في تطوير البرمجيات (المطورون، العمليات، ضمان الجودة، الإدارة، إلخ)، بالإضافة إلى أتمتة عمليات تطوير البرمجيات. [ 25 ] [ 26 ] [ 27 ]

العلاقة بالانتشار المستمر

النشر المستمر هو منهج هندسي برمجي يستخدم عمليات نشر برمجية مؤتمتة. [ 21 ] في هذا المنهج، تُنتج البرمجيات في دورات قصيرة، ولكن من خلال عمليات نشر مؤتمتة حتى في بيئة الإنتاج، بدلاً من الحاجة إلى "نقرة زر" في الخطوة الأخيرة. [ 1 ] : 52 لذا، يُمكن اعتبار النشر المستمر شكلاً أكثر تطوراً من أشكال الأتمتة. [ 28 ] تُفرّق الأدبيات الأكاديمية بين التسليم المستمر والنشر المستمر وفقاً لطريقة النشر؛ يدوية مقابل مؤتمتة. [ 2 ] [ 29 ]

انظر أيضاً

للمزيد من القراءة

  • همبل، جيز؛ فارلي، ديفيد (2010). التسليم المستمر: إصدارات برمجيات موثوقة من خلال أتمتة البناء والاختبار والنشر . أديسون-ويسلي. ISBN 978-0-321-60191-9.
  • وولف، إيبرهارد (2017). دليل عملي للتسليم المستمر . أديسون-ويسلي. ISBN 978-0-134-69147-3.

مراجع

  1. 1 2 3 4 تشين، ليان بينغ (2015). "التسليم المستمر: فوائد هائلة، ولكن تحديات أيضًا" . مجلة IEEE للبرمجيات . 32 (2): 50-54 . Bibcode : 2015ISoft..32b..50C . doi : 10.1109/MS.2015.27 . S2CID 1241241 . 
  2. 1 2 شاهين، مجتبى؛ علي بابارا، محمد؛ تشو، ليمينغ (2017). "التكامل والتسليم والنشر المستمر: مراجعة منهجية للمناهج والأدوات والتحديات والممارسات" . IEEE Access . 5 : 3909-3943 . arXiv : 1703.07019 . Bibcode : 2017arXiv170307019S . doi : 10.1109/ACCESS.2017.2685629 . S2CID 11638909 . 
  3. يوها إيتكونن، و ر. أود، و س. لاسينيوس، وتيمو ليهتونن (2016). "الفوائد المتوقعة من تبني ممارسات التسليم المستمر". وقائع الندوة الدولية العاشرة لجمعية آلات الحوسبة/معهد مهندسي الكهرباء والإلكترونيات حول هندسة البرمجيات التجريبية والقياس . doi : 10.1145/2961111.2962627 .
  4. فورد، نيل؛ بارسونز، ريبيكا؛ كوا، باتريك؛ سادالاج، برامود ج. (2022). بناء بنى تطورية: حوكمة البرمجيات الآلية . دار نشر أورايلي ميديا. رقم ISBN 978-1492097549.
  5. همبل، ج.؛ ريد، س.؛ نورث، د. (2006). "خط إنتاج النشر". أجايل 2006 (أجايل 06) . ص 113-118 . doi : 10.1109/AGILE.2006.53 . ISBN  0-7695-2562-8. S2CID 16572138 . 
  6. فيتزجيرالد، برايان (2014-06-03). هندسة البرمجيات المستمرة وما بعدها: الاتجاهات والتحديات (ملف PDF) . ورشة العمل الدولية الأولى حول هندسة البرمجيات المستمرة السريعة . نيويورك، نيويورك: رابطة آلات الحوسبة. الصفحات 1-9 . doi : 10.1145/2593812.2593813 . hdl : 10344/3896 . ISBN  978-1-4503-2856-2أُرشف من النسخة الأصلية (PDF) بتاريخ 25-10-2014 . تم الاطلاع عليه بتاريخ 24-10-2014 .
  7. رحمن، محمد تاجملور؛ كويريل، لويس فيليب؛ ريغبي، بيتر سي؛ آدامز، برام (2016). "مفاتيح التبديل: ممارسات الممارسين ودراسة حالة" . وقائع المؤتمر الدولي الثالث عشر حول استخراج مستودعات البرمجيات (MSR) : 201-211 . doi : 10.1145/2901739.2901745 .
  8. كلوج، لارس (12 سبتمبر 2013). "النشر المستمر باستخدام MongoDB في Kitchensurfing" . slideshare.net . تم الاطلاع عليه في 3 يناير 2014 .
  9. دوفال، بول (2012). "التسليم المستمر: الأنماط والأنماط المضادة في دورة حياة البرمجيات" (ملف PDF) . ريفكاردز . مؤرشف من الأصل (ملف PDF) في 19 يونيو 2018. تم الاطلاع عليه في 9 أكتوبر 2015 .
  10. كوي، يان (2020). بنى الحوسبة بلا خوادم على AWS ( الطبعة الثانية). مانينغ. ISBN  978-1617295423.
  11. فيليبس، أندرو (29 يوليو 2014). "خط أنابيب التسليم المستمر - ما هو ولماذا هو مهم جدًا في تطوير البرمجيات" . DevOps.com . مؤرشف من الأصل في 28 سبتمبر 2015. تم الاطلاع عليه في 9 أكتوبر 2015 .
  12. بينستوك، أندرو (16 سبتمبر 2014). "التسليم المستمر: خليفة منهجية أجايل" . دكتور دوبز: عالم تطوير البرمجيات . سان فرانسيسكو: يو بي إم.
  13. تشين، ليان بينغ (2015). نحو تصميم معماري للتسليم المستمر . المؤتمر الثاني عشر لهندسة البرمجيات التابع لمعهد مهندسي الكهرباء والإلكترونيات/الاتحاد الدولي لمعالجة المعلومات (WICSA 2015) . مونتريال، كندا: معهد مهندسي الكهرباء والإلكترونيات. doi : 10.1109/WICSA.2015.23 .أُرشف بتاريخ 13 نوفمبر 2018 في أرشيف الإنترنت (Wayback Machine) .
  14. 1 2 تشين، ليان بينغ (2018). الخدمات المصغرة: تصميم البنية للتسليم المستمر و DevOps . المؤتمر الدولي لهندسة البرمجيات (ICSA 2018) . IEEE.
  15. 1 2 3 ليبانين، م.؛ ماكينين، S .؛ باجيلز، م. إلورانتا، نائب الرئيس؛ إتكونين، J.؛ مانتيلا، إم في؛ مانيستو، ت. (2015/03/01). “الطرق السريعة والطرق الريفية للنشر المستمر”. برامج آي إي إي إي . 32 (2): 64– 72. بيب كود : 2015ISoft..32b..64L . دوى : 10.1109/MS.2015.50 . ردمك 0740-7459 . S2CID 18719684 .  
  16. "تطبيق التسليم المستمر في ياهو!" . confreaks.tv . 23 أكتوبر 2013.
  17. "Velocity 2011: جون جينكينز، "ثقافة السرعة"" . youtube.com . 20 يونيو 2011.
  18. "إصدار سريع على نطاق واسع" . 2017-08-31.
  19. همبل، جيز (13 فبراير 2014). "حجة التسليم المستمر" . thoughtworks.com . تم الاطلاع عليه بتاريخ 16 يوليو 2014 .
  20. jFrog (ديسمبر 2014). "ثورة التكامل المستمر لعام 2014" .
  21. 1 2 3 تشين، ليان بينغ (2017). "التسليم المستمر: التغلب على تحديات التبني" . مجلة الأنظمة والبرمجيات . 128 : 72-86 . doi : 10.1016/j.jss.2017.02.013 .
  22. بنى الحوسبة بلا خوادم على AWS . مانينغ. 29 مارس 2022. ISBN 978-1617295423.
  23. خط الأنابيب كبرنامج: التسليم المستمر باستخدام Jenkins وKubernetes وTerraform . مانينغ. 23 نوفمبر 2021. ISBN 9781638350378.
  24. همبل، جيز؛ فارلي، ديفيد (27 يوليو 2010). التسليم المستمر: إصدارات برمجيات موثوقة من خلال أتمتة البناء والاختبار والنشر . بيرسون للتعليم. ISBN 9780321670229.
  25. همبل، جيز؛ فارلي، ديفيد (2011). التسليم المستمر: إصدارات برمجيات موثوقة من خلال أتمتة البناء والاختبار والنشر . بيرسون إديوكيشن إنك. ISBN 978-0-321-60191-9.
  26. هاموند، جيفري (9 سبتمبر 2011). "العلاقة بين ديف أوبس والتسليم المستمر" . فورستر ريسيرش . فورستر.
  27. سوارتوت، بول (2012). التسليم المستمر وDevOps: دليل البدء السريع . دار نشر Packt. رقم ISBN 978-1849693684.
  28. "النشر المستمر: دليل أساسي" . آي بي إم . 2019-10-02 . تم الاطلاع عليه بتاريخ 2022-11-28 . النشر المستمر هو النتيجة الطبيعية للتسليم المستمر عند تطبيقه بشكل جيد. في نهاية المطاف، لا تُضيف الموافقة اليدوية قيمة تُذكر، بل تُبطئ الأمور فحسب. عند هذه النقطة، يتم الاستغناء عنها، ويتحول التسليم المستمر إلى نشر مستمر.
  29. شاهين، مجتبى؛ بابر، محمد علي؛ زاهدي، منصوره؛ تشو، ليمينغ (2017). "ما وراء التسليم المستمر: دراسة تجريبية لتحديات النشر المستمر". ندوة ACM/IEEE الدولية لعام 2017 حول هندسة البرمجيات التجريبية والقياس (ESEM) . الصفحات 111-120 . doi : 10.1109/ESEM.2017.18 . ISBN  978-1-5090-4039-1. S2CID 3479812 .