كيف يتسلل تكدس الأدوات وما الذي يسيطر عليه فعليًا
تنضم إلى فريق جديد. يستخدمون خادم CI من النوع A. الفريق في الجهة المقابلة يستخدم خادم CI من النوع B. فريق يخزن القطع الأثرية في سجل خاص به. فريق آخر يستخدم سجلًا مختلفًا تمامًا. كل فريق لديه سبب وجيه: بيئتهم التقنية مختلفة، لديهم متطلبات امتثال محددة، أو ببساطة يفضلون سير عمل أداة معينة.
في البداية، يبدو هذا جيدًا. كل فريق يُنتج كودًا. كل فريق لديه استقلالية. لا أحد يعيق الآخر.
ثم تبدأ أعمال التكامل.
الفريق A يحتاج إلى سحب قطعة أثرية من سجل الفريق B. الصيغة غير متوافقة. الفريق C يحتاج إلى الوصول إلى الأسرار التي يديرها الفريق D، لكن أدوات إدارة الأسرار لا تتواصل مع بعضها. في كل مرة يتشكل فريق جديد، يضطر أحدهم إلى اكتشاف نمط التكامل من الصفر. تتشتت التوثيقات عبر الويكي، وسلاسل محادثات سلاك، وملفات README. عندما ينتقل الأشخاص بين الفرق، تختفي معهم المعرفة حول كيفية اتصال الأشياء. يصبح تدقيق خط الأنابيب كابوسًا لعدم وجود معيار ثابت.
هذا هو تكدس الأدوات. ولا يتعلق بعدد الأدوات.
تكدس الأدوات مشكلة قرارية، وليست تقنية
يحدث تكدس الأدوات عندما يختار كل فريق أدواته بناءً على احتياجات محلية دون النظر في كيفية عمل هذه الأدوات معًا في نظام أكبر. القرار منطقي للفريق. لكنه يُحدث احتكاكًا للمؤسسة.
رد الفعل الشائع هو مركزية كل شيء. اختر خادم CI واحد. سجل قطع أثرية واحد. مدير أسرار واحد. أجبِر كل فريق على استخدامها. هذا يحل مشكلة التكامل لكنه يُحدث مشكلة جديدة: تفقد الفرق القدرة على اختيار أدوات تناسب عملهم الفعلي. يبدأون في الالتفاف حول الأدوات المفروضة. ينمو تكنولوجيا المعلومات الظلية. يجد الناس طرقًا لتجاوز النظام.
النهج الأفضل ليس إزالة الخيارات. بل هو توفير مرجع مشترك يحدد الخيارات دون إزالة المرونة. هذا المرجع يُسمى نموذج التشغيل.
ما هو نموذج التشغيل فعليًا
نموذج التشغيل هو مجموعة من القرارات التي تحدد المعايير، وأنماط التكامل، والحدود لاختيار الأدوات. ليس كتاب قواعد صارم. إنه اتفاق مشترك حول كيفية اتصال الأدوات وما هي الحدود الدنيا التي يجب أن تستوفيها.
ثلاثة أشياء تشكل نموذج تشغيل عملي:
المعايير. تغطي الأساسيات: ما هي صيغة القطع الأثرية، كيف تُمرر الأسرار بين الأدوات، ما هي البروتوكولات المستخدمة للتواصل بين الأنظمة. لا تفرض المعايير أي أداة يجب استخدامها. بل تفرض كيف يجب أن تتصرف الأدوات عندما تتفاعل مع أدوات أخرى.
أنماط التكامل. تصف تدفق البيانات والمحفزات. قد يبدو النمط النموذجي كالتالي: يتم إيداع commit في المستودع، يقرأ خادم CI الإعدادات من نفس المستودع، يُنتج البناء قطعة أثرية بصيغة محددة، تذهب القطعة الأثرية إلى سجل مخصص، وتقوم أداة النشر بسحبها من ذلك السجل. النمط هو نفسه بغض النظر عن خادم CI أو أداة النشر المستخدمة.
حدود اختيار الأدوات. تحدد أي فئات من الأدوات مسموح بها، أو على الأقل ما هي المعايير الدنيا التي يجب أن تستوفيها الأداة الجديدة قبل استخدامها. قد ينص الحد على: أي أداة CI يجب أن تدعم قراءة الإعدادات من المستودع، يجب أن تُنتج قطعًا أثرية بالصيغة المتفق عليها، ويجب أن تتكامل مع مخزن الأسرار المشترك. إذا استوفت الأداة هذه المعايير، يمكن للفرق اختيارها.
لا يحتاج نموذج التشغيل إلى أن يكون مثاليًا من اليوم الأول. يحتاج إلى أن يكون موجودًا ويتم صيانته. عندما تظهر أداة جديدة أفضل حقًا، يمكن تحديث النموذج. الهدف ليس تجميد سلسلة الأدوات. الهدف هو ضمان أن كل أداة يمكنها التحدث مع أي أداة أخرى دون عمل تكامل مخصص في كل مرة.
بوابة المطور كآلية توصيل
نموذج التشغيل على الورق هو مجرد توثيق. يصبح مفيدًا عندما يُدمج في طريقة عمل المطورين الفعلية. إحدى الطرق العملية للقيام بذلك هي من خلال بوابة المطور.
بوابة المطور ليست مجرد كتالوج للأدوات. البوابة الجيدة تتصل بمسار ذهبي: مسار قياسي ومختبر جيدًا لنقل التغييرات من الكود إلى الإنتاج. عندما يريد المطور إنشاء خط أنابيب جديد، تُظهر البوابة الخطوات التي يجب اتباعها، والأدوات المتاحة في كل خطوة، والشكل القياسي للإعدادات. لا يحتاج المطور إلى اكتشاف التكاملات من الصفر. توفر البوابة أنماطًا جاهزة للاستخدام.
كما تجعل البوابة نموذج التشغيل مرئيًا. يمكن للفرق رؤية الأدوات التي يستخدمها الآخرون. يمكنهم رؤية التكاملات المدعومة. يمكنهم رؤية المعايير التي يجب عليهم اتباعها. تقلل هذه الرؤية من فرصة أن يتبنى فريق بهدوء أداة لا تتناسب مع النموذج.
كيف تبدأ دون إفراط في الهندسة
لا تحتاج إلى وثيقة نموذج تشغيل كاملة قبل البدء. تحتاج إلى اتفاق صغير وعملي يمكنك توسيعه بمرور الوقت.
ابدأ بنقطة التكامل الأكثر إيلامًا. ربما تكون صيغة القطع الأثرية. ربما تكون إدارة الأسرار. اختر مجالًا واحدًا حيث تعاني الفرق بالفعل من الاتصال. اتفق على معيار لذلك الشيء الواحد. وثقه. اجعله مرئيًا. ثم انتقل إلى نقطة الألم التالية.
عندما يريد فريق إحضار أداة جديدة، اطرح ثلاثة أسئلة:
- هل تستوفي المعايير الحالية؟
- هل يمكنها اتباع أنماط التكامل المتفق عليها؟
- ما الذي سينكسر إذا أضفناها؟
إذا كانت الإجابات غير واضحة، فهذه إشارة إلى أن نموذج التشغيل يحتاج إلى تحديث أو أن الأداة لا تتناسب. في كلتا الحالتين، يصبح النقاش حول النموذج، وليس حول الأداة.
قائمة مراجعة سريعة لمنع تكدس الأدوات
- حدد أهم ثلاث نقاط ألم تكامل في سلسلة أدواتك الحالية
- اتفق على معيار واحد لكل نقطة ألم (صيغة، بروتوكول، أو واجهة)
- وثق المعيار في مكان يمكن لكل فريق الوصول إليه
- حدد معايير دنيا لأي أداة جديدة في كل فئة
- راجع النموذج كل ثلاثة أشهر وقم بتحديثه عندما تتغير الأدوات أو الاحتياجات
الخلاصة العملية
تكدس الأدوات لا يُحل بمنع الاختيار أو بشراء منصة تعد بتوحيد كل شيء. يُحل بجعل توقعات التكامل واضحة. نموذج التشغيل يمنح الفرق حرية ضمن حدود تحافظ على عمل النظام ككل. ابدأ بمعيار واحد، اجعله مرئيًا، ودع النموذج ينمو من نقاط الاحتكاك الحقيقية. الهدف ليس أدوات أقل. الهدف هو أدوات تعمل معًا فعليًا.