핵심 요약
Vercel Fluid Compute가 정식 GA 된 후 production 18개 함수에 적용한 6주 데이터. p50 콜드 스타트 920ms → 168ms, 함수당 비용 -34%, idle 시간 단축으로 GB-hour -41%. 단일 인스턴스가 여러 요청을 처리하는 "in-function concurrency"가 결정적.
1. Fluid Compute가 뭔가
기존 Lambda 모델은 1 인스턴스 = 1 요청. Fluid는 1 인스턴스가 동시에 N개 요청 처리. Node async I/O 특성상 I/O wait 중 다른 요청 처리 → 인스턴스 효율 4~10배. AWS Lambda Adapter와 유사하나 Vercel 통합으로 자동.
2. 실측 — 18개 함수 평균
| 지표 | 기존 Serverless | Fluid Compute |
|---|---|---|
| 콜드 스타트 p50 | 920ms | 168ms |
| 콜드 스타트 p99 | 3.1s | 540ms |
| GB-hour 사용 | 1.0x | 0.59x |
| 월 청구 | $4,820 | $3,180 |
| Time to First Byte (p75) | 820ms | 240ms |
3. 재사용을 활용하는 패턴
// HTTP client·DB pool을 모듈 스코프에 두면 인스턴스 간 공유
const db = new Pool({ connectionString: process.env.DATABASE_URL })
const httpClient = axios.create({ timeout: 5000 })
export async function POST(req: Request) {
const data = await db.query('SELECT ...') // pool 재사용
return Response.json(data)
}
기존엔 인스턴스마다 새로 만들어 매번 1초 오버헤드. Fluid는 모듈 스코프 객체가 진짜 재사용.
4. 함정
- 전역 mutable 상태 — 동시 요청이 같은 변수 만지면 race condition. global.cache 같은 패턴 금지
- 외부 connection 한도 — DB pool size를 인스턴스 수 × concurrency로 계산, Postgres max_connections 도달 가능
- 메모리 누수 — long-running 인스턴스라 큰 객체 GC 안 되면 OOM
- function-level dynamic = 'force-dynamic' 강제 시 streaming 깨짐

댓글 0