pile·
인프라 / DevOps·vercel-blogVercel Blog·

에이전트·샌드박스·인간으로 Turborepo를 96% 빠르게 만든 방법

Turborepo 팀이 AI 에이전트와 Vercel Sandbox 기반 벤치마킹을 결합해 8일 만에 Task Graph 계산 속도를 최대 91% 향상시킨 과정을 다룬다. 1,000개 패키지 모노레포에서 "Time to First Task"가 8.1초에서 0.716초로 줄었다. 병렬화, 힙 할당 제거, syscall 축소가 핵심 전략이었다.

핵심 포인트
  • 1,000개 패키지 모노레포: 8.1s → 0.716s (91% 향상), 132 패키지: 1.9s → 0.361s (81% 향상)
  • 병렬화 4건: git index 빌드, glob 매칭, lockfile 파싱, package.json 로딩을 동시 실행
  • 스택 기반 OidHash 구조체로 힙 할당 10,000+ 제거 → new_from_gix_index 셀프타임 15% 감소
  • syscall 캐시 조회를 3에서 1로 축소 → 962회 연산에서 200.5ms → 129.6ms (35% 감소)
  • Markdown 프로파일 포맷 신설 → 에이전트가 핫 함수를 grep으로 분석 가능, 출력 품질 극적 향상
상세 정리
  • 문제: Task Graph 생성 단계가 1,000개 패키지 모노레포에서 약 10초 소요, 대형 레포에서 개발 흐름을 방해했다.
  • Phase 1 에이전트 탐색: Rust 코드베이스 다른 영역에 8개 에이전트를 병렬 배치. PR #11872(HashMap 클론 → 참조 기반 해싱, ~25%), PR #11874(twox-hash → xxhash-rust, ~6%), PR #11878(Floyd-Warshall → DFS 교체)가 유효했다.
  • 에이전트 한계: 실제 코드베이스 벤치마크 대신 마이크로벤치마크 집중, 리그레션 테스트 미생성, 프로파일링 도구 미활용이 반복됐다.
  • Phase 2 인간 주도 루프: 프로파일링 → 에이전트 제안 검토 → 구현 → 엔드투엔드 벤치마킹 → PR 순서. 4일간 20+ PR 생성.
  • Markdown 프로파일 포맷 신설: Chrome Trace JSON 대신 turborepo-profile-md 크레이트로 셀프타임 기준 핫 함수, total-time 콜트리, caller/callee를 단일행 포맷으로 출력. Bun의 --cpu-prof-md에서 착안.
  • 병렬화(4 PRs): git index, glob, lockfile, package.json 로딩의 IO 대기를 동시 실행으로 제거.
  • OidHash 할당 제거: 40바이트 SHA-1 hex를 heap String 대신 스택 [u8; 40]으로 저장 — Clone이 alloc+memcpy 대신 40바이트 memcpy가 됨. 1,000개 레포 기준 10,000+ 힙 할당 제거, 셀프타임 15% 감소.
  • syscall 축소 캐시 조회: exists() 2회 + open() 1회 = 3 syscall → open() 시도 후 NotFound 에러 처리 = 1 syscall. 962회 연산에서 200.5ms → 129.6ms.
  • git syscall 축소: 패키지별 git subprocess를 단일 repository index로 통합 → libgit2 → gix-index 순차 교체.
  • Vercel Sandbox 벤치마킹: 에피메럴 Linux 컨테이너에서 hyperfine 15회(워밍업 2회). Zig 크로스 컴파일 Linux 바이너리, 베이스 스냅샷에서 인스턴스 복제해 동일 조건 보장 — 노트북 노이즈 제거.
  • 에이전트 피드백 루프 발견: 한 곳의 비효율 패턴 수정 후 에이전트가 유사 패턴에 자발적으로 적용, 명시적 지시 없이 개선됨.
왜 읽나Rust로 개발 도구를 최적화하거나 AI 에이전트와 인간 협업 워크플로우를 설계하는 엔지니어에게 프로파일링 → 병렬화 → 할당 제거 → syscall 축소의 실전 방법론과 에이전트 활용 패턴 레퍼런스.
vercel-blog
Vercel Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 인프라 / DevOps·cloudflare-blogCloudflare Blog·

    대규모 도그푸딩: cdnjs를 Cloudflare 개발자 플랫폼으로 이전하다

    cdnjs는 하루 90억 요청을 처리하는 오픈소스 JS/CSS CDN으로, 전 세계 웹사이트의 12%가 의존한다. 2026년 6월, Cloudflare는 6년간 GCP에서 운영하던 발행 파이프라인을 Workers, Workflows, R2, KV, Queues, Containers, Durable Objects로 완전 전환했다. 성능 문제가 아닌 관측성·유지보수성 한계가 동인이었으며, 마이그레이션 과정에서 플랫폼 한도를 직접 끌어올렸다.

    #durable-objects#workflows#cloudflare-workers+2
  2. 인프라 / DevOps·github-engGitHub Engineering·

    Dependabot 길들이기: 업데이트 묶고, 주기 늦추고, 보안은 빠르게

    GitHub의 Dependabot은 의존성 업데이트를 자동화하지만, 기본 설정에서는 10개 업데이트 = 10개 PR이 쏟아져 메인테이너가 알림을 무시하게 된다. Microsoft의 GCToolkit 사례(578개 커밋 중 92개가 Dependabot 버전 범프)를 바탕으로, 그룹핑·주기 조절·보안 업데이트 분리 3가지 설정으로 노이즈를 줄이면서 보안 속도는 유지하는 방법을 다룬다.

    #github-actions#devops#supply-chain-security+2
  3. 인프라 / DevOps·cloudflare-blogCloudflare Blog·

    Cloudflare, 프라이버시 프로토콜 디버깅 CLI pvcli 오픈소스 공개

    Cloudflare가 OHTTP(Oblivious HTTP) 등 프라이버시 보존 프로토콜 디버깅을 위한 CLI 도구 pvcli를 오픈소스(Apache-2.0)로 공개했다. 기존에는 RFC를 참조하며 바이너리를 수작업으로 파싱해야 했는데, pvcli는 curl과 유사한 문법으로 이 과정을 단일 명령으로 줄인다. Apple Private Relay·Microsoft Edge Secure Network를 구동하는 실전 규모의 경험에서 나온 도구다.

    #rust#cli#ohttp+2