Edge 배포 — SvelteKit을 엣지에서 실행하기
서버가 사용자 가까이에 있으면 빠릅니다 — 엣지 배포는 전 세계에 서버를 두는 것입니다.
개념 정의
엣지 배포(Edge Deployment) 는 애플리케이션을 전 세계 CDN 엣지 노드에서 실행하여, 사용자와 물리적으로 가까운 서버에서 응답을 생성하는 방식입니다.
Cloudflare Pages 배포
// svelte.config.js
import adapter from '@sveltejs/adapter-cloudflare';
export default {
kit: {
adapter: adapter({
routes: {
include: ['/*'],
exclude: ['<all>'],
}
})
}
};
npm run build
npx wrangler pages deploy .svelte-kit/cloudflare
Vercel Edge Functions
// svelte.config.js
import adapter from '@sveltejs/adapter-vercel';
export default {
kit: {
adapter: adapter({
runtime: 'edge', // Edge Runtime 사용
})
}
};
라우트별 런타임 선택
// 특정 라우트만 Edge에서 실행
// src/routes/api/fast/+server.js
export const config = {
runtime: 'edge',
regions: ['icn1', 'hnd1'], // 서울, 도쿄
};
export async function GET() {
return new Response('엣지에서 응답!', {
headers: { 'Cache-Control': 's-maxage=60' },
});
}
Edge 환경의 제한사항
| 특성 | Node.js | Edge |
|---|---|---|
| 실행 환경 | Node.js 런타임 | V8 Isolate |
| fs 모듈 | 사용 가능 | 불가 |
| npm 패키지 | 대부분 사용 가능 | Web API만 가능한 패키지 |
| 실행 시간 | 수분까지 | 보통 30초 제한 |
| Cold start | 수초 | 수 밀리초 |
| 메모리 | GB 단위 | 128MB 내외 |
Cloudflare D1/KV와 연동
// src/routes/api/data/+server.js
export async function GET({ platform }) {
// Cloudflare KV
const value = await platform.env.MY_KV.get('key');
// Cloudflare D1 (SQLite)
const { results } = await platform.env.MY_DB
.prepare('SELECT * FROM users LIMIT 10')
.all();
return json({ value, results });
}
면접 포인트
- "엣지 배포의 장단점은?": 장점은 낮은 레이턴시, 빠른 cold start, 전 세계 분산입니다. 단점은 Node.js API 제한, 짧은 실행 시간, 제한된 메모리, 데이터베이스 접근의 복잡성입니다.
- "어떤 경우에 엣지가 적합한가요?": 정적 컨텐츠 제공, 간단한 API 프록시, A/B 테스트, 지역 기반 리다이렉트 같은 가벼운 서버 로직에 적합합니다.
정리
SvelteKit의 어댑터 시스템으로 엣지 배포가 간단해집니다. 전 세계 사용자에게 빠른 응답이 필요하면서도 서버 로직이 가벼운 경우에 엣지 배포를 고려해보세요. 단, Node.js API 제한을 반드시 확인해야 합니다.
댓글 로딩 중...