متى يجب أن يتوقف خط الأنابيب وينتظر إنسانًا؟
تخيل هذا: فريقك لديه خط أنابيب CI/CD متين. الاختبارات تُجرى تلقائيًا. فحوصات الأمان تمر. يتم بناء الكود ونشره إلى بيئة الاختبار دون أن يرفع أحد إصبعه. ثم، قبل الإنتاج مباشرة، يتوقف خط الأنابيب. يظهر إشعار: "الموافقة مطلوبة."
يجب على شخص ما النقر على "موافقة" قبل أن يستمر النشر. ربما يكون ذلك الشخص هو قائدك التقني. ربما يكون مديرًا هندسيًا. ربما يكونون في اجتماع، أو قد انتهى يوم عملهم بالفعل. يظل النشر هناك، في انتظار.
تكشف هذه اللحظة عن توتر يواجهه كل فريق. إلى أي مدى يجب أن يقرر خط الأنابيب بنفسه؟ ومتى يجب أن يتوقف ويطلب حكمًا بشريًا؟
النوعان من الفحوصات
كل خط أنابيب لديه نقاط تفتيش. قبل أن ينتقل التغيير من مرحلة إلى أخرى، يتحقق شيء من أنه آمن للمتابعة. يمكن أن تكون نقطة التفتيش هذه واحدة من شيئين: بوابة آلية أو موافقة يدوية.
البوابة الآلية هي فحص يتم تشغيله داخل خط الأنابيب دون أي تدخل بشري. ينفذ خط الأنابيب مجموعة من الاختبارات أو التحقق من الصحة، ثم يقرر ما إذا كان يمكن للتغيير المضي قدمًا. على سبيل المثال، بعد أن يدفع المطور كودًا جديدًا، يقوم خط الأنابيب بتشغيل اختبارات الوحدة. إذا اجتازت جميع الاختبارات، يستمر التغيير. إذا فشل أي اختبار، يتوقف خط الأنابيب ويُعلم الفريق.
الموافقة اليدوية هي قرار يتخذه شخص. عادةً ما يكون هذا الشخص مهندسًا رئيسيًا، أو قائدًا تقنيًا، أو شخصًا مسؤولًا عن بيئة معينة. يراجعون التغيير، ويأخذون في الاعتبار السياق، ثم يوافقون عليه أو يرفضونه. ينتظر خط الأنابيب حتى يأتي هذا القرار.
كلاهما يخدم نفس الغرض: منع التغييرات السيئة من المضي قدمًا. لكنهما يعملان بطرق مختلفة جوهريًا.
يُظهر الرسم البياني أدناه كيف تتناسب هذان النوعان من الفحوصات في خط أنابيب النشر:
ما تجيده البوابات الآلية
أقوى حجة للبوابات الآلية هي الاتساق. في كل مرة يدخل فيها تغيير إلى خط الأنابيب، يتم تشغيل نفس الفحوصات بنفس الطريقة. لا يتم تخطي أي شيء لأن شخصًا ما نسي. لا يتم التسرع في شيء لأن الموعد النهائي يقترب. خط الأنابيب لا يتعب، ولا ينشغل، ولا يحابي.
إذا كانت اختباراتك شاملة وفحوصاتك صحيحة، فإن البوابات الآلية تمنحك خطًا أساسيًا موثوقًا. كل تغيير يجتاز تلك البوابات يفي بمعيار أدنى. لا داعي للتساؤل عما إذا كان شخص ما قد اختصر الطريق أو فاته خطوة.
تتوسع البوابات الآلية أيضًا. قد يتمكن فريق من خمسة مطورين من مراجعة كل تغيير يدويًا. لا يمكن لفريق من خمسين شخصًا فعل ذلك. يمكن لخط الأنابيب تشغيل مئات الفحوصات في دقائق، بينما قد يستغرق المراجع البشري ساعات للقيام بنفس العمل.
أين تقصر البوابات الآلية
لكن للبوابات الآلية نقطة عمياء. يمكنها فقط التحقق مما قمت ببرمجتها للتحقق منه. لا يمكنها قراءة الغرفة. لا يمكنها استشعار مزاج الفريق أو حالة الإنتاج. لا يمكنها اتخاذ قرار بناءً على الخبرة.
يمكن لخط الأنابيب التحقق من أن جميع اختبارات الوحدة تجتاز. لا يمكنه إخبارك ما إذا كان هذا التغيير المعين آمنًا للنشر خلال حركة مرور الجمعة السوداء. يمكنه التحقق من أن سكريبت ترحيل قاعدة البيانات الخاص بك يعمل بدون أخطاء نحوية. لا يمكنه إخبارك ما إذا كان تشغيل هذا الترحيل في الساعة 3 مساءً يوم الثلاثاء فكرة سيئة.
البوابات الآلية ممتازة في الإجابة على "هل يفي هذا بالمعايير الفنية؟" إنها سيئة في الإجابة على "هل يجب أن نفعل هذا الآن؟"
متى تحتاج إلى إنسان
هذا هو المكان الذي تكسب فيه الموافقات اليدوية مكانتها. يمكن للبشر مراعاة عوامل لا يمكن لأي اختبار التقاطها:
- هل هذا هو الوقت المناسب للنشر؟ ربما يكون الإنتاج غير مستقر بالفعل. ربما تم إطلاق حملة تسويقية كبرى للتو. ربما يتعامل المهندس المناوب مع حادث ولا ينبغي تشتيت انتباهه بنشر.
- هل يحتاج هذا التغيير إلى تنسيق؟ ربما يؤثر النشر على خدمة فريق آخر. ربما يحتاج فريق قاعدة البيانات إلى معرفة تغيير في المخطط. ربما يريد فريق ضمان الجودة تشغيل اختبار تدخين نهائي قبل أن يصل التغيير إلى المستخدمين.
- هل المخاطرة مقبولة؟ قد يكون إصلاح خطأ صغير آمنًا للنشر بعد ظهر يوم الجمعة. قد لا تكون إعادة هيكلة رئيسية كذلك. يمكن للإنسان أن يزن المخاطرة بناءً على الخبرة والسياق.
تخلق الموافقات اليدوية أيضًا المساءلة. عندما يوافق شخص ما على نشر، فإنه يضع اسمه عليه. لا يتعلق الأمر باللوم. يتعلق الأمر بوجود سجل واضح بأن شخصًا ما راجع التغيير واتخذ قرارًا واعيًا. إذا حدث خطأ ما، يمكن للفريق النظر إلى الوراء وفهم ما تم النظر فيه قبل النشر.
كيف تقرر بينهما
السؤال الشائع هو: أي الفحوصات يجب أن تكون آلية، وأيها يجب أن تتطلب إنسانًا؟
تعتمد الإجابة على طبيعة الفحص. التحقق من الصحة الفنية التي يمكن تقنينها يجب أن تكون بوابات آلية. الاختبارات، فحوصات الأمان، فحص الأكواد، فحوصات التنسيق، تدقيق التبعيات—كل هذه أشياء يمكن للآلة القيام بها بشكل أسرع وأكثر اتساقًا من الإنسان.
القرارات التي تتطلب حكمًا أو سياقًا أو تنسيقًا يجب أن تكون موافقات يدوية. قرارات التوقيت، تقييمات المخاطر، التنسيق بين الفرق، وتقييمات تأثير الأعمال هي الأفضل تركها للأشخاص.
لكن هناك فارق بسيط هنا. فقط لأن شيئًا ما يمكن أتمتته لا يعني أنه يجب أن يكون بوابة. بعض الفحوصات مفيدة كمعلومات ولكن ليس كعوائق. على سبيل المثال، قد تقوم بتشغيل اختبار أداء وتسجيل النتائج، ولكن لا تمنع خط الأنابيب إذا كانت النتائج أسوأ قليلاً من المتوقع. هذا قرار حكم للإنسان.
يعملان معًا، ليس ضد بعضهما البعض
البوابات الآلية والموافقات اليدوية ليستا نهجين متنافسين. إنهما يكملان بعضهما البعض. يتولى خط الأنابيب الفحوصات الفنية المتكررة والمتسقة. يتولى البشر القرارات السياقية والظرفية القائمة على الحكم.
يستخدم خط الأنابيب الجيد البوابات الآلية لتصفية المشكلات الواضحة مبكرًا. بحلول الوقت الذي يصل فيه التغيير إلى خطوة الموافقة اليدوية، يكون قد اجتاز بالفعل سلسلة من فحوصات الجودة. لا يحتاج المراجع البشري إلى القلق بشأن ما إذا كان الكود يترجم أو تجتاز الاختبارات. يمكنهم التركيز على الأسئلة الأصعب: هل هذا هو الشيء الصحيح الذي ينبغي فعله، في هذا الوقت، في هذا السياق؟
قائمة مرجعية عملية
عند تصميم نقاط التفتيش في خط الأنابيب الخاص بك، اطرح هذه الأسئلة:
- هل يمكن تعريف هذا الفحص بالكامل في الكود؟ إذا كانت الإجابة بنعم، قم بأتمتته.
- هل يتطلب هذا الفحص معرفة بحالة الإنتاج الحالية؟ إذا كانت الإجابة بنعم، أبقِه يدويًا.
- هل يحتاج هذا الفحص إلى مراعاة توقيت الأعمال أو تنسيق الفريق؟ إذا كانت الإجابة بنعم، أبقِه يدويًا.
- هل هذا الفحص فني بحت ومتكرر؟ إذا كانت الإجابة بنعم، قم بأتمتته.
- هل ستؤدي أتمتة هذا الفحص إلى إزالة الإشراف البشري القيم؟ إذا كانت الإجابة بنعم، أبقِه يدويًا.
الخلاصة
تمنحك البوابات الآلية السرعة والاتساق. تمنحك الموافقات اليدوية السياق والحكم. لا يحل أي منهما محل الآخر. قم ببناء خط الأنابيب الخاص بك لاستخدام كليهما، وستحصل على نظام يتحرك بسرعة لكنه لا يتخطى الأسئلة الصعبة.