๐Ÿ“บ ์˜์ƒ ์š”์•ฝ ์•„์นด์ด๋ธŒ
โ† ๋ชฉ๋ก

Building uReview, Uberโ€™s Multi-Agent Code Review Engine โ€” Will Bond & Ameya Ketkar, Uber

AI Engineer ยท 2026-08-28 23:30 ยท 15:07

ํ•œ ์ค„ ํ•ต์‹ฌ

Uber๋Š” ์ˆ˜์ฒœ ๋ช…์˜ ์—”์ง€๋‹ˆ์–ด์™€ ๊ธ‰์ฆํ•œ PR ๋ฆฌ๋ทฐ ๋ณ‘๋ชฉ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ํŒ€๋ณ„ ๊ทœ์น™๊ณผ ๊ด€์ธก ๊ฐ€๋Šฅ์„ฑยทํ‰๊ฐ€ยท๋น„์šฉ ์ตœ์ ํ™”๋ฅผ ๋‚ด์žฅํ•œ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ U Review๋ฅผ ์ž์ฒด ๊ตฌ์ถ•ํ–ˆ๋‹ค.

์‹œ๊ฐ„๋ณ„ ์š”์•ฝ

  1. 0:00
    2024๋…„์—” ๋ฆฌ๋ทฐ๊นŒ์ง€ 3์‹œ๊ฐ„, 2026๋…„์—” 9์‹œ๊ฐ„ Uber์˜ ์ˆ˜์ฒœ ๋ช… ์—”์ง€๋‹ˆ์–ด์™€ ์ˆ˜๋ฐฑ ๊ฐœ ํŒ€, ์—ฌ๋Ÿฌ ์–ธ์–ด๋ณ„ monorepo ํ™˜๊ฒฝ์—์„œ PR ๊ทœ๋ชจ์™€ ๋ฌผ๋Ÿ‰์ด ์ปค์ง€๋ฉฐ ์ฒซ ๋ฆฌ๋ทฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด 3์‹œ๊ฐ„์—์„œ 9์‹œ๊ฐ„์œผ๋กœ ๋Š˜์–ด๋‚ฌ๋‹ค. ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ๊ฐœ๋ฐœ ์†๋„์˜ ๋ณ‘๋ชฉ์ด ๋˜์—ˆ๊ณ , ์ž๋™ํ™”๋œ ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•ด์กŒ๋‹ค.
  2. 1:53
    ์™œ ๊ตฌ๋งค๊ฐ€ ์•„๋‹ˆ๋ผ ์ง์ ‘ ๋งŒ๋“ค์—ˆ๋Š”๊ฐ€ Fabricator์™€ GitHub๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ด์•ผ ํ–ˆ๊ณ , ์—์ด์ „ํŠธ์™€ ์‚ฌ๋žŒ์ด ๊ฐ™์€ ๊ทœ์น™๊ณผ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ด์•ผ ํ–ˆ์œผ๋ฉฐ, ํŒ€๋ณ„ ์†Œ์œ ๊ถŒ๊ณผ ์œ„ํ—˜๋„์— ๋”ฐ๋ผ ๋ฆฌ๋ทฐ ๊ฐ•๋„๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉํ•ด์•ผ ํ–ˆ๋‹ค. ๋ณด์•ˆ๊ณผ ์ปดํ”Œ๋ผ์ด์–ธ์Šค๊นŒ์ง€ ์ผ๊ด€๋˜๊ฒŒ ๊ฐ•์ œํ•˜๋ ค๋ฉด ์™ธ๋ถ€ ์ œํ’ˆ๋ณด๋‹ค ๋‚ด๋ถ€ ์‹œ์Šคํ…œ์ด ๋” ์ ํ•ฉํ–ˆ๋‹ค.
  3. 3:42
    ์•„ํ‚คํ…์ฒ˜์™€ ๋Œ“๊ธ€ ์ค‘๋ณต ์ œ๊ฑฐ GitHub, Fabricator, agent loop์—์„œ ๋“ค์–ด์˜จ ์š”์ฒญ์„ U Review service๊ฐ€ ๋ฐ›์•„ ์—ฌ๋Ÿฌ generator๋กœ ๋ถ„๊ธฐํ•˜๊ณ , ์„ฑ๋Šฅ๊ณผ ๋น„์šฉ์— ๋งž๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ดํ›„ ํ›„์ฒ˜๋ฆฌ ๋‹จ๊ณ„์—์„œ ๋Œ“๊ธ€์„ ํ‰๊ฐ€ยท๋ถ„๋ฅ˜ยทํ•„ํ„ฐ๋งยท์ค‘๋ณต ์ œ๊ฑฐํ•ด, ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ณ ์‹ ๋ขฐ ๋Œ“๊ธ€๋งŒ ์ „๋‹ฌํ•œ๋‹ค.
  4. 4:37
    ์†Œ๋ฐ•ํ•œ ์‹œ์ž‘๊ณผ ๋น„์šฉ๋งŒ ๋ณด๋˜ ์‹œ์ ˆ ์ดˆ๊ธฐ U review๋Š” ํŒŒ์ผ๋ณ„ logic check๋ฅผ ํ•˜๋Š” ๋‹จ์ผ prompt์™€ generator ์„ ํƒ์šฉ dispatcher ์ˆ˜์ค€์ด์—ˆ๊ณ , ๊ด€์ธก์„ฑ๋„ cost์™€ NPS, Google Forms, Slack ์ง€์› ์ •๋„์— ๊ทธ์ณค๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ํ’ˆ์งˆ ๋Œ€๋น„ ๋น„์šฉ์ด ํฌ๊ฒŒ ํ”๋“ค๋ ค ๋ชฉํ‘œํ–ˆ๋˜ ํšจ์œจ ๊ตฌ๊ฐ„์— ์•ˆ์ •์ ์œผ๋กœ ๋“ค์–ด๊ฐ€์ง€ ๋ชปํ–ˆ๋‹ค.
  5. 5:33
    ๊ฐ์ • ๋ถ„์„, ๋ฐ˜์˜๋ฅ , ์—์ด์ „ํŠธ ๊ถค์  ๊ฐœ๋ฐœ์ž ๋ฐ˜์‘์˜ ๊ธ์ •ยท๋ถ€์ • ๊ฐ์ •์„ ๋ถ„๋ฅ˜ํ•ด ๋ฌธ์ œ ์œ ํ˜•์„ ์ฐพ๊ณ , ์–ด๋–ค ๋Œ“๊ธ€์ด ์‹ค์ œ๋กœ ๋ฐ˜์˜๋˜๋Š”์ง€ addressal rate๋ฅผ ์ถ”์ ํ•˜๋ฉฐ ์‹œ์Šคํ…œ์„ ๊ฐœ์„ ํ–ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€ agent trajectory์™€ tool call, thinking process๋ฅผ ๊ด€์ฐฐํ•ด ๋Ÿฐํƒ€์ž„๊ณผ ์„ฑ๋Šฅ์„ ์กฐ์ •ํ•˜๊ณ , ๋‚ฎ์€ ๋น„์šฉ์œผ๋กœ ๋†’์€ ํ’ˆ์งˆ์„ ๋‹ฌ์„ฑํ–ˆ๋‹ค.
  6. 6:32
    ๋ชจ๋ธ์€ ์Šค์Šค๋กœ ํ‹€๋ ธ๋‹ค๊ณ  ์•Œ์ง€ ๋ชปํ•œ๋‹ค ๋ชจ๋ธ์€ ํ•ญ์ƒ ์ž์‹ ๊ฐ ์žˆ๊ฒŒ ๋‹ตํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ํŒ€๋ณ„ style guide, ํŒจํ„ด, anti-pattern์„ ๊ฐ•ํ•˜๊ฒŒ ์ฃผ์ž…ํ•ด์•ผ ์›ํ•˜๋Š” ๋ฆฌ๋ทฐ๊ฐ€ ๋‚˜์˜จ๋‹ค. ๋˜ํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ์‹œ๊ฐ„ ์ œ์•ฝ์ด ์žˆ๋Š” ์ž‘์—…์ด๋ฏ€๋กœ, ๋ถˆํ•„์š”ํ•œ ์‹œ๋„๋ฅผ ์ค„์ด๋„๋ก ๊ฐ€๋“œ๋ ˆ์ผ์„ ๋‘์–ด์•ผ ํ’ˆ์งˆ ์ €ํ•˜๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.
  7. 7:26
    ์ˆ˜๋ฐฑ ๊ฐœ ํŒ€์— ๋งž์ถค ๋ฆฌ๋ทฐ๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ๊ธฐ๋ณธ์ ์ธ single-fileยทmulti-file reviewer์— ๋”ํ•ด, AI linters์™€ ์ปค์Šคํ…€ agent๊นŒ์ง€ ์ œ๊ณตํ•ด ํŒ€๋ณ„ ๊ทœ์น™๊ณผ ์ง€์‹์„ ๋ฐ˜์˜ํ•œ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ownership model์— ๋งž์ถฐ ์„ค์ •์„ ์ฝ”๋“œ ๊ฐ€๊นŒ์ด์— ๋‘๊ณ , ์–ด๋–ค ํŒ€์— ์–ด๋–ค generator์™€ model์„ ๋ณด๋‚ผ์ง€ deterministic routing์„ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ, ๊ด€์ธก ๋ฐ์ดํ„ฐ๋ฅผ ํŒ€์— ๋‹ค์‹œ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค.
  8. 10:10
    ์ฃผ๋‹น 25,000๊ฐœ์˜ ๋Œ“๊ธ€์ด๋ผ๋Š” ๊ฒฐ๊ณผ U Review๋Š” ์ฃผ๋‹น ์•ฝ 25,000๊ฐœ์˜ ๋Œ“๊ธ€์„ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ์ค‘ 10%๊ฐ€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์œผ๋ฉฐ PR์˜ 4%๋งŒ ๋ถ€์ •์  ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š”๋‹ค. addressal rate๋Š” 67% ์ˆ˜์ค€์ด๊ณ  ๊ณ ์‹ฌ๊ฐ๋„ ์ด์Šˆ์˜ ๊ฑฐ์˜ 3/4์ด ๋ฐ˜์˜๋˜๋ฉฐ, naive ๊ตฌํ˜„ ๋Œ€๋น„ ๋น„์šฉ์€ 60% ๋‚ฎ๊ณ  ํ’ˆ์งˆ๊ณผ ์ •ํ™•๋„๋Š” 70% ๋†’์•„์กŒ๋‹ค.
  9. 11:08
    ๋‚ด๋ถ€ ๋ฃจํ”„์™€ ์™ธ๋ถ€ ๋ฃจํ”„ ์—์ด์ „ํŠธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋” ๋งŽ์ด ์ž‘์„ฑํ•˜๊ณ  ์ž๋™ ์Šน์ธ ๋น„์ค‘์ด ๋Š˜์–ด๋‚˜๋Š” ํ๋ฆ„ ์†์—์„œ, ๋ฆฌ๋ทฐ ์ •ํ™•๋„๋Š” ๋” ์ค‘์š”ํ•ด์ง€๊ณ  ๋‚ฎ์€ ํ’ˆ์งˆ์˜ ๋Œ“๊ธ€์€ ์—์ด์ „ํŠธ์˜ ์ˆ˜์ • ๋ฐ˜๋ณต์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ๊ฐ„ ํ”ผ๋“œ๋ฐฑ์ด ์‹œ์Šคํ…œ ํŠœ๋‹์˜ ํ•ต์‹ฌ์ด์—ˆ๋˜ ๋งŒํผ, ์‚ฌ๋žŒ์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ธฐ๋ณด๋‹ค ์—ญํ• ์„ ํ•œ ๋‹จ๊ณ„ ์œ„๋กœ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉํ–ฅ์ด ์ค‘์š”ํ•˜๋‹ค.
  10. 13:57
    ์™ธ๋ถ€ ๋ฃจํ”„๋ฅผ ์—†์• ์ง€ ๋ง๊ณ  ํ™•์žฅํ•˜๊ธฐ ์—”์ง€๋‹ˆ์–ด๋Š” ๊ตฌํ˜„ ๋””ํ…Œ์ผ๋ณด๋‹ค๋Š” ์•„ํ‚คํ…์ฒ˜, ๋„๋ฉ”์ธ ์ „๋ฌธ์„ฑ, ์ œํ’ˆ ์‚ฌ๊ณ ์— ๋” ์ง‘์ค‘ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ, ์—์ด์ „ํŠธ๋Š” ์ž‘์„ฑ๊ณผ 1์ฐจ ๋ฆฌ๋ทฐ๋ฅผ ๋” ์ž˜ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋Š” ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ธ๊ฐ„์ด ๋” ๋†’์€ ์ˆ˜์ค€์—์„œ ์‹œ์Šคํ…œ์„ ์ด๋„๋Š” ์ƒˆ๋กœ์šด ์™ธ๋ถ€ ๋ฃจํ”„๋กœ ํ™•์žฅ๋œ๋‹ค.

์‹ค๋ฌด ์ธ์‚ฌ์ดํŠธ

  • ๋Œ€๊ทœ๋ชจ ์กฐ์ง์˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ž๋™ํ™”๋Š” ๋ชจ๋ธ ์„ฑ๋Šฅ๋ณด๋‹ค ํŒ€๋ณ„ ์†Œ์œ ๊ถŒยท๊ทœ์น™ ๋ฐฐํฌยท๊ด€์ธก์„ฑ๊นŒ์ง€ ํฌํ•จํ•œ ์šด์˜ ์„ค๊ณ„๊ฐ€ ์„ฑํŒจ๋ฅผ ์ขŒ์šฐํ•œ๋‹ค.
  • ๋Œ“๊ธ€ ์ƒ์„ฑ๋Ÿ‰๋ณด๋‹ค ์‹ค์ œ ๋ฐ˜์˜๋ฅ ๊ณผ ๊ณ ์‹ฌ๊ฐ๋„ ์ด์Šˆ ํ•ด๊ฒฐ๋ฅ ์„ ํ•ต์‹ฌ ์ง€ํ‘œ๋กœ ๋‘๋ฉด, ๋ฆฌ๋ทฐ ํ’ˆ์งˆ์ด ์‹ค๋ฌด ๊ฐ€์น˜๋กœ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ์—์ด์ „ํŠธ ๋„์ž… ์ดํ›„์—๋„ ์ธ๊ฐ„ ๋ฆฌ๋ทฐ๋Š” ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ณ , ์•„ํ‚คํ…์ฒ˜์™€ ์ œํ’ˆ ํŒ๋‹จ์„ ๋งก๋Š” ์ƒ์œ„ ๋ฃจํ”„๋กœ ์žฌ์ •์˜ํ•˜๋Š” ํŽธ์ด ํ˜„์‹ค์ ์ด๋‹ค.