Vercel이 서버리스 Functions 플랫폼의 핵심 인프라를 JavaScript에서 Rust로 재작성했다. 함수와 요청 사이의 브리지 레이어를 Rust로 교체해 콜드 스타트 30% 단축, 스트리밍 연결 시간 47% 단축을 달성했다. 기존 배포에는 변경이 필요 없다.
핵심 포인트- 콜드 스타트가 소규모 워크로드에서 30% 빨라졌고, 대규모 워크로드에서는 평균 80ms·p99 500ms 단축됐다
- 스트리밍 연결 시간이 평균 21ms에서 11ms로 47% 단축, p99는 120ms에서 27ms로 77% 개선됐다
- 환경 변수 읽기, Node.js 프로세스 생성, 청크 응답 스트리밍 및 암호화, waitUntil API 등 브리지 레이어 전체를 Rust로 교체했다
- 함수 과금 시간도 함께 단축돼 동일 워크로드 대비 비용이 비례적으로 감소한다
- Next.js App Router와 스트리밍 기반 프레임워크가 특히 큰 성능 혜택을 받는다
상세 정리- 배경: 서버리스 함수의 주요 병목은 사용자 코드 이전 단계인 브리지 레이어(환경 변수 주입, 프로세스 생성, 응답 전송)에 있었다.
- Rust 선택 이유: 저수준 언어 특성을 활용한 메모리 관리와 시작 최적화에서 JavaScript 대비 구조적 이점이 있다.
- 재작성 범위: 환경 변수 읽기·첨부, Node.js 프로세스 생성, 청크 응답 스트리밍·암호화, waitUntil 같은 API 구현 등 브리지 전 영역.
- 콜드 스타트 소규모: 30% 단축. 합성 벤치마크에서 평균 150ms 단축.
- 콜드 스타트 대규모: 평균 80ms, p99 500ms 단축 — 코드 크기가 클수록 절감 효과가 크다.
- 스트리밍 개선: 연결 시간 21ms → 11ms (47%), p99 120ms → 27ms (77%). AI 스트리밍 응답 체감 속도 대폭 향상.
- 비용 영향: 과금 기준인 함수 실행 시간이 단축돼 동일 워크로드 비용이 비례적으로 감소.
- 호환성: 기존 배포 코드 변경 없이 자동 적용. Next.js App Router, 스트리밍 프레임워크가 특히 혜택을 받는다.
- 향후 계획: 이번 마이그레이션이 미래 추가 최적화를 위한 인프라 기반으로, 지속적인 성능 개선 예정.
왜 읽나Vercel에서 서버리스 함수를 운영하며 콜드 스타트와 스트리밍 성능 개선이 필요한 백엔드·인프라 엔지니어.