लिनियर अभियंता मुफीझ अमजद यांनी AI कोडिंग एजंट्सने CI ला सर्वात वाईट अडथळे बनवल्यानंतर कंपनीने सतत एकत्रीकरण पाइपलाइन कशी पुन्हा काम केली याचे तपशीलवार वर्णन प्रकाशित केले आहे - पुल विनंती प्रतीक्षा वेळ सहा मिनिटांपेक्षा फक्त पाच पर्यंत कमी केला आहे तर वर्षाच्या सुरुवातीपासून त्याचे चाचणी सूट जवळजवळ चौपट झाले आहेत.

21 सप्टेंबर रोजी लिनियरच्या अभियांत्रिकी ब्लॉगवर प्रकाशित झालेल्या पोस्टची सुरुवात झाली, कारण या गोष्टी बऱ्याचदा केल्या जातात, वरून तिरकस तिकिटासह. या वर्षाच्या सुरुवातीस, अमजदने लिनियर उघडले की कंपनीच्या CTO, Tuomas ने त्याला "CI खर्च जास्त आहे" शीर्षकाचा मुद्दा दिला होता — आणि तो असताना CI जलद बनवण्यास सांगितले. या कथेच्या अधिक संदर्भासाठी, आमचे सध्या सुरू असलेले AI उद्योग कव्हरेज पहा.

जेव्हा एजंट प्रमाणीकरणापेक्षा पुढे जातात

समस्या संरचनात्मक आहे, आनुषंगिक नाही. अमजदने लिहिले, "एजंटांनी शिप कोडचे काम वेगाने जलद केले आहे," परंतु त्या बदलांचे प्रमाणीकरण समान दराने केले गेले नाही." प्रत्येक पुल विनंतीला अजूनही CI मधून जावे लागते, त्यामुळे जसजसा विकास गतिमान होतो, तसतसा CI हा चोक पॉइंट बनतो — पायाभूत सुविधांच्या खर्चात वाढ होते आणि विकासक आणि त्यांचे एजंट फीडबॅकची प्रतीक्षा करत असतात.

दोन मेट्रिक्ससाठी रेखीय ऑप्टिमाइझ केलेले: CI वर PR किती वेळ थांबतो आणि धावपटूचा किती वेळ लागतो. अनेक महिन्यांच्या कामानंतरचे परिणाम: जानेवारीपासून चाचणी संच जवळजवळ चौपट होत असूनही, पुल विनंती प्रतीक्षा वेळ सहा मिनिटांपेक्षा कमी होऊन फक्त पाचवर आला आणि प्रत्येक चाचणीसाठी धावणारा वेळ अंदाजे अर्ध्याने कमी झाला.

हे काम मोठया प्रमाणात चार श्रेणींमध्ये मोडते: अपग्रेडेड इन्फ्रास्ट्रक्चर आणि टूलींग, इतर कामांना गेट करणाऱ्या नोकऱ्यांना ऑप्टिमाइझ करणे, वारंवार सेटअप कमी करणे आणि चाचणी अंमलबजावणी अधिक कार्यक्षम बनवणे. लिनियरचा कोडबेस प्रामुख्याने TypeScript आहे, परंतु अनेक ऑप्टिमायझेशन भाषा आणि टूलचेनवर लागू होतात.

वेगवान मशीन्स आणि नेटिव्ह कंपाइलर

सुरुवातीच्या काही नफ्यांसाठी सीआयचे स्वतःचे जवळजवळ कोणतेही ऑप्टिमायझेशन आवश्यक नसते. वेगवान CPUs, उच्च-कार्यक्षमता स्टोरेज, आणि उत्तम कॅशे इन्फ्रास्ट्रक्चरसह तृतीय-पक्ष धावपटूंकडे GitHub क्रियांमधून वर्कलोड हलवून त्वरित पैसे दिले: स्विचच्या दोन्ही बाजूंच्या दोन दिवसांच्या तुलनेत, नोकऱ्या सरासरी 34% वेगाने धावल्या, `tsc` सारख्या काही वर्कलोडमध्ये 5% 2% घसरण झाली.

टूलचेनचे आधुनिकीकरण केल्याने विजय वाढला. मूळ TypeScript कंपायलर, `tsgo` वर स्विच केल्याने, टाइपचेकचा साप्ताहिक मध्यक ७३% ने कमी करा — टाईपचेकिंगमधील अडथळे पूर्णपणे हलवण्यासाठी पुरेसे मोठे.

प्रकार आलेखाशिवाय लिंटिंग

लिंटिंग हे आणखी एक सुरुवातीचे लक्ष्य होते. Linear चे काही सानुकूल ESLint नियम TypeScript प्रकार माहितीवर अवलंबून होते, ज्याने प्रत्येक लिंटला त्यांचे मूल्यमापन करण्यापूर्वी पूर्ण प्रकारचा आलेख तयार करण्यास भाग पाडले - लिंटिंगला सर्वात मेमरी-केंद्रित CI जॉब बनवले.

संघाने अमूर्त वाक्यरचना वृक्षावर स्थिर विश्लेषण वापरण्यासाठी नियम पुन्हा लिहिले, कोणत्याही प्रकारच्या माहितीशिवाय फंक्शन सारखी रचना आणि गार्ड पॅटर्न ओळखणे. ते ESLint ला TypeScript पूर्णपणे कमी करू देते, API लिंट वेळ 68% आणि फुल-रेपॉजिटरी लिंट वेळ 55% ने कमी करते, मेमरी वापर मोठ्या प्रमाणात कमी होतो. यामुळे ऑक्सलिंटमध्ये नंतरचे स्थलांतर देखील सुलभ झाले, ज्यामुळे लिंटिंगवर खर्च होणारे सीआय रनर-मिनिट कमी झाले.

गंभीर मार्ग संकुचित करणे

वेगवान वैयक्तिक तपासण्यांसह, लिनियर झूम आउट केले आणि CI ला एक प्रणाली म्हणून हाताळले. यामुळे इतर सर्व गोष्टींसमोर बसलेल्या छोट्या नोकऱ्यांकडे लक्ष वेधले - पथ-बदल शोधणे आणि चाचणी-परिणाम कॅशे जॉब स्तरावर ते गेट तपासते, म्हणजे आठ API चाचणी शार्ड्स पैकी कोणतेही ते पूर्ण होईपर्यंत सुरू होऊ शकत नाहीत.

फिक्स दाणेदार पण जोडणारे होते. कॅपिंग फेच डेप्थने सर्वात मंद गेट 94 सेकंदांपासून 20 पर्यंत घेतले. ज्या नोकऱ्यांना कधीही कार्यरत झाडाची गरज नाही अशा नोकऱ्यांमधून चेकआउट पूर्णपणे काढून टाकणे 27 सेकंदांवरून 7 पर्यंत कमी केले. मर्यादित इतिहासासह विरळ, ब्लॉब्लेस चेकआउटने पुश आणि मर्ज-क्यू इव्हेंटसाठी आणखी 11-विषम सेकंद वाचवले. एकंदरीत, बदल-डिटेक्शन जॉबचा मध्य कालावधी 26 सेकंदांवरून 8 वर, त्याचा p90 31 वरून 12 वर, आणि त्याची सर्वात कमी धावणे 138 सेकंदांवरून 37 पर्यंत कमी झाली.

चेकआउट विश्वासार्हतेसाठी देखील काम आवश्यक आहे: कारण तृतीय-पक्षाचे धावपटू GitHub च्या नेटवर्कच्या बाहेर बसतात आणि थेट IP लिंकवर अवलंबून असतात, अधूनमधून लिंक डिग्रेडेशन अधूनमधून थांबते. रेखीयने `क्रिया/चेकआउट` ला त्याच्या स्वत:च्या संमिश्र क्रियेने बदलले जे बॅकऑफसह पुन्हा प्रयत्न करते, `GIT_HTTP_LOW_SPEED_LIMIT` आणि `GIT_HTTP_LOW_SPEED_TIME` सेट करते त्यामुळे थांबलेले कनेक्शन सुमारे 30 सेकंदांनंतर थांबते, आणि एक चेकआउट कॅशे वापरते जे प्रति mirritk ठेवते.

एका सूक्ष्म निराकरणाने वाया गेलेला विलीनीकरण-रांगेचा वेळ काढून टाकला: विलीन होण्यापूर्वी कॅशे मार्कर अंतिम तपासणीचा भाग म्हणून लिहिले जात होते, त्यामुळे PR चाचण्या उत्तीर्ण झाल्यानंतरही रांगेत बसू शकतो. ते लेखन नॉन-गेटिंग जॉबमध्ये हलवल्याने प्रत्येक API पुल विनंती आणि मर्ज-क्यू एंट्रीसाठी विलीन मार्गापासून 42 सेकंद मुंडले जातात. एकत्रितपणे, या बदलांमुळे रनर स्टार्ट्स कमी करताना कॅशे मिस्सवर API PR साठी आवश्यक तपासण्यांमधून अंदाजे एक मिनिट लागला.

प्रति जॉब कमी वाया गेलेले सेकंद

शेवटच्या श्रेणीने प्रत्येक कामात सेटअप खर्चाची पुनरावृत्ती केली. प्रत्येक एपीआय चाचणी शार्डने प्रत्येक रनवर समान पोस्टग्रेस क्लायंट स्थापित करण्यासाठी 7 ते 8 सेकंद खर्च केले; नोडच्या बाजूने लहान सीआय बेस इमेजमध्ये हलवल्यास शार्ड्स चालण्यास तयार होऊ शकतात. सेटअप दरम्यान त्यांना डाउनलोड केल्याने अधूनमधून हँग होऊ शकते हे शोधल्यानंतर टीमने नंतर इमेजमध्ये मूळ बिल्ड हेडर जोडले.

ते का गुंजले

पोस्टने विकासकांना धक्का बसला: ते हॅकर न्यूजच्या पहिल्या पानावर पोहोचले, एका दिवसात अंदाजे 250 गुण आणि सुमारे 280 टिप्पण्या काढल्या. प्रतिक्रिया स्पष्ट करणे सोपे आहे — लिनियरच्या अनुभवात एआय-सहाय्यित विकासाच्या खर्चाची नावे आहेत ज्याचा सामना बहुतेक अभियांत्रिकी संस्था आता करत आहेत. काही मिनिटांत पुल विनंत्या तयार करणारे एजंट अजूनही मानवी कॅडन्ससाठी डिझाइन केलेल्या प्रमाणीकरण पाइपलाइनवर प्रतीक्षा करतात आणि त्या प्रतिक्षेचा प्रत्येक मिनिट समांतरपणे काम करणाऱ्या प्रत्येक एजंटमध्ये गुणाकार केला जातो.

लिनियरच्या पुनर्कामातून मिळालेला धडा हा आहे की अडथळे हलवता येण्याजोगे आहेत, परंतु कोणत्याही एका सिल्व्हर बुलेटपेक्षा - वेगवान धावपटू, स्वस्त टाइपचेक, सिंटॅक्स-लेव्हल लिंट नियम, कॅप्ड फेचेस, लवचिक चेकआउट्स, प्रीबिल्ट इमेजेस - अनेक लहान फिक्सेसच्या अप्रतिम संचयाद्वारे.

---

एआयच्या पुढे राहा

नवीनतम AI बातम्या, विश्लेषण आणि यश मिळवा — सर्व एकाच ठिकाणी.

अधिक AI बातम्या वाचा →