핵심 요약
SvelteKit 3.0 + Cloudflare 통합 스택(D1·Vectorize·Workers AI). 마케팅 사이트 + 사내 RAG 검색봇 6주 운영. p99 SSR 80ms, 월 비용 $42 (전체 인프라).
1. SvelteKit 3.0 핵심 변화
- Runes 5 stable — $state, $derived, $effect 정착
- Async load — page.server.ts에서 await top-level
- Form Actions — Server Action과 유사, type-safe
- Bundle -28% — Svelte 6 compiler 최적화
2. Cloudflare 통합
// +page.server.ts
import { D1, VECTORIZE, AI } from '@/server/cf'
export const load = async ({ url, platform }) => {
const q = url.searchParams.get('q')
if (!q) return { results: [] }
const embed = await platform.env.AI.run('@cf/baai/bge-large-en-v1.5', { text: q })
const matches = await platform.env.VECTOR.query(embed.data[0], { topK: 10 })
const ids = matches.matches.map(m => m.id).join(',')
const docs = await platform.env.DB.prepare(`SELECT * FROM docs WHERE id IN (${ids})`).all()
return { results: docs.results }
}
3. 성능 — 한국 사용자
| 지표 | 값 | |
|---|---|---|
| SSR p50 | 28ms | |
| SSR p99 | 80ms | |
| TTFB(한국) | 120ms | |
| Vector search p50 | 42ms |
4. 비용
- Workers AI: $14 (월 200K 검색)
- Vectorize: $8 (180MB index)
- D1: $4
- Workers 요청: $16
- Total: $42/월
5. 함정
- D1 write QPS 한도 — 분당 500 이내, 글쓰기 많은 워크로드는 부적합
- Vectorize metadata filter — 정확 매칭만, range·fuzzy 불가
- Edge runtime → Workers — adapter-cloudflare 0.6+ 필수, 일부 Node API 미지원
- Form Action — POST redirect 패턴, hydration mismatch 방지

댓글 0