লিনিয়ার ইঞ্জিনিয়ার মুফিজ আমজাদ একটি বিশদ বিবরণ প্রকাশ করেছেন যে কীভাবে কোম্পানিটি তার ক্রমাগত ইন্টিগ্রেশন পাইপলাইনকে পুনরায় কাজ করেছে যখন AI কোডিং এজেন্টরা CI-কে তার সবচেয়ে খারাপ বাধায় পরিণত করেছে — পুল অনুরোধের অপেক্ষার সময়কে ছয় মিনিটের বেশি থেকে মাত্র পাঁচের বেশি করে কেটেছে যখন বছরের শুরু থেকে এর টেস্ট স্যুটগুলি প্রায় চারগুণ হয়েছে।

21শে সেপ্টেম্বর লিনিয়ারের ইঞ্জিনিয়ারিং ব্লগে প্রকাশিত পোস্টটি শুরু হয়েছিল, যেমন এই জিনিসগুলি প্রায়শই করা হয়, উপরে থেকে একটি টিকিট দিয়ে। এই বছরের শুরুর দিকে, আমজাদ লিনিয়ার খুলে দেখেন যে কোম্পানির CTO, Tuomas তাকে "CI খরচ বেশি" শিরোনামের একটি ইস্যু দিয়েছেন — এবং তিনি যখন এটিতে ছিলেন তখন তাকে দ্রুত CI তৈরি করতে বলেছিলেন। এই গল্পের আরও প্রসঙ্গের জন্য, আমাদের চলমান AI শিল্প কভারেজ দেখুন।

যখন এজেন্ট বৈধকরণ ছাড়িয়ে যায়

সমস্যাটি কাঠামোগত, ঘটনাগত নয়। আমজাদ লিখেছেন, "এজেন্টরা শিপ কোডের জন্য এটিকে দ্রুতগতিতে তৈরি করেছে," কিন্তু সেই পরিবর্তনগুলিকে যাচাই করা একই হারে রাখা হয়নি৷ প্রতিটি পুল অনুরোধকে এখনও CI এর মধ্য দিয়ে যেতে হবে, তাই উন্নয়ন ত্বরান্বিত হওয়ার সাথে সাথে, CI দমবন্ধ পয়েন্টে পরিণত হয় — অবকাঠামোগত খরচ বাড়ায় এবং বিকাশকারী এবং তাদের এজেন্টদের প্রতিক্রিয়ার জন্য অপেক্ষা করে।

রৈখিক দুটি মেট্রিক্সের জন্য অপ্টিমাইজ করা হয়েছে: একটি PR CI-এ কতক্ষণ অপেক্ষা করে এবং কতটা রানার সময় ব্যয় করে। কয়েক মাস কাজ করার পরে ফলাফল: জানুয়ারি থেকে টেস্ট স্যুটগুলি প্রায় চারগুণ হওয়া সত্ত্বেও, পুল অনুরোধের অপেক্ষার সময় ছয় মিনিটের বেশি থেকে কমে মাত্র পাঁচের উপরে, এবং প্রতি পরীক্ষায় রানার সময় মোটামুটি অর্ধেক কাটা হয়েছিল।

কাজটি বিস্তৃতভাবে চারটি বিভাগে পড়ে: আপগ্রেডেড অবকাঠামো এবং টুলিং, অন্য কাজগুলিকে অপ্টিমাইজ করা, বারবার সেটআপ কমানো এবং পরীক্ষা সম্পাদনকে আরও দক্ষ করে তোলা। লিনিয়ার কোডবেস প্রাথমিকভাবে টাইপস্ক্রিপ্ট, তবে অনেকগুলি অপ্টিমাইজেশান ভাষা এবং টুলচেন জুড়ে প্রযোজ্য।

দ্রুত মেশিন এবং একটি নেটিভ কম্পাইলার

প্রথম দিকের কিছু লাভের জন্য সিআই-এর নিজের অপ্টিমাইজেশনের প্রয়োজন ছিল না। দ্রুততর CPU, উচ্চ-পারফরম্যান্স স্টোরেজ, এবং উন্নত ক্যাশে পরিকাঠামো সহ তৃতীয়-পক্ষের দৌড়বিদদের কাছে GitHub অ্যাকশনগুলি থেকে কাজের চাপগুলি সরানো হল তাৎক্ষণিকভাবে পরিশোধ করা হয়েছে: সুইচের উভয় পাশের দুই দিনের তুলনায়, চাকরিগুলি গড়ে 34% দ্রুত চলে, কিছু কাজের চাপ যেমন `tsc` 5% 2% কমে গেছে।

টুলচেইনের আধুনিকীকরণ জয়কে আরও বাড়িয়ে দিয়েছে। নেটিভ টাইপস্ক্রিপ্ট কম্পাইলার, `tsgo`-তে স্যুইচ করে, টাইপচেকের সাপ্তাহিক মধ্যমাকে 73% কমিয়ে দেয় — টাইপচেকিং সম্পূর্ণভাবে বন্ধ করার জন্য যথেষ্ট বড়।

টাইপ গ্রাফ ছাড়া লিন্টিং

লিন্টিং আরেকটি প্রাথমিক লক্ষ্য ছিল। লিনিয়ারের কিছু কাস্টম ESLint নিয়ম টাইপস্ক্রিপ্ট টাইপ তথ্যের উপর নির্ভর করে, যা প্রতিটি লিন্ট রানকে তাদের মূল্যায়ন করার আগে সম্পূর্ণ টাইপ গ্রাফ তৈরি করতে বাধ্য করে — লিন্টিংকে সবচেয়ে মেমরি-নিবিড় CI কাজগুলির মধ্যে একটি করে তোলে।

দলটি বিমূর্ত সিনট্যাক্স ট্রির উপর স্থির বিশ্লেষণ ব্যবহার করার নিয়মগুলি পুনরায় লিখেছে, কোনও প্রকার তথ্য ছাড়াই ফাংশনের মতো গঠন এবং গার্ড প্যাটার্নগুলি সনাক্ত করে। এটি ESLint-কে সম্পূর্ণরূপে TypeScript ড্রপ করতে দেয়, এপিআই লিন্ট টাইম 68% এবং ফুল-রিপোজিটরি লিন্ট টাইম 55% হ্রাস করে, মেমরির ব্যবহার উল্লেখযোগ্যভাবে হ্রাস পায়। এটি অক্সলিন্টে পরবর্তী স্থানান্তরকেও সহজ করে, যা লিন্টিং-এ ব্যয় করা সিআই রানার-মিনিটকে আরও কমিয়ে দেয়।

জটিল পথ সঙ্কুচিত করা

দ্রুত স্বতন্ত্র চেক করার সাথে, লিনিয়ার জুম আউট করে এবং CI কে একটি সিস্টেম হিসাবে বিবেচনা করে। এটি অন্য সব কিছুর সামনে বসে থাকা ছোট চাকরিগুলির দিকে মনোযোগ আকর্ষণ করেছে — পথ-পরিবর্তন সনাক্তকরণ এবং পরীক্ষা-ফলাফল ক্যাশে চাকরির স্তরে সেই গেটটি পরীক্ষা করে, যার অর্থ আটটি API টেস্ট শার্ডের কোনওটিই শেষ না হওয়া পর্যন্ত শুরু হতে পারে না।

ফিক্সগুলি দানাদার কিন্তু সংযোজন ছিল। ক্যাপিং ফেচ ডেপথ 94 সেকেন্ড থেকে 20-এ সবচেয়ে ধীরগতির গেট নিয়েছিল। যে কাজগুলির জন্য কখনই কোনও কাজের গাছের প্রয়োজন হয় না সেগুলি থেকে সম্পূর্ণরূপে চেকআউট সরিয়ে দেওয়া 27 সেকেন্ড থেকে 7-এ কেটে গেছে। সীমিত ইতিহাসের সাথে একটি বিক্ষিপ্ত, ব্লব্লেস চেকআউট পুশ এবং মার্জ-কিউ ইভেন্টগুলির জন্য আরও 11-বিজোড় সেকেন্ড সংরক্ষণ করেছে। সামগ্রিকভাবে, পরিবর্তন-সনাক্তকরণ কাজের মাঝামাঝি সময়কাল 26 সেকেন্ড থেকে 8 এ, এর p90 31 থেকে 12 এ এবং এটির ধীর গতি 138 সেকেন্ড থেকে 37 এ নেমে এসেছে।

চেকআউট নির্ভরযোগ্যতার জন্যও কাজ করা দরকার: কারণ তৃতীয় পক্ষের রানাররা গিটহাবের নেটওয়ার্কের বাইরে বসে এবং একটি সরাসরি আইপি লিঙ্কের উপর নির্ভর করে, মাঝে মাঝে লিঙ্কের অবনতি মাঝে মাঝে আটকে যায়। রৈখিক `ক্রিয়া/চেকআউট` এর নিজস্ব যৌগিক ক্রিয়া দ্বারা প্রতিস্থাপিত হয়েছে যা ব্যাকঅফের সাথে পুনরায় চেষ্টা করে, `GIT_HTTP_LOW_SPEED_LIMIT` এবং `GIT_HTTP_LOW_SPEED_TIME` সেট করে তাই একটি স্থগিত সংযোগ হ্যাং করার পরিবর্তে প্রায় 30 সেকেন্ড পরে বাতিল হয়ে যায় এবং প্রতি grrit-এ একটি চেকআউট ক্যাশে ব্যবহার করে যা প্রতি grrit কে রাখে।

একটি সূক্ষ্ম সমাধান অপসারিত একত্রীকরণ-সারি সময় নষ্ট করে: ক্যাশে মার্কারগুলি একত্রিত করার আগে চূড়ান্ত চেকের অংশ হিসাবে লেখা হয়েছিল, তাই একটি পিআর তার পরীক্ষাগুলি পাস করার পরেও সারিতে বসতে পারে। সেই লেখাটিকে একটি নন-গেটিং কাজের মধ্যে সরানো প্রতিটি API পুল অনুরোধ এবং মার্জ-কিউ এন্ট্রির জন্য মার্জ পাথ থেকে 42 সেকেন্ড শেভ করে। একসাথে, এই পরিবর্তনগুলি রানার স্টার্ট হ্রাস করার সময় ক্যাশে মিসগুলিতে API PR-এর জন্য প্রয়োজনীয় চেকগুলি থেকে প্রায় এক মিনিট ছাড় নিয়েছিল।

কাজ প্রতি কম নষ্ট সেকেন্ড

শেষ বিভাগ আক্রমণ সেটআপ খরচ প্রতিটি কাজ জুড়ে পুনরাবৃত্তি. প্রতিটি এপিআই টেস্ট শার্ড 7 থেকে 8 সেকেন্ড সময় ব্যয় করে একই Postgres ক্লায়েন্ট প্রতি রানে apt সহ ইনস্টল করতে; নোডের পাশাপাশি এটিকে একটি ছোট CI বেস ইমেজে স্থানান্তরিত করার অর্থ হল শার্ডগুলি চালানোর জন্য প্রস্তুত হতে পারে। দলটি পরবর্তীতে ছবিটিতে নেটিভ বিল্ড হেডার যোগ করে আবিষ্কার করে যে সেটআপের সময় সেগুলি ডাউনলোড করা মাঝে মাঝে হ্যাং হতে পারে।

কেন এটা অনুরণিত

পোস্টটি ডেভেলপারদের মধ্যে একটি স্নায়ুকে আঘাত করেছে: এটি হ্যাকার নিউজের প্রথম পৃষ্ঠায় পৌঁছেছে, মোটামুটি 250 পয়েন্ট এবং এক দিনের মধ্যে প্রায় 280 টি মন্তব্য করেছে। প্রতিক্রিয়াটি ব্যাখ্যা করা সহজ — লিনিয়ারের অভিজ্ঞতা এআই-সহায়তা বিকাশের একটি ব্যয়ের নাম দেয় যা বেশিরভাগ প্রকৌশল সংস্থা এখন মুখোমুখি হচ্ছে। যে এজেন্টগুলি মিনিটের মধ্যে পুল অনুরোধ তৈরি করে তারা এখনও মানব ক্যাডেন্সের জন্য ডিজাইন করা বৈধতা পাইপলাইনের জন্য অপেক্ষা করে, এবং সেই অপেক্ষার প্রতিটি মিনিট সমান্তরালভাবে কাজ করা প্রতিটি এজেন্ট জুড়ে গুণিত হয়।

লিনিয়ারের পুনর্ব্যবহার থেকে শিক্ষা হল যে বাধাটি চলমান, কিন্তু শুধুমাত্র অনেকগুলি ছোট ফিক্সের অস্বাভাবিক সঞ্চয়ের মাধ্যমে — দ্রুত দৌড়বিদ, সস্তা টাইপচেক, সিনট্যাক্স-লেভেল লিন্ট নিয়ম, ক্যাপড ফেচ, স্থিতিস্থাপক চেকআউট, পূর্বনির্মাণ চিত্র — যে কোনও একক সিলভার বুলেটের পরিবর্তে।

---

এআই থেকে এগিয়ে থাকুন

সর্বশেষ AI খবর, বিশ্লেষণ এবং সাফল্য পান — সব এক জায়গায়।

আরও এআই খবর পড়ুন →