AIコーディングでCIがボトルネック化、Linearはこうして再構築した
AI coding has made CI a bottleneck, so we reworked ours to keep up
AIエージェントによるコード出荷が加速する一方、CIの検証が追いつかずボトルネックに。Linearはテストスイートがほぼ4倍になる中、PR待ち時間を6分超から5分強に短縮し、テストあたりのランナー時間を約半減。インフラ移行、型情報不要のLint、チェックアウトの再試行、セットアップの削減、シャード分散の見直しなどで、CIコストと待ち時間を大幅に削減した。
エージェントはコードを出荷する速度を指数関数的に速くしたが、それらの変更を検証する速度は同じペースで追いついていない。
HNでの議論
381- torben-friis
これがいつも抱いている疑問だ:
みんながすごい速さで進んでいるから、壁にぶつかり続けている。レビュー、CI、プロダクトからの要望、何でもだ。
なぜプロダクトの改善が見られないのか?
どの投稿やスレッドも90年代のウォール街のオフィスのように感じられる一方で、新しいAndroidとiPhoneはいつもより少ない機能で出荷されている。Linuxサイズの代替OSを思いつくインディー開発者もいない。Switch 2はまだハックされていない。Windowsは右クリックメニューを表示するのに3秒かかる。
みんなただ全速力で堂々巡りしているだけなのか?
- aliclark
私の場合、ボトルネックはCIではない。人間によるテストの側面だ。動くかどうか、それは確かだ。しかし、実際に我々が望むことをやってくれるのか(そしてもっと重要なのは)顧客が理解して実際に気に入る方法でやってくれるのか?
- dgroshev
これのかなりの部分は、役に立たないテストの雪崩だと思う。
もし今でもPRをレビューしているなら:テストをただ飛ばさなかったのは最後いつだったか?そしてLLMを多用したPRのテストを見たことがあるなら、それらのテストのうちどれだけが役に立つものをテストしていて、単にビルトインや些細な振る舞いをテストしているだけではなかったか?
業界では、LLMがビジネスロジックに大量のボイラープレートを生成することについて、少なくともある程度の認識はある。テストにおいてどれだけそれが多いかについては、はるかに認識が薄いように感じる。
- classictraffic
> ワークロードをGitHub Actionsから、より高速なCPU、高性能ストレージ、優れたキャッシュインフラを備えたサードパーティのランナーに移行することで、同じパイプラインを実行するためのより速いマシンを手に入れた
うん、これを読んで驚かなかった。ActionsはすでにGitHubを使っているなら便利だが、かなり遅くなることもある。最近はGitHubの信頼性も大きな問題になっていることを考えると、より多くの組織が別のパイプラインに移行するのを見ることになるだろう。
- algesten
Linearは長い間完成していてこれ以上機能は必要ないから、AIコーディングはゆっくりでいいんだな。おっと、次のJiraになりつつあるのか :(
- chrismatic
我々も同様の制約に遭遇した。解決策の一部は、積極的にキャッシュと並列化ができるビルドシステムを採用することだ。
我々の場合、Bazelの軽量版を書いた:https://grog.build/
- frangonf
(これより20リーグも下でGitLabの無料プランとセルフホストランナーの最適化に時間を費やしている一人バンドとしての)最大の学び:彼らは100M ARRと10億ドル超の評価額になるまで、これについて何も心配していなかった[0]。
[0] https://linear.app/now/sharing-growth-with-the-people-buildi...
- prplfsh
開発者が自分のマシンでCIをローカルに実行し、その後何らかの形で署名済みまたは認証済みのアーティファクトをプッシュする、というアプローチをやっている人はいる?
- CharlieDigital
私の見解:システムはより小さく、より分離され、コントラクト指向になるべきだと思う。
私は長年モノリスの支持者だったが、エージェントはより小さく、より分離されたサービスの方が幸せそうだ。分離されればされるほど良い。サービスコンポーネント間のコントラクトだけ。そうすれば、コントラクトを満たす限り内部で反復できる。必要ならコントラクトをバージョン管理して反復を続けられる。
- rrvsh
みんなAIボトルネックというフックに注目していて、記事の実際の内容には目を向けていない気がする。私はとても楽しんだ;密かなお気に入りは、合理的なレベルを超えてCIを最適化することだ。