Void: Vite 네이티브 배포 프랫폼
Vite+가 로컬 개발 도구를 하나로 통합했다면, 이번에는 배포까지 먹으러 왔습니다. VoidZero가 내놓은 Void는 Vite 앱에 플러그인 하나를 추가하고 void deploy 한 방이면 데이터베이스, 인증, KV 스토리지, 큐까지 갖춘 풀스택 애플리케이션이 Cloudflare Workers 위에 올라가는 배포 플랫폼입니다.
“자바스크립트에 드디어 Rails 순간이 온 건가, 아니면 그냥 Cloudflare 종속에 리본을 달아놓은 건가?” 궁금해서 Void가 뭘 하는 건지 직접 파헤쳐봤습니다.
Vite+와 Void의 관계
먼저 용어 정리부터 해야겠습니다. VoidZero는 Vue를 만든 Evan You가 세운 회사로 Vite, Rolldown, Oxc, Vitest를 관리하고 있는데요. 이 회사에서 두 가지 제품을 내놓았습니다.
Vite+는 로컬 개발 도구를 통합한 툴체인입니다. vp라는 CLI 하나로 개발 서버, 빌드, 테스트, 린팅, 포맷팅을 전부 처리하죠. 이전 글에서 자세히 다뤘으니 여기서는 넘어가겠습니다.
Void는 배포 플랫폼이자 풀스택 프레임워크입니다. Vite 앱을 Cloudflare Workers 위에 풀스택으로 올려주는 게 핵심 역할이에요. 로컬 개발은 Vite+로, 배포는 Void로 — 이렇게 짝을 이루는 구조입니다.
Void가 제공하는 것
Void는 단순한 배포 도구가 아닙니다. 풀스택 앱을 만드는 데 필요한 백엔드 인프라를 통째로 제공해요.
- 데이터베이스 — 로컬에서는 SQLite, 프로덕션에서는 Cloudflare D1으로 매핑
- KV 스토리지 — Cloudflare Workers KV 기반의 키-값 저장소
- 오브젝트 스토리지 — 파일 업로드, 이미지 저장 등
- 인증 — 내장 auth 시스템
- 큐 — 비동기 작업 처리
- 크론 잡 — 예약 작업
- AI 추론 — Cloudflare Workers AI 연동
이 모든 걸 SDK에서 import하기만 하면 됩니다. Void 프로젝트의 전체 구조를 한눈에 보면 이렇습니다.
vite.config.ts → voidPlugin() — 어떤 Vite 앱이든 동작
import { db } → D1 데이터베이스
import { kv } → KV 네임스페이스
import { storage } → R2 버킷
import { ai } → Workers AI 또는 BYOK
import { auth } → 인증 (Better Auth 기반)
db/schema.ts → Drizzle 스키마 — DB 타입의 단일 진실 공급원
db/migrations/*.sql → 배포 시 D1에 자동 적용
crons/*.ts → 크론 잡
queues/*.ts → 큐
void deploy → https://<slug>.void.app에 배포 완료
Cloudflare 계정조차 필요 없습니다. vite.config.ts에 voidPlugin()만 추가하면 나머지는 Void가 알아서 처리해요. Drizzle ORM이 스키마 정의부터 마이그레이션, 타입 생성까지 담당하니까 데이터베이스 레이어의 타입 안전성도 자동으로 확보됩니다.
코드에서 인프라로
Void에서 가장 인상적인 부분은 자동 프로비저닝입니다. 소스 코드를 스캔해서 어떤 리소스를 사용하는지 감지하고 알아서 인프라를 구성해줘요.
void/db를 import하면 D1 데이터베이스가 프로비저닝되고, void/kv를 import하면 KV 네임스페이스가 생깁니다. 설정 파일도 없고 대시보드에서 클릭할 것도 없습니다. Infrastructure-as-Code라기보다는 Infrastructure-from-Code라고 부르는 게 맞을 것 같아요.
Cloudflare Workers를 직접 써보신 분이라면 아시겠지만 wrangler.toml에서 바인딩을 설정하고 대시보드에서 D1 데이터베이스를 만들고 KV 네임스페이스를 연결하는 과정이 꽤 번거롭거든요. Void는 이 과정을 전부 추상화합니다.
배포는 한 줄
배포도 간단합니다.
void deploy
이 명령어 하나가 빌드, 마이그레이션 실행, 리소스 프로비저닝, Cloudflare Workers 배포를 순서대로 처리합니다. Vercel에서 vercel deploy를 쓰는 것과 비슷한데 데이터베이스나 스토리지 같은 백엔드 인프라까지 한꺼번에 다뤄준다는 점이 다릅니다.
로컬 개발 환경에서는 Miniflare를 사용해 Workers 런타임을 시뮬레이션합니다. 프로덕션과 동일한 런타임에서 개발하니까 “내 컴퓨터에서는 되는데” 하는 문제가 줄어들죠.
프레임워크 지원
Void는 특정 프레임워크에 종속되지 않습니다. Vite 기반이라면 React, Vue, Svelte, Solid 뭐든 됩니다. Evan You의 회사답게 Vue는 당연히 지원하고 SvelteKit이나 SolidStart, TanStack Start 같은 메타 프레임워크와도 호환돼요.
렌더링 방식도 폭넓습니다. SSR, SSG, ISR은 기본이고 아일랜드 아키텍처와 부분 하이드레이션, 마크다운 기반 콘텐츠까지 지원하죠. 기존에 쓰던 Vite 앱에 플러그인만 추가하면 되니까 마이그레이션 비용이 낮습니다.
자바스크립트의 Rails가 될 수 있을까
솔직히 Void를 처음 봤을 때 Ruby on Rails가 떠올랐습니다. 라우팅, 데이터베이스, 인증, 배포까지 프레임워크 하나로 해결하는 그 올인원 철학이요. 자바스크립트 생태계에서 이 정도로 통합된 경험을 제대로 제공한 적이 있었나 싶을 만큼 범위가 넓어요.
하지만 걸리는 점도 있습니다.
가장 큰 건 Cloudflare 종속입니다. void/db는 Cloudflare D1이고, void/kv는 Workers KV고, 배포 타겟은 Cloudflare Workers뿐이에요. Vercel과 Next.js의 관계에서 봤던 벤더 락인(vendor lock-in) 논쟁이 여기서도 고스란히 반복될 수 있습니다. Cloudflare 인프라가 마음에 안 들면 Void에서 빠져나오는 건 쉽지 않을 겁니다.
성숙도도 신경 쓰입니다. Void는 아직 얼리 액세스 단계예요. 새벽 2시에 프로덕션이 터졌을 때 Stack Overflow에서 답을 찾을 수 있는 환경이 아니라 GitHub 이슈에 댓글이 세 개 달려있는 수준이죠. 실무에 바로 투입하기엔 리스크가 있습니다.
그래도 방향성 자체는 매력적입니다. 도구 파편화에 지친 자바스크립트 개발자들에게 “Vite+ 하나로 개발하고 Void 하나로 배포하라”는 메시지는 설득력이 있거든요. Cloudflare의 글로벌 엣지 네트워크 위에서 돌아간다는 성능상 이점도 무시하기 어렵고요.
Next.js/Vercel과의 차이
Void의 포지셔닝을 이해하려면 Next.js와 Vercel의 관계를 떠올리면 됩니다. “Void is to Cloudflare as Next.js is to Vercel”이라는 비유가 딱 맞아요.
다만 접근 방식에 차이가 있습니다. Next.js는 React 전용이지만 Void는 React, Vue, Svelte, Solid 어떤 프레임워크든 Vite 기반이면 다 받아줍니다. Next.js는 프레임워크가 먼저고 배포가 따라오는 구조인 반면 Void는 기존 Vite 앱에 배포 레이어를 얹는 방식이죠.
또 Next.js는 Vercel 외 플랫폼에서도 돌릴 수 있지만 최적화는 Vercel에서만 제대로 됩니다. Void는 아예 처음부터 Cloudflare 전용으로 설계했기 때문에 다른 플랫폼에서 돌릴 생각 자체를 안 합니다. 이걸 단점으로 볼 수도 있고 오히려 최적화에 집중할 수 있다는 장점으로 볼 수도 있습니다.
마치며
Void가 자바스크립트의 Rails가 될지는 아직 모릅니다. 하지만 VoidZero가 Vite+로 로컬 개발을, Void로 배포를, 그리고 그 사이를 Cloudflare 인프라로 채우는 그림은 꽤 야심찬 비전이에요.
얼리 액세스 단계라 지금 당장 프로덕션에 올리기엔 이르지만 Vite 생태계에서 풀스택 개발이 어떤 모습이 될지 엿볼 수 있는 프로젝트인 건 확실합니다. Cloudflare를 이미 쓰고 계시거나 새 프로젝트를 시작하려는 분이라면 void.cloud에서 얼리 액세스를 신청해보셔도 좋을 것 같습니다.
Void의 기반이 되는 로컬 개발 툴체인이 궁금하다면 Vite+로 웹 개발 도구 통합하기를, Cloudflare Workers 자체에 대해 더 알고 싶다면 Cloudflare Workers 가이드를 참고하세요. 메타 프레임워크라는 개념이 익숙하지 않다면 메타 프레임워크 소개부터 읽어보시는 것도 좋습니다.
This work is licensed under
CC BY 4.0