Vercel이 Node.js Functions의 HTTP 응답을 버퍼링에서 스트리밍으로 전환한다. 이 변경은 AI 스트리밍 응답부터 실시간 로그까지 개발 경험 전반에 영향을 미치며, 스트리밍 중 오류 발생 시 동작 방식이 버퍼링과 근본적으로 달라진다는 점을 이해해야 한다.
핵심 포인트- 스트리밍에서는 응답 헤더(상태 코드)가 먼저 전송된 뒤 오류가 발생하면 상태 코드를 500으로 바꿀 수 없다
- 기존 버퍼링에서는 함수 실행 완료 후 로그가 한 줄로 압축(4KB 제한)됐지만, 스트리밍에서는 각 로그가 개별 줄로 실시간 출력된다
- VERCEL_FORCE_NODEJS_STREAMING=true 환경변수로 즉시 스트리밍 활성화 가능
- Hobby 계정은 2024년 7월 8일, Pro/Enterprise는 10월 1일부터 기본 적용된다
- Log Drain 프로바이더는 증가된 스트리밍 빈도를 지원하도록 업데이트해야 한다
상세 정리- 변경 배경: AI 스트리밍 응답 등 실시간 데이터 전송 수요 증가로 Node.js Functions의 기본값을 스트리밍으로 전환.
- 스트리밍 vs 버퍼링 차이: 버퍼링은 함수 완료 후 전체 응답을 전송하지만, 스트리밍은 청크 단위로 즉시 클라이언트에 전달.
- 오류 처리 핵심 변화: res.writeHead(200)으로 헤더를 보낸 뒤 throw Error가 발생하면 상태 코드를 바꿀 수 없다. 클라이언트는 200 상태에 불완전한 바디를 받게 됨.
- 코드 예시: res.write로 청크를 전송하다 중간에 예외가 발생하면 이미 전송된 200 헤더는 변경 불가 — 기존 버퍼링의 500 에러 반환과 다른 동작.
- 로그 개선: 스트리밍 전환으로 각 console.log 호출이 정확한 타임스탬프와 함께 실시간 개별 줄로 출력됨. 디버깅 편의성 대폭 향상.
- Log Drain 영향: 스트리밍 빈도 증가로 Log Drain 프로바이더도 고빈도 스트림을 지원하도록 업데이트 필요.
- 조기 활성화: VERCEL_FORCE_NODEJS_STREAMING=true 환경변수로 출시 전에 미리 테스트 가능.
왜 읽나Vercel에서 Node.js Functions를 운영하는 백엔드·풀스택 엔지니어가 스트리밍 전환의 오류 처리 패턴 변화를 사전에 파악하고 준비하기 위해.