AI Writes Code Faster Than Uber Can Merge It - Preetam Dwivedi & Manjari Akella, Uber
ํ ์ค ํต์ฌ
Uber๋ AI๋ก PR ์์ฑ ์๋๊ฐ ๊ธ์ฆํ์ merge queue๋ฅผ ๋ ๊ณต๊ฒฉ์ ์ผ๋ก ์ต์ ํํ๊ณ , ์ผ๋ถ ๊ฒ์ฆ์ post-merge๋ก ์ฎ๊ธฐ๋ ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก trunk ์์ ์ฑ๊ณผ ์ฒ๋ฆฌ๋์ ๋์์ ๋์ด์ฌ๋ ธ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:04
๋ฌธ์ ์ค์ ๊ณผ merge queue์ ๊ธฐ๋ณธ ์๋ฆฌ ๋๊ท๋ชจ monorepo์์๋ ๊ฐ๋ณ PR์ด CI์์ green์ด์ด๋ ๋ค๋ฅธ PR๊ณผ ํฉ์ณ์ง ๋ค trunk๊ฐ ๊นจ์ง ์ ์์ด, ์ฌ๋ฌ ๋ณ๊ฒฝ์ ์์์ ์กฐํฉ๊น์ง ๊ณ ๋ คํด ๋จธ์งํ๋ merge queue๊ฐ ํ์ํ๋ค. Uber๋ target analysis, probabilistic speculation, large change bypass๋ก ๋ณ๋ชฉ์ ์ค์ด๋ฉฐ trunk๋ฅผ green์ผ๋ก ์ ์งํด ์๋ค.
-
6:01
AI๋ก ์ธํ ํญ์ฆ๊ณผ ๊ธฐ์กด ๋ฐฉ์์ ํ๊ณ AI-generated change๊ฐ ๋๋ฉด์ ์์ฒญ๋์ 90๊ฑด/์๊ฐ์์ 130๊ฑด/์๊ฐ์ผ๋ก ์ฝ 44% ์ฆ๊ฐํ๊ณ , P95 land time์ 30๋ถ์์ 3~4์๊ฐ์ผ๋ก ์ ํ๋๋ค. trunk๋ ๊ณ์ green์ด์์ง๋ง, ๊ฐ๋ฐ์๋ ๋จธ์ง ๋๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ์ด ํฌ๊ฒ ๋จ์ด์ก๋ค.
-
7:01
์ฒ๋ฆฌ๋์ ๋๋ฆฌ๊ธฐ ์ํ ์ธ ๊ฐ์ง ๊ฐ์ admission gating์ผ๋ก peak hour์ expensive change๋ฅผ ์ฐจ๋จํด 20% ์ด์ throughput์ ์ฌ๋ฆฌ๊ณ , deferrals๋ก ๊ฑฐ์ ๋์ ์ฌ์๋ ๋๊ธฐ์ด์ ๋ณด๊ดํด ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ค. ์ด์ด conflict relaxation์์ Jaccard scoring์ผ๋ก ์ถฉ๋ ๊ฐ๋๋ฅผ ์ ๋ํํด ์ฝํ ๊ฐ์ ์ ์ ๊ฑฐํจ์ผ๋ก์จ ๋ณ๋ ฌ์ฑ์ ํ๋ณตํ๋ค.
-
18:01
๊ฒ์ฆ์ ๋์ค์ผ๋ก ๋ฏธ๋ฃจ๋ ๋์ ์ฌํ ๋ณด๊ฐ ์ถฉ๋ ์ํ๋ฅผ ๊ณผ๊ฐํ๊ฒ ์ ์ฉํ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ๋์ ์ต๋ 250๊ฑด/์๊ฐ ์์ค๊น์ง ๋์์ง๋ง, ์ผ๋ถ ์กฐํฉ์ ์ฌ์ ๊ฒ์ฆ๋์ง ์์ ์ฑ trunk์ ๋ค์ด๊ฐ๊ฒ ๋๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด post-merge validation ์์คํ ์ธ stowpipe๊ฐ landed commit์ ์ง์ ๊ฒ์ฆํ๊ณ , ์คํจ ์ on-call์ด revert ๋๋ fix๋ฅผ ์ํํ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์๋ค.
-
24:01
์ฑ๊ณผ์ ๋ค์ ๋จ๊ณ ์ด ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ์ผ๋ก peak ์ ์ฝ 300 lands/hour์ 30๋ถ P95 land time์ ๋ฌ์ฑํ๋ฉฐ, January ๋๋น 233% ์์ค์ ๊ฐ์ ์ ์ป์๋ค. ๋ค์ ๊ณผ์ ๋ ๊ด๋ จ ๋ณ๊ฒฝ ๋ฐฐ์น, service ๋จ์๋ก ๋ ์ธ๋ถํ๋ green ํ์ , ๊ทธ๋ฆฌ๊ณ broken trunk ๋ณต๊ตฌ ์๋ํ๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- AI๋ก ๋ณ๊ฒฝ ์์ฑ ์๋๊ฐ ๋นจ๋ผ์ง์๋ก, ๋ณ๋ชฉ์ ์ฝ๋ ์์ฑ์ด ์๋๋ผ ๋จธ์ง์ ๊ฒ์ฆ์ด๋ผ๋ ์ฌ์ค์ ์ ์ ๋ก ์ํฌํ๋ก๋ฅผ ๋ค์ ์ค๊ณํด์ผ ํ๋ค.
- ์ฒ๋ฆฌ๋์ ๋๋ฆฌ๋ ค๋ฉด ๋ชจ๋ ๋ณ๊ฒฝ์ ๋์ผํ๊ฒ ๋ค๋ฃจ๊ธฐ๋ณด๋ค, ๋น์ฉ์ด ํฐ ๋ณ๊ฒฝ๋ง ๊ณจ๋ผ ๋ ๊ฐํ๊ฒ ์ ์ดํ๋ ์ ์ฑ ์ด ํจ๊ณผ์ ์ด๋ค.
- ์ฌ์ ๊ฒ์ฆ์ ์ ๋ถ ๊ณ ์งํ๊ธฐ๋ณด๋ค ์ผ๋ถ๋ฅผ post-merge๋ก ์ฎ๊ธฐ๊ณ , ๋์ ์ฌํ ๊ฒ์ฆยท๋ณต๊ตฌ ์ฒด๊ณ๋ฅผ ์๋ํํ๋ ํ์ด๋ธ๋ฆฌ๋ ์ ๋ต์ด ํ์ค์ ์ธ ๊ท ํ์ ์ด ๋ ์ ์๋ค.