லைனியர் இன்ஜினியர் முஃபீஸ் அம்ஜத், AI குறியீட்டு முகவர்கள் CI ஐ அதன் மோசமான இடையூறாக மாற்றிய பிறகு, நிறுவனம் அதன் தொடர்ச்சியான ஒருங்கிணைப்பு பைப்லைனை எவ்வாறு மறுவேலை செய்தது என்பது பற்றிய விரிவான கணக்கை வெளியிட்டுள்ளார்.

செப்டம்பர் 21 அன்று லீனியரின் இன்ஜினியரிங் வலைப்பதிவில் வெளியிடப்பட்ட இடுகை, இந்த விஷயங்களை அடிக்கடி செய்வது போல, மேலே இருந்து ஒரு கடினமான டிக்கெட்டுடன் தொடங்கியது. இந்த ஆண்டின் தொடக்கத்தில், அம்ஜத் லீனியரைத் திறந்து, நிறுவனத்தின் CTO, Tuomas, "CI செலவுகள் அதிகம்" என்ற தலைப்பில் ஒரு சிக்கலை அவருக்கு ஒதுக்கியிருப்பதைக் கண்டறிந்தார் - மேலும் அவர் அதில் இருக்கும்போது CI ஐ வேகமாகச் செய்யும்படி கேட்டார். இந்தக் கதையைப் பற்றிய கூடுதல் சூழலுக்கு, எங்களின் தற்போதைய AI துறையின் கவரேஜ் ஐப் பார்க்கவும்.

முகவர்கள் சரிபார்ப்பை மீறும் போது

பிரச்சனை கட்டமைப்பு ரீதியானது, தற்செயலானது அல்ல. "ஏஜெண்டுகள் கப்பல் குறியீட்டை அதிவேகமாக மாற்றியுள்ளனர்," என்று அம்ஜத் எழுதினார், "ஆனால் அந்த மாற்றங்களை சரிபார்ப்பது அதே விகிதத்தில் இல்லை." ஒவ்வொரு இழுக்கும் கோரிக்கையும் இன்னும் CI வழியாகச் செல்ல வேண்டும், எனவே வளர்ச்சி துரிதப்படுத்தும்போது, ​​CI மூச்சுத் திணறலாக மாறுகிறது - உள்கட்டமைப்பு செலவுகளை அதிகரிக்கிறது மற்றும் டெவலப்பர்கள் மற்றும் அவர்களின் முகவர்கள் கருத்துக்காக நீண்ட நேரம் காத்திருக்கிறது.

இரண்டு அளவீடுகளுக்கு லீனியர் உகந்ததாக உள்ளது: ஒரு PR CI இல் எவ்வளவு நேரம் காத்திருக்கிறது மற்றும் எவ்வளவு ரன்னர் நேரத்தைப் பயன்படுத்துகிறது. பல மாத உழைப்புக்குப் பிறகு முடிவுகள்: ஜனவரியில் இருந்து சோதனைத் தொகுப்புகள் கிட்டத்தட்ட நான்கு மடங்காக அதிகரித்த போதிலும், இழுக்கக் கோரிக்கைக்கான காத்திருப்பு நேரம் ஆறு நிமிடங்களுக்கு மேல் இருந்து ஐந்திற்கு மேல் குறைந்தது, மேலும் ஒரு சோதனைக்கான ரன்னர் நேரம் தோராயமாக பாதியாகக் குறைக்கப்பட்டது.

இந்த வேலை நான்கு வகைகளாகப் பிரிக்கப்பட்டது: மேம்படுத்தப்பட்ட உள்கட்டமைப்பு மற்றும் கருவிகள், மற்ற வேலைகளுக்குத் தேவையான வேலைகளை மேம்படுத்துதல், மீண்டும் மீண்டும் அமைவதைக் குறைத்தல் மற்றும் சோதனைச் செயலாக்கத்தை மேலும் திறம்படச் செய்தன. லீனியரின் கோட்பேஸ் முதன்மையாக டைப்ஸ்கிரிப்ட் ஆகும், ஆனால் பல மேம்படுத்தல்கள் மொழிகள் மற்றும் டூல்செயின்கள் முழுவதும் பொருந்தும்.

வேகமான இயந்திரங்கள் மற்றும் ஒரு நேட்டிவ் கம்பைலர்

ஆரம்பகால ஆதாயங்கள் சிலவற்றிற்கு CI இன் மேம்படுத்தல் தேவையில்லை. வேகமான CPUகள், அதிக செயல்திறன் சேமிப்பு மற்றும் சிறந்த கேச் உள்கட்டமைப்பு ஆகியவற்றைக் கொண்ட மூன்றாம் தரப்பு ரன்னர்களுக்கு GitHub செயல்களில் இருந்து பணிச்சுமைகளை நகர்த்துவது உடனடியாகப் பலனளிக்கிறது: சுவிட்சின் இரண்டு நாட்களையும் ஒப்பிடுகையில், வேலைகள் சராசரியாக 34% வேகமாக இயங்கின, `tsc` போன்ற சில பணிச்சுமைகள் 52% குறைந்துவிட்டன.

டூல்செயினை நவீனப்படுத்துவது வெற்றியை கூட்டியது. நேட்டிவ் டைப்ஸ்கிரிப்ட் கம்பைலரான `tsgo` க்கு மாறுவது, தட்டச்சுச் சரிபார்ப்பின் வாராந்திர சராசரியை 73% குறைக்கிறது — தட்டச்சுச் சரிபார்ப்பை முழுவதுமாக நிறுத்தும் அளவுக்கு பெரியது.

வகை வரைபடம் இல்லாமல் லைண்டிங்

லின்டிங் மற்றொரு ஆரம்ப இலக்காக இருந்தது. ஒரு சில லீனியரின் தனிப்பயன் ESLint விதிகள் டைப்ஸ்கிரிப்ட் வகைத் தகவலைச் சார்ந்தது, இது ஒவ்வொரு லின்ட் ரன்களையும் மதிப்பீடு செய்வதற்கு முன் முழு வகை வரைபடத்தை உருவாக்க கட்டாயப்படுத்தியது - லின்டிங்கை மிகவும் நினைவாற்றல்-தீவிர CI வேலைகளில் ஒன்றாக மாற்றியது.

குழுவானது சுருக்கமான தொடரியல் மரத்தின் மீது நிலையான பகுப்பாய்வைப் பயன்படுத்துவதற்கான விதிகளை மீண்டும் எழுதியது, எந்த வகை தகவலும் இல்லாமல் செயல்பாடு போன்ற கட்டமைப்புகள் மற்றும் பாதுகாப்பு வடிவங்களை அடையாளம் காட்டுகிறது. இது ESLint டைப்ஸ்கிரிப்டை முழுவதுமாக கைவிட அனுமதிக்கிறது, API லின்ட் நேரத்தை 68% ஆகவும், முழு களஞ்சிய லின்ட் நேரத்தை 55% ஆகவும் குறைக்கிறது, நினைவக பயன்பாடு கணிசமாகக் குறைகிறது. இது பின்னர் ஆக்ஸ்லிண்டிற்கு இடம்பெயர்வதை எளிதாக்கியது.

நெருக்கடியான பாதையை சுருக்குகிறது

தனிப்பட்ட சோதனைகள் வேகமாக, லீனியர் பெரிதாக்கப்பட்டு CI ஐ ஒரு அமைப்பாகக் கருதுகிறது. இது மற்ற எல்லாவற்றுக்கும் முன்னால் அமர்ந்திருக்கும் சிறிய வேலைகளின் கவனத்தை ஈர்த்தது - பாதை-மாற்றம் கண்டறிதல் மற்றும் சோதனை-முடிவு கேச் காசோலைகள் வேலை மட்டத்தில் நுழைகின்றன, அதாவது எட்டு API சோதனைத் துண்டுகளில் எதுவும் அவை முடிவடையும் வரை தொடங்க முடியாது.

திருத்தங்கள் சிறுமணிகள் ஆனால் சேர்க்கையாக இருந்தன. 94 வினாடிகளில் இருந்து 20 வினாடிகளுக்கு கேப்பிங் டெப்ச் கேப்பிங் ஆனது. செக் அவுட்டை 27 வினாடிகளில் இருந்து 7 வினாடிகளில் இருந்து 7 ஆகக் குறைக்கும் வேலைகள் தேவைப்படாத வேலைகளில் இருந்து செக் அவுட்டை முழுவதுமாக அகற்றுவது. வரம்புக்குட்பட்ட வரலாறுடன் கூடிய அரிதான, ப்ளாப்லெஸ் செக் அவுட், புஷ் மற்றும் மெர்ஜ்-கியூ நிகழ்வுகளுக்கு மேலும் 11-ஒற்றைப்படை வினாடிகளைச் சேமித்தது. மொத்தத்தில், மாற்றம்-கண்டறிதல் வேலையின் சராசரி காலம் 26 வினாடிகளில் இருந்து 8 ஆகவும், அதன் p90 31 இலிருந்து 12 ஆகவும், அதன் மெதுவான ஓட்டம் 138 வினாடிகளில் இருந்து 37 ஆகவும் குறைந்தது.

செக்அவுட் நம்பகத்தன்மைக்கும் வேலை தேவை: மூன்றாம் தரப்பு ரன்னர்கள் GitHub இன் நெட்வொர்க்கிற்கு வெளியே அமர்ந்து நேரடி IP இணைப்பை நம்பியிருப்பதால், இடைப்பட்ட இணைப்புச் சிதைவு எப்போதாவது நிறுத்தப்படும். லீனியர் மாற்றியமைக்கப்பட்ட `செயல்கள்/செக் அவுட்` அதன் சொந்த கூட்டுச் செயலால் பேக்ஆஃப் மூலம் மீண்டும் முயற்சிக்கிறது, `GIT_HTTP_LOW_SPEED_LIMIT` மற்றும் `GIT_HTTP_LOW_SPEED_TIME` ஆகியவற்றை அமைக்கிறது, இதனால் ஸ்தம்பித்த இணைப்பு சுமார் 30 வினாடிகளுக்குப் பிறகு செயலிழந்துவிடும்.

ஒரு நுட்பமான திருத்தம் வீணான ஒன்றிணைப்பு-வரிசை நேரத்தை அகற்றியது: கேச் குறிப்பான்கள் ஒன்றிணைக்கும் முன் இறுதிச் சரிபார்ப்பின் ஒரு பகுதியாக எழுதப்பட்டன, எனவே ஒரு PR அதன் சோதனைகள் முடிந்த பின்னரும் வரிசையில் உட்கார முடியும். அந்த எழுத்தை கேட்டிங் அல்லாத வேலைக்கு நகர்த்துவதால், ஒவ்வொரு ஏபிஐ இழுக்கும் கோரிக்கை மற்றும் ஒன்றிணைப்பு-வரிசை நுழைவுக்கான இணைப்புப் பாதையில் இருந்து 42 வினாடிகள் ஷேவ் செய்யப்பட்டன. ஒன்றாக, இந்த மாற்றங்கள் ரன்னர் ஸ்டார்ட்களை குறைக்கும் போது கேச் மிஸ்ஸில் API PR களுக்கான தேவையான காசோலைகளை ஒரு நிமிடம் எடுத்துக் கொண்டது.

ஒரு வேலைக்கு குறைவான வினாடிகள் வீணடிக்கப்படுகின்றன

கடைசி வகை தாக்குதலுக்கு உள்ளான அமைவு செலவு ஒவ்வொரு வேலையிலும் மீண்டும் மீண்டும். ஒவ்வொரு ஏபிஐ டெஸ்ட் ஷார்டும் 7 முதல் 8 வினாடிகள் அதே போஸ்ட்கிரெஸ் கிளையண்டை ஒவ்வொரு ஓட்டத்திலும் பொருத்தமாக நிறுவுகிறது; நோட் உடன் ஒரு சிறிய CI அடிப்படை படமாக அதை நகர்த்துவதன் அர்த்தம், துகள்கள் இயங்கத் தயாராக இருக்கும். அமைப்பின் போது அவற்றைப் பதிவிறக்குவது எப்போதாவது செயலிழக்கக்கூடும் என்பதைக் கண்டறிந்த குழு பின்னர் படத்திற்கு நேட்டிவ் பில்ட் தலைப்புகளைச் சேர்த்தது.

அது ஏன் எதிரொலித்தது

இந்த இடுகை டெவலப்பர்களிடையே ஒரு நரம்பைத் தாக்கியது: இது ஹேக்கர் நியூஸின் முதல் பக்கத்தை அடைந்தது, ஒரு நாளுக்குள் தோராயமாக 250 புள்ளிகள் மற்றும் 280 கருத்துகளைப் பெற்றது. எதிர்வினை விளக்க எளிதானது - லீனியரின் அனுபவம், AI-உதவி மேம்பாட்டிற்கான செலவைக் குறிப்பிடுகிறது, பெரும்பாலான பொறியியல் நிறுவனங்கள் இப்போதுதான் எதிர்கொள்கின்றன. சில நிமிடங்களில் இழுக்கும் கோரிக்கைகளை உருவாக்கும் முகவர்கள், மனிதத் திறனுக்காக வடிவமைக்கப்பட்ட சரிபார்ப்பு பைப்லைன்களில் இன்னும் காத்திருக்கிறார்கள், மேலும் அந்த காத்திருப்பின் ஒவ்வொரு நிமிடமும் இணையாக வேலை செய்யும் ஒவ்வொரு முகவரிலும் பெருக்கப்படுகிறது.

லீனியரின் மறுவேலையில் இருந்து பாடம் என்னவென்றால், இடையூறு நகரக்கூடியது, ஆனால் பல சிறிய திருத்தங்கள் - வேகமான ஓட்டப்பந்தயங்கள், மலிவான தட்டச்சுச் சரிபார்ப்புகள், தொடரியல்-நிலை லின்ட் விதிகள், மூடிய ஃபெட்ச்கள், நெகிழ்ச்சியான செக்அவுட்கள், ப்ரீபில்ட் படங்கள் - எந்த ஒரு வெள்ளி புல்லட்டை விடவும்.

---

AIக்கு முன்னால் இருங்கள்

சமீபத்திய AI செய்திகள், பகுப்பாய்வு மற்றும் முன்னேற்றங்கள் - அனைத்தையும் ஒரே இடத்தில் பெறுங்கள்.

மேலும் AI செய்திகளைப் படிக்கவும் →