متى يجب أن ينتظر خط أنابيب CI/CD موافقة بشرية؟
تخيل هذا السيناريو: لقد انتهى خط أنابيب CI/CD الخاص بك للتو من بناء واختبار ميزة جديدة. جميع الفحوصات نجحت. لم يجد فحص الأمان أي شيء مريب. بيئة الاختبار (Staging) تعمل بالإصدار الجديد دون أي مشاكل. الآن يريد خط الأنابيب دفع نفس الإصدار إلى بيئة الإنتاج (Production). هل يجب أن يمضي قدمًا، أم يجب أن يتوقف وينتظر شخصًا ليقول "نعم"؟
هذا السؤال يظهر في كل فريق يبني خط أنابيب نشر (Deployment Pipeline) مع بيئات متعددة. الإجابة ليست بنعم أو لا بسيطة. الأمر يعتمد على مدى ثقتك في كل بيئة، وكم المخاطرة التي أنت مستعد لقبولها.
لماذا نترك خط الأنابيب يعمل تلقائيًا؟
في البيئات المبكرة مثل بيئة التطوير (Development)، تسمح معظم الفرق لخط الأنابيب بترقية (Promote) التغييرات تلقائيًا. ينجح البناء، وتنجح الاختبارات، وتكون فحوصات الأمان نظيفة - ويقوم خط الأنابيب فورًا بنشر هذا الإصدار إلى البيئة التالية. لا يحتاج أحد إلى النقر على زر. هذا ما يسمى بالترقية التلقائية (Automatic Promotion).
الترقية التلقائية سريعة. لا يضطر المطورون إلى انتظار موافقة شخص ما لنشر تغيير إلى بيئة الاختبار (Staging) في كل مرة يدفعون فيها إصلاحًا صغيرًا. يمكن لخط الأنابيب معالجة عشرات التغييرات يوميًا دون أن يصبح الفريق عنق زجاجة. بالنسبة للبيئات المبكرة حيث الأخطاء رخيصة، هذه السرعة قيّمة.
لكن الترقية التلقائية ليست مناسبة لكل موقف. كلما اقترب التغيير من بيئة الإنتاج، زاد تأثير أي خطأ. في مرحلة ما، قد يرغب الفريق في التوقف، وإلقاء نظرة على نتائج الاختبار من بيئة الاختبار (Staging)، ثم اتخاذ قرار بشأن ما إذا كان التغيير يجب أن يمضي قدمًا.
متى تحتاج إلى تدخل بشري؟
الترقية اليدوية (Manual Promotion) تعني أن خط الأنابيب يتوقف عند حدود بيئة معينة وينتظر شخصًا ليأذن له بالاستمرار. يحدث هذا عادةً قبل بيئة الإنتاج، أو قبل بيئة يصل إليها المستخدمون الحقيقيون. لقد قام خط الأنابيب بالفعل بكل التحضيرات - تم بناء الإصدار الجديد، واختباره في بيئة الاختبار (Staging)، وفحصه أمنيًا - لكنه لن يذهب إلى بيئة الإنتاج حتى يوافق شخص ما.
عادةً ما تقرر الفرق استخدام الترقية اليدوية بناءً على عاملين: مدى أهمية البيئة المستهدفة، ومدى حجم التغيير.
بالنسبة لبيئات الإنتاج، تستخدم العديد من الفرق الترقية اليدوية كشبكة أمان أخيرة. جميع البوابات الآلية (Automated Gates) قد اجتازت. بيئة الاختبار (Staging) تعمل بشكل طبيعي. لكن الفريق لا يزال يريد من شخص ما أن يتحقق بوعي قبل أن يصل التغيير إلى المستخدمين. الشخص الذي يمنح الموافقة عادة ما يكون مهندسًا أول، أو قائدًا تقنيًا، أو شخصًا يفهم التأثير الكامل للتغيير على النظام.
بالنسبة للتغييرات الكبيرة - مثل ترحيل قواعد البيانات (Database Migrations)، أو تغييرات البنية التحتية (Architecture Changes)، أو تحديثات المكتبات الرئيسية - غالبًا ما تُستخدم الترقية اليدوية حتى لبيئات الاختبار (Staging). يريد الفريق التأكد من أن شخصًا ما يهتم قبل أن ينتقل التغيير إلى المرحلة التالية.
النمط الشائع: تلقائي مبكرًا، يدوي متأخرًا
النهج الأكثر شيوعًا هو مزيج: ترقية تلقائية للبيئات المبكرة، وترقية يدوية للبيئة النهائية. يقوم خط الأنابيب بترقية نفسه من بيئة التطوير (Development) إلى بيئة الاختبار (Staging)، ثم يتوقف عند بوابة الإنتاج (Production Gate) منتظرًا الموافقة. أو يقوم خط الأنابيب بالترقية تلقائيًا إلى بيئة الاختبار (Staging)، ويتحقق فريق ضمان الجودة (QA) يدويًا، ثم يمنح الموافقة للذهاب إلى بيئة الإنتاج.
يوضح المخطط الانسيابي التالي هذا النمط الشائع مع نقطة قرار للتغييرات عالية المخاطر:
تطبق بعض الفرق ترقية يدوية متعددة المستويات. على سبيل المثال، الانتقال إلى بيئة الاختبار (Staging) يتطلب موافقة من مطور أول، بينما الانتقال إلى بيئة الإنتاج يتطلب موافقة من كل من القائد التقني وفريق ضمان الجودة (QA). كلما ارتفعت البيئة، زاد عدد الأشخاص الذين يحتاجون إلى الموافقة.
ما ليست عليه الترقية اليدوية
الترقية اليدوية ليست بديلاً عن البوابات الآلية (Automated Gates). البوابات الآلية لا تزال تعمل في كل بيئة. لا يزال خط الأنابيب يتحقق من البناء والاختبارات والأمان قبل أن يتوقف لانتظار الموافقة. الترقية اليدوية تضيف طبقة من القرار البشري فوق الفحوصات الآلية. إنها لا تستبدلها.
إذا كان خط الأنابيب الخاص بك يتخطى الفحوصات الآلية ويعتمد كليًا على الموافقة اليدوية، فأنت لا تقوم بالترقية اليدوية. أنت تقوم بنشر يدوي (Manual Deployment) بخطوات إضافية. قيمة الترقية اليدوية تأتي من وجود كليهما: التحقق الآلي الصارم بالإضافة إلى الحكم البشري المستنير.
قائمة مراجعة عملية لاتخاذ القرار
عند إعداد قواعد الترقية (Promotion Rules) لخط الأنابيب الخاص بك، اطرح هذه الأسئلة:
- هل هذه البيئة يستخدمها مستخدمون حقيقيون؟ إذا كانت الإجابة بنعم، ففكر في الترقية اليدوية.
- هل يمكن لخطأ هنا أن يؤثر على سلامة البيانات (Data Integrity) أو يتسبب في توقف الخدمة (Downtime)؟ إذا كانت الإجابة بنعم، فالترقية اليدوية أكثر أمانًا.
- هل لدى الفريق ثقة كافية في الاختبارات الآلية لهذه البيئة؟ إذا لم يكن الأمر كذلك، أضف مراجعة يدوية.
- هل هذا تغيير روتيني (تحديث إعدادات، ميزة صغيرة) أم تغيير عالي المخاطر (ترحيل مخطط قاعدة بيانات، ترقية مكتبة)؟ التغييرات عالية المخاطر تستفيد من الموافقة اليدوية حتى في بيئة الاختبار (Staging).
- كم من الوقت تستغرق الموافقة اليدوية؟ إذا استغرقت ساعات، فقد يتجنب الفريق النشر المتكرر. وازن بين السلامة والسرعة.
الخلاصة
الترقية اليدوية هي توقف متعمد، وليست حارس بوابة يبطئ كل شيء. استخدمها حيث تكون تكلفة الخطأ أعلى من تكلفة انتظار شخص للمراجعة. بالنسبة للبيئات المبكرة، دع خط الأنابيب يعمل. بالنسبة لبيئة الإنتاج والتغييرات عالية المخاطر، دع شخصًا يقرر. أفضل خطوط الأنابيب تجمع بين الدقة الآلية والحكم البشري في اللحظات المناسبة.