서버가 사용자 가까이에 있으면 빠릅니다 — 엣지 배포는 전 세계에 서버를 두는 것입니다.

개념 정의

엣지 배포(Edge Deployment) 는 애플리케이션을 전 세계 CDN 엣지 노드에서 실행하여, 사용자와 물리적으로 가까운 서버에서 응답을 생성하는 방식입니다.

Cloudflare Pages 배포

JAVASCRIPT
// svelte.config.js
import adapter from '@sveltejs/adapter-cloudflare';

export default {
  kit: {
    adapter: adapter({
      routes: {
        include: ['/*'],
        exclude: ['<all>'],
      }
    })
  }
};
BASH
npm run build
npx wrangler pages deploy .svelte-kit/cloudflare

Vercel Edge Functions

JAVASCRIPT
// svelte.config.js
import adapter from '@sveltejs/adapter-vercel';

export default {
  kit: {
    adapter: adapter({
      runtime: 'edge',  // Edge Runtime 사용
    })
  }
};

라우트별 런타임 선택

JAVASCRIPT
// 특정 라우트만 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.jsEdge
실행 환경Node.js 런타임V8 Isolate
fs 모듈사용 가능불가
npm 패키지대부분 사용 가능Web API만 가능한 패키지
실행 시간수분까지보통 30초 제한
Cold start수초수 밀리초
메모리GB 단위128MB 내외

Cloudflare D1/KV와 연동

JAVASCRIPT
// 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 제한을 반드시 확인해야 합니다.

댓글 로딩 중...