العودة
البرمجة بالذكاء الاصطناعي جعلت CI عنق زجاجة — كيف أعادت Linear هندسة مسارها
SiTech AI Team2 წთ. საკითხავი

البرمجة بالذكاء الاصطناعي جعلت CI عنق زجاجة — كيف أعادت Linear هندسة مسارها

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

نشرت Linear وصفًا لكيفية إعادة بناء مسار التكامل المستمر (CI) لديها بعد أن سرّعت وكلاء الذكاء الاصطناعي إصدار الشيفرة إلى حدٍّ جعل التحقق من التغييرات أبطأ مرحلة. نُشر المقال في مدونة الشركة Now في 21 سبتمبر، ويحمل توقيع موفيز أمجد (Mufeez Amjad) من فريق Linear؛ ويقول إن الأمر بدأ بمهمة أسندها إليه المدير التقني تووماس بعنوان «CI costs are high».

لماذا صار CI عنق زجاجة

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

مخطط: نمو مجموعة الاختبارات مقابل زمن الآلة لكل اختبار

بنية تحتية ولينتر أسرع

نقل أحمال العمل من GitHub Actions إلى runners خارجية بمعالجات أسرع وتخزين مؤقت أفضل سرّع المهام بنسبة 34% في المتوسط وفحص الأنواع tsc بنسبة 52%؛ وقلّص الانتقال إلى tsgo، المترجم الأصلي لـ TypeScript، الوسيط الأسبوعي لفحص الأنواع بنسبة 73%. وأُعيدت كتابة قواعد اللينت المخصّصة التي اعتمدت على معلومات الأنواع لتعمل بالتحليل الساكن على شجرة الصياغة: تخلّص ESLint من TypeScript، وانخفض زمن لينت الـ API بنسبة 68% ولينت المستودع بنسبة 55%.

المسار الحرج والتحضير المتكرر

قلّص تقييد عمق checkout زمن أبطأ بوابة من 94 ثانية إلى 20، وانخفض وسيط مهمة كشف التغييرات من 26 ثانية إلى 8. كما وفّر نقل كتابة علامة الذاكرة خارج مسار الدمج 42 ثانية لكل طلب سحب للـ API.

مسار test-api قبل وبعد: 4:57 مقابل 3:14

وقُلّص التحضير المتكرر أيضًا: قُصر تثبيت pnpm على حزمة الـ API (من 44-73 ثانية إلى 16-18)، وانخفض تحضير كل shard من 110-140 ثانية إلى 67-73. ووفّر دمج سبعة فحوص قصيرة في مهمتين نحو 87 ألف دقيقة runner شهريًا، أي 11.8% من استخدام CI، بينما جعل الانتقال من أربعة shards إلى ثمانية المهمة الحرجة أسرع وأرخص بنحو 19%.

تنفيذ الاختبارات والحصيلة

جاء أكبر مكسب منفرد من مشروع Vitest اختياري مع تعطيل العزل: توفير شهري بنحو 17%، وتراجع أبطأ shard من 300-379 ثانية إلى نحو 195، وزمن runner لـ shards الـ API من 32.8 إلى 22 دقيقة لكل تشغيل. وكان أكثر التغييرات خطرًا على الصحة، لذا الاشتراك صريح لكل ملف. وتقدّر Linear أن مجموعة الاختبارات كانت ستستغرق نحو 11 دقيقة لولا هذا العمل — أي ضعف ما ينتظره المطوّرون تقريبًا؛ ومع إضافة نحو 2000 اختبار أسبوعيًا، يستمر العمل.

SSiTech

SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي

نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.