लीनियर इंजीनियर मुफ़ीज़ अमजद ने एक विस्तृत विवरण प्रकाशित किया है कि एआई कोडिंग एजेंटों द्वारा सीआई को सबसे खराब बाधा में बदलने के बाद कंपनी ने अपनी निरंतर एकीकरण पाइपलाइन को कैसे फिर से तैयार किया - पुल अनुरोध प्रतीक्षा समय को छह मिनट से अधिक से घटाकर केवल पांच मिनट से अधिक कर दिया, जबकि इसके परीक्षण सूट वर्ष की शुरुआत के बाद से लगभग चौगुना हो गए।
21 सितंबर को लीनियर के इंजीनियरिंग ब्लॉग पर प्रकाशित पोस्ट, ऊपर से एक संक्षिप्त टिकट के साथ शुरू हुई, जैसा कि ये चीजें अक्सर होती हैं। इस साल की शुरुआत में, अमजद ने लीनियर खोला और पाया कि कंपनी के सीटीओ तुओमास ने उन्हें "सीआई लागत अधिक है" शीर्षक से एक मुद्दा सौंपा था - और उनसे सीआई को तेजी से बनाने के लिए कहा था जब वह इसमें थे। इस कहानी पर अधिक संदर्भ के लिए, हमारा चल रहा एआई उद्योग कवरेज देखें।
जब एजेंट सत्यापन से आगे निकल जाते हैं
समस्या संरचनात्मक है, आकस्मिक नहीं. अमजद ने लिखा, "एजेंटों ने कोड शिप करने को काफी तेज कर दिया है, लेकिन उन बदलावों को मान्य करने की गति उतनी तेज नहीं रही है।" प्रत्येक पुल अनुरोध को अभी भी सीआई से गुजरना पड़ता है, इसलिए जैसे-जैसे विकास में तेजी आती है, सीआई मुख्य बिंदु बन जाता है - बुनियादी ढांचे की लागत बढ़ जाती है और डेवलपर्स और उनके एजेंटों को प्रतिक्रिया के लिए लंबे समय तक इंतजार करना पड़ता है।
दो मेट्रिक्स के लिए रैखिक अनुकूलित: एक पीआर सीआई पर कितनी देर तक प्रतीक्षा करता है, और यह कितना धावक समय लेता है। महीनों के काम के बाद परिणाम: जनवरी के बाद से परीक्षण सूट लगभग चौगुना होने के बावजूद, पुल अनुरोध प्रतीक्षा समय छह मिनट से घटकर केवल पांच मिनट से अधिक हो गया, और प्रति परीक्षण धावक का समय लगभग आधा हो गया।
कार्य को मोटे तौर पर चार श्रेणियों में विभाजित किया गया: उन्नत बुनियादी ढांचे और टूलींग, अन्य कार्यों को गेट करने वाली नौकरियों को अनुकूलित करना, बार-बार सेटअप को कम करना, और परीक्षण निष्पादन को अधिक कुशल बनाना। लीनियर का कोडबेस मुख्य रूप से टाइपस्क्रिप्ट है, लेकिन कई अनुकूलन भाषाओं और टूलचेन पर लागू होते हैं।
तेज़ मशीनें और एक देशी कंपाइलर
शुरुआती कुछ लाभों के लिए सीआई के लगभग किसी भी अनुकूलन की आवश्यकता नहीं थी। तेज सीपीयू, उच्च-प्रदर्शन भंडारण और बेहतर कैश बुनियादी ढांचे के साथ काम के बोझ को गिटहब एक्शन से हटाकर तीसरे पक्ष के धावकों पर ले जाना तुरंत फायदेमंद साबित हुआ: स्विच के दोनों तरफ दो दिनों की समान तुलना में, नौकरियां औसतन 34% तेजी से चलीं, `tsc` जैसे कुछ कार्यभार में 52% की गिरावट आई।
टूलचेन के आधुनिकीकरण ने जीत को और बढ़ा दिया। देशी टाइपस्क्रिप्ट कंपाइलर `tsgo` पर स्विच करने से, टाइपचेक के साप्ताहिक माध्य में 73% की कटौती हुई - जो कि टाइपचेकिंग की बाधा को पूरी तरह से हटाने के लिए पर्याप्त है।
टाइप ग्राफ़ के बिना लिंटिंग
लिंटिंग एक और प्रारंभिक लक्ष्य था। लीनियर के मुट्ठी भर कस्टम ईएसलिंट नियम टाइपस्क्रिप्ट प्रकार की जानकारी पर निर्भर थे, जो प्रत्येक लिंट रन को उनका मूल्यांकन करने से पहले पूर्ण प्रकार का ग्राफ बनाने के लिए मजबूर करता था - जिससे लिंटिंग सबसे अधिक मेमोरी-गहन सीआई नौकरियों में से एक बन गई।
टीम ने अमूर्त सिंटैक्स ट्री पर स्थैतिक विश्लेषण का उपयोग करने के लिए नियमों को फिर से लिखा, बिना किसी प्रकार की जानकारी के फ़ंक्शन-जैसी संरचनाओं और गार्ड पैटर्न की पहचान की। इससे ईएसलिंट ने टाइपस्क्रिप्ट को पूरी तरह से छोड़ दिया, जिससे एपीआई लिंट समय 68% और पूर्ण-रिपॉजिटरी लिंट समय 55% कम हो गया, साथ ही मेमोरी उपयोग में काफी गिरावट आई। इससे ऑक्सलिंट में बाद के प्रवासन में भी आसानी हुई, जिससे लिंटिंग पर खर्च होने वाले सीआई रनर-मिनट में और कमी आई।
क्रिटिकल पथ को सिकोड़ना
तेजी से व्यक्तिगत जांच के साथ, लीनियर ने ज़ूम आउट किया और सीआई को एक सिस्टम के रूप में माना। इसने अन्य सभी चीजों के सामने छोटी नौकरियों की ओर ध्यान आकर्षित किया - पथ-परिवर्तन का पता लगाना और परीक्षण-परिणाम कैश उस गेट को नौकरी स्तर पर जांचता है, जिसका अर्थ है कि आठ एपीआई परीक्षण शार्डों में से कोई भी तब तक शुरू नहीं हो सकता जब तक कि वे समाप्त न हो जाएं।
सुधार बारीक लेकिन योगात्मक थे। फ़ेच डेप्थ को कैप करने से सबसे धीमा गेट 94 सेकंड से 20 तक पहुंच गया। उन नौकरियों से चेकआउट को पूरी तरह से हटाने से जिन्हें कभी भी काम करने वाले पेड़ की आवश्यकता नहीं थी, उन्हें 27 सेकंड से घटाकर 7 कर दिया गया। सीमित इतिहास के साथ एक विरल, ब्लॉबलेस चेकआउट ने पुश और मर्ज-कतार घटनाओं के लिए अतिरिक्त 11 सेकंड बचाए। कुल मिलाकर, परिवर्तन-पहचान कार्य की औसत अवधि 26 सेकंड से गिरकर 8 हो गई, इसकी पी90 31 से 12 हो गई, और इसकी सबसे धीमी गति 138 सेकंड से घटकर 37 हो गई।
चेकआउट की विश्वसनीयता पर भी काम करने की आवश्यकता है: क्योंकि तृतीय-पक्ष धावक GitHub के नेटवर्क के बाहर बैठते हैं और सीधे आईपी लिंक पर भरोसा करते हैं, रुक-रुक कर लिंक गिरावट के कारण कभी-कभी फ़ेच रुक जाता है। लीनियर ने `एक्शन/चेकआउट` को अपने स्वयं के समग्र एक्शन से बदल दिया जो बैकऑफ़ के साथ पुनः प्रयास करता है, `GIT_HTTP_LOW_SPEED_LIMIT` और `GIT_HTTP_LOW_SPEED_TIME` सेट करता है ताकि रुका हुआ कनेक्शन हैंग होने के बजाय लगभग 30 सेकंड के बाद बंद हो जाए, और एक चेकआउट कैश का उपयोग करता है जो एक चिपचिपी डिस्क पर लगातार गिट मिरर रखता है।
एक सूक्ष्म सुधार ने व्यर्थ मर्ज-कतार समय को हटा दिया: कैश मार्करों को विलय से पहले अंतिम जांच के हिस्से के रूप में लिखा जा रहा था, इसलिए एक पीआर अपने परीक्षण पास होने के बाद भी कतार में बैठ सकता था। उस लेखन को गैर-गेटिंग कार्य में ले जाने से प्रत्येक एपीआई पुल अनुरोध और मर्ज-क्यू प्रविष्टि के लिए मर्ज पथ से 42 सेकंड का समय कम हो जाता है। साथ में, इन परिवर्तनों ने रनर स्टार्ट को कम करते हुए कैश मिस पर एपीआई पीआर के लिए आवश्यक जांच से लगभग एक मिनट की छूट ले ली।
प्रति कार्य कम सेकंड बर्बाद हुए
अंतिम श्रेणी में प्रत्येक कार्य में दोहराई जाने वाली सेटअप लागत पर हमला किया गया। प्रत्येक एपीआई परीक्षण शार्ड ने प्रत्येक रन पर एपीटी के साथ समान पोस्टग्रेज क्लाइंट को स्थापित करने में 7 से 8 सेकंड का समय बिताया; इसे नोड के साथ एक छोटी सीआई बेस छवि में ले जाने का मतलब है कि शार्ड चलने के लिए तैयार हो सकते हैं। बाद में टीम ने यह पता लगाने के बाद छवि में मूल बिल्ड हेडर जोड़े कि सेटअप के दौरान उन्हें डाउनलोड करना कभी-कभी हैंग हो सकता है।
यह क्यों प्रतिध्वनित हुआ
पोस्ट ने डेवलपर्स को परेशान कर दिया: यह हैकर न्यूज़ के पहले पन्ने पर पहुंच गया, एक दिन के भीतर लगभग 250 अंक और लगभग 280 टिप्पणियाँ प्राप्त हुईं। प्रतिक्रिया को समझाना आसान है - लीनियर का अनुभव एआई-सहायता प्राप्त विकास की लागत का नाम देता है जिसका अधिकांश इंजीनियरिंग संगठन अब केवल सामना कर रहे हैं। जो एजेंट मिनटों में पुल अनुरोध उत्पन्न करते हैं वे अभी भी मानव ताल के लिए डिज़ाइन की गई सत्यापन पाइपलाइनों पर प्रतीक्षा करते हैं, और उस प्रतीक्षा के प्रत्येक मिनट को समानांतर में काम करने वाले प्रत्येक एजेंट में गुणा किया जाता है।
लीनियर के पुनर्कार्य से सबक यह है कि बाधा चल रही है, लेकिन केवल कई छोटे फिक्स के अस्वाभाविक संचय के माध्यम से - तेज धावक, सस्ता टाइपचेक, वाक्यविन्यास-स्तरीय लिंट नियम, कैप्ड फ़ेच, लचीला चेकआउट, पूर्वनिर्मित छवियां - किसी एकल सिल्वर बुलेट के बजाय।
---
एआई से आगे रहेंनवीनतम एआई समाचार, विश्लेषण और सफलताएँ प्राप्त करें - सभी एक ही स्थान पर।
अधिक AI समाचार पढ़ें →