Jurutera linear Mufeez Amjad telah menerbitkan akaun terperinci tentang cara syarikat mengolah semula saluran penyepaduan berterusannya selepas ejen pengekodan AI menjadikan CI menjadi kesesakan yang paling teruk — mengurangkan masa menunggu permintaan tarik daripada lebih enam minit kepada lebih lima manakala suite ujiannya meningkat hampir empat kali ganda sejak awal tahun.
Siaran, yang diterbitkan di blog kejuruteraan Linear pada 21 September, bermula, seperti yang sering dilakukan oleh perkara ini, dengan tiket ringkas dari atas. Awal tahun ini, Amjad membuka Linear untuk mendapati bahawa Tuomas, CTO syarikat, telah memberikannya isu bertajuk "Kos CI adalah tinggi" — dan memintanya membuat CI dengan lebih pantas semasa dia melakukannya. Untuk lebih banyak konteks tentang cerita ini, lihat [liputan industri AI] kami yang berterusan (https://aibuzzwire.news).
Apabila Ejen Mendahului Pengesahan
Masalahnya adalah struktur, bukan sampingan. "Ejen telah menjadikannya lebih pantas untuk menghantar kod," Amjad menulis, "tetapi mengesahkan perubahan tersebut tidak begitu mengekalkan pada kadar yang sama." Setiap permintaan tarik masih perlu melalui CI, jadi apabila pembangunan dipercepatkan, CI menjadi titik tercekik — meningkatkan kos infrastruktur dan menyebabkan pemaju dan ejen mereka menunggu lebih lama untuk mendapatkan maklum balas.
Linear dioptimumkan untuk dua metrik: berapa lama PR menunggu pada CI dan berapa banyak masa pelari digunakan. Keputusan selepas berbulan-bulan bekerja: walaupun suite ujian hampir empat kali ganda sejak Januari, masa menunggu permintaan tarik jatuh daripada lebih enam minit kepada lebih lima, dan masa pelari bagi setiap ujian dipotong kira-kira separuh.
Kerja secara amnya terbahagi kepada empat kategori: infrastruktur dan perkakas yang dipertingkatkan, mengoptimumkan kerja yang menghalang kerja lain, mengurangkan persediaan berulang dan menjadikan pelaksanaan ujian lebih cekap. Pangkalan kod Linear terutamanya TypeScript, tetapi banyak pengoptimuman digunakan merentas bahasa dan rantai alat.
Mesin Lebih Pantas dan Penyusun Asli
Beberapa keuntungan terawal memerlukan hampir tiada pengoptimuman CI itu sendiri. Mengalihkan beban kerja daripada Tindakan GitHub kepada pelari pihak ketiga dengan CPU yang lebih pantas, storan berprestasi lebih tinggi dan infrastruktur cache yang lebih baik membuahkan hasil serta-merta: dalam perbandingan suka-suka-suka pada dua hari kedua-dua belah suis, kerja berjalan 34% lebih pantas secara purata, dengan beberapa beban kerja seperti `tsc` menurun 52%.
Memodenkan rangkaian alat menambah kemenangan. Beralih kepada `tsgo`, pengkompil TypeScript asli, mengurangkan median mingguan semakan taip sebanyak 73% — cukup besar untuk mengalihkan kesesakan daripada semakan taip sepenuhnya.
Linting Tanpa Graf Jenis
Linting adalah satu lagi sasaran awal. Sebilangan kecil peraturan ESLint tersuai Linear bergantung pada maklumat jenis TypeScript, yang memaksa setiap lint run untuk membina graf jenis penuh sebelum menilainya — menjadikan linting sebagai salah satu kerja CI yang paling intensif memori.
Pasukan itu menulis semula peraturan untuk menggunakan analisis statik ke atas pepohon sintaks abstrak, mengenal pasti binaan seperti fungsi dan corak pengawal tanpa sebarang jenis maklumat. Itu membolehkan ESLint menggugurkan TypeScript sepenuhnya, mengurangkan masa lint API sebanyak 68% dan masa lint repositori penuh sebanyak 55%, dengan penggunaan memori menurun dengan ketara. Ia juga memudahkan penghijrahan kemudian ke Oxlint, yang seterusnya mengurangkan masa pelari CI yang dibelanjakan untuk linting.
Mengecilkan Laluan Kritikal
Dengan pemeriksaan individu dengan lebih pantas, Linear mengezum keluar dan merawat CI sebagai sistem. Itu menarik perhatian kepada pekerjaan kecil yang duduk di hadapan segala-galanya — pengesanan perubahan laluan dan pemeriksaan cache hasil ujian yang pintu pada tahap kerja, bermakna tiada satu pun daripada lapan serpihan ujian API boleh bermula sehingga ia selesai.
Pembaikan adalah berbutir tetapi tambahan. Mengehadkan kedalaman pengambilan mengambil pintu paling perlahan daripada 94 saat kepada 20. Mengalih keluar pembayaran sepenuhnya daripada kerja yang tidak memerlukan pokok yang berfungsi memotongnya daripada 27 saat kepada 7. Daftar keluar yang jarang dan tidak bertompok dengan sejarah terhad menjimatkan lagi 11 saat ganjil untuk acara tolak dan gilir gabungan. Secara agregat, tempoh median kerja pengesanan perubahan turun daripada 26 saat kepada 8, p90 daripada 31 kepada 12, dan larian paling perlahan daripada 138 saat kepada 37.
Kebolehpercayaan pembayaran juga memerlukan usaha: kerana pelari pihak ketiga duduk di luar rangkaian GitHub dan bergantung pada pautan IP langsung, degradasi pautan terputus-putus kadang-kadang terbantut. Linear menggantikan `actions/checkout` dengan tindakan kompositnya sendiri yang mencuba semula dengan backoff, menetapkan `GIT_HTTP_LOW_SPEED_LIMIT` dan `GIT_HTTP_LOW_SPEED_TIME` supaya sambungan yang terhenti akan terhenti selepas kira-kira 30 saat dan bukannya tergantung, dan menggunakan cache cakera keluar yang berterusan.
Satu pembetulan halus mengalih keluar masa cantum-gilir yang terbuang: penanda cache sedang ditulis sebagai sebahagian daripada semakan terakhir sebelum digabungkan, jadi PR boleh duduk dalam baris gilir walaupun selepas ujiannya lulus. Mengalihkan tulisan itu ke dalam kerja bukan gating dicukur 42 saat dari laluan cantum untuk setiap permintaan tarik API dan kemasukan cantum-gilir. Bersama-sama, perubahan ini mengambil masa kira-kira seminit dari pemeriksaan yang diperlukan untuk API PR pada cache terlepas sambil mengurangkan permulaan pelari.
Kurang Saat Terbuang setiap Kerja
Kategori terakhir menyerang kos persediaan berulang di setiap kerja. Setiap pecahan ujian API menghabiskan 7 hingga 8 saat untuk memasang klien Postgres yang sama dengan apt pada setiap larian; mengalihkannya ke dalam imej asas CI kecil bersama Node bermakna serpihan boleh mula bersedia untuk dijalankan. Pasukan itu kemudiannya menambah pengepala binaan asli pada imej selepas mendapati bahawa memuat turunnya semasa persediaan kadangkala boleh digantung.
Mengapa Ia Bergema
Siaran itu mengejutkan pembangun: ia mencapai muka depan Berita Hacker, mencatatkan kira-kira 250 mata dan sekitar 280 komen dalam masa sehari. Reaksinya mudah dijelaskan — Pengalaman Linear menamakan kos pembangunan berbantukan AI yang hanya dihadapi oleh kebanyakan organisasi kejuruteraan. Ejen yang menjana permintaan tarik dalam beberapa minit masih menunggu pada saluran paip pengesahan yang direka untuk irama manusia, dan setiap minit penantian itu didarabkan merentas setiap ejen yang bekerja secara selari.
Pengajaran daripada kerja semula Linear ialah kesesakan itu boleh dialihkan, tetapi hanya melalui pengumpulan yang tidak menarik bagi banyak pembaikan kecil — pelari yang lebih pantas, semakan taip yang lebih murah, peraturan lin tahap sintaks, pengambilan yang dihadkan, pembayaran yang berdaya tahan, imej yang telah dibina — berbanding sebarang peluru perak tunggal.
---
Kekal Mendahului AIDapatkan berita, analisis dan penemuan terkini AI — semuanya di satu tempat.
Baca lebih banyak berita AI →